
What is Low-Code | Low-Code Guide
What is low-code, why is it so popular, and when should you use it? Those are just a few questions you'll see answered in this Low-Code Development Guide.
高速アプリケーション開発はアジャイルソフトウェア開発の手法のひとつです。継続的なソフトウェアプロジェクトとユーザーフィードバックを重視し、厳密な計画に従うことにはあまり重きを置きません。計画にコストをかけるのではなく、ラピッドプロトタイピングに重点を置きます。
具体的なモデルだと誤解されがちですが、高速アプリケーション開発(RAD)は、ソフトウェアプロジェクトの開発をこれまでどおりの鉄加工方式ではなく、粘土細工のように行うという考え方です。
RADプログラミングはどのようにして誕生したのでしょう。
1980年代、Barry Boehm氏やJames Martin氏らは、ソフトウェアが未加工の金属ではないという当たり前の事実に気づきました。無限に変化させられるものだと理解したのです。Boehm氏とMartin氏は、ソフトウェア本来の柔軟性を活かす、スパイラルモデルとJames Martin RADモデルという開発モデルを設計しました。それからというもの、高速アプリ開発は他の形態へと進化を続け、アジャイルの先駆けとなったのです。
RADでは、何か月もかけてユーザーと仕様を固めるのではなく、最初は要件を緩く定義します。「緩く」と表現したのは、高速アプリケーション開発ではサイクル中いつでも要件を変更できるという基本方針があるためです。
基本的に、開発者は製品の「骨子」を収集します。顧客は製品のビジョンを示し、そのビジョンを満たす要件を開発者と取り決めます。
高速アプリケーション開発のこの段階における開発者の目標は、顧客にデモとして見せられるものを作成することです。たとえば要件の全部または一部のみを満たすプロトタイプなどです(初期段階のプロトタイプ作成)。
動作可能な状態にするためには細部を端折ってもかまいません。通常、RADプログラミング手法では完成段階があり、初期のプロトタイプで生じた技術的負債はそこで解消することになります。
準備した最新のプロトタイプを、RAD開発者が顧客またはエンドユーザーに見せます。そして、インターフェイスや機能に関するあらゆるフィードバックを収集します。この段階で、必要であれば製品要件を精査します。
顧客の考えが変わる場合や、机上では適切に思えた内容がプロトタイプにするとおかしいとわかる場合があるからです。顧客も人間なので、これは仕方ありません。フィードバックがそろったら、ステップ2の段階に戻ってプロトタイプの作成を続けます。フィードバックがすべて肯定的なもので、顧客もプロトタイプに満足している場合は、ステップ4に進みます。
この段階では実装の最適化や再設計を行い、安定性や保守性を高めていきます。本番データとバックエンドとの接続、ドキュメントの作成、本番への確実な移行を実現するために必要なその他の保守タスクを行うこともあります。
Boehm氏のスパイラルモデルとMartin氏のRADモデルのいずれにおいても、これら4つのステップに従うことで開発チームはリスクを低減し、優れた製品を開発することができます。ただし、高速アプリ開発には欠点もあります。
RADのメリットについてはすでにいくつか説明しましたが、改めて掘り下げて見ていきます。
メリット | 説明 |
スピード | 従来のウォーターフォール型のアプローチでは、製品のデリバリー後も開発者が休暇を取れないということがよくありました。初回デリバリー後は、顧客からインターフェイスや機能など様々な変更のリクエストが舞い込むからです。RADでは、プロジェクトがスケジュールどおりに完了し、デリバリー段階で顧客が満足することが多くなります。 |
コスト | 高速アプリケーション開発では、顧客が望むシステムを過不足なく作成できます。ウォーターフォールでは、IT部門がせっかく開発・実装した複雑な機能を、顧客が最終製品から外すというリスクがあります。無駄な機能の開発に費やした時間が返ってくることはなく、つぎ込んだ予算も水の泡になってしまいます。RADプログラミングではこうしたリスクが減るため、コストを削減できます。 |
開発者の満足度 | 従来のウォーターフォール型アプローチでは、開発者は製品に関するフィードバックや賞賛を受け取ることなく、孤立した状態で作業をしていました。やっと成果物を顧客に提示する段になっても、それが晴れの舞台になるとは限りません。どれほど自信の持てる成果物だったとしても、顧客がそれに満足しなければ、開発者が望んだ喜びの声を聞くことはできないのです。高速開発環境では、常に顧客との距離が近く、成果物を提示する機会も頻繁にあります。そのため、最終製品のデリバリー時に成果物が称賛をもって受け入れられるという確信のもとで開発者が作業を進められます。 |
もちろん、高速アプリケーション開発もバラ色のメリットばかりというわけではありません。では、この流れに冷や水を浴びせるようなデメリットをご紹介しましょう。
デメリット | 説明 |
拡張性 | 開発者、デザイナー、プロダクトマネージャーが緊密に連携するチーム1つでプロジェクトに取り組む場合、全員が直接やりとりできるため、RADプラクティスを容易に取り入れることができます。しかし、プロジェクトが複数のチームに拡大したり、チーム間のコミュニケーションが必要になったりすると、どうしても開発サイクルが低下したり、プロジェクトの方向性が定まらなくなったりしてしまいます。要は、内容が絶えず変わる中で大人数の意識を統一しておくことは難しいということです。 |
コミットメント | ウォーターフォールでは、仕様が確定した後に顧客と開発チームが関わることはほとんどありません。そのため、顧客は本来のタスクに、開発者は開発に集中することができます高速アプリケーション環境では、プロトタイプの作成を頻繁に繰り返すため、開発者と顧客で頻繁にミーティングを行う必要があります。最初はそれが無駄な繰り返しのように思えるかもしれません。 |
インターフェイス重視 | 高速アプリケーション開発手法では、開発者は顧客に最適なソリューションを熱心に探します。顧客は、直接操作できるうわべの部分だけでソリューションの品質を判断しがちです。そのため、開発者によっては、フロントエンドを重視したプロトタイプの開発を速く進めるためにバックエンドのベストプラクティスを軽視してしまう場合があります。こうしたケースでは、動作可能な製品をデリバリーするときに、リファクタリングを避けるために慌てて応急的なサーバーコードを継ぎはぎするはめになります。 |
これで、RADプログラミングのメリットとデメリットがわかりました。では、高速アプリ開発手法でメリットを得やすいプロジェクトタイプを考察していきましょう。
社内ビジネスツール、またはアプリやWebサイトなどの顧客向けポータルを作成する場合は、高速アプリ開発手法でエンドユーザーエクスペリエンスを向上させることができます。 しかし、基幹ソフトウェア(航空管制システム、植え込み型ファームウェアなど)を開発する場合にRAD手法を採用するのは、不適切なだけでなく無責任だといえます。制御モジュールの故障を体験したパイロットや、ペースメーカーの誤動作に悩まされた心不全患者が、あの世からプロトタイプのフィードバックを提供することはできないからです。
プロジェクトで高速開発環境を選択する際には、前もって次のような点を確認しましょう。
製品がエンドユーザーのセキュリティや生命に関わる場合、エラーはほぼ許容されません。高速開発環境を利用できるのは、エラーの試行錯誤が許される場合のみです。
誰にも悪影響を及ぼすことなく製品のシミュレーションを行うことができる場合は例外ですが、エンドユーザーへの公開前にプロジェクトを完璧に仕上げる必要がある場合、そもそも高速アプリ開発は選択肢から外すべきです。
この記事で説明してきたとおり、高速アプリケーション開発には、エンドユーザーの協力が欠かせません。積極的なフィードバックの提供やユーザーテストへの参加などが求められます。
顧客も、進行中の高速アプリケーション開発プロセスのイテレーションでは頻繁にフィードバックを提供する必要があります。
高速開発環境では、ユーザーフローが不完全だったり不足したりしているプロトタイプを、早い段階で頻繁にエンドユーザーに公開する必要があります。そのため、プロジェクトを分割し、製品全体ではなく一部(またはモジュール)を開発して提示することが求められます。モダナイゼーションの障壁となることが多いのが、ビジネスユースケースをエンドユーザーに提供する前に行う、バックエンドでの複数のサードパーティとの連携です。
この問題は、エンドユーザーが想定するデータセットに似た模擬データを生成するデータ合成プロセスを利用することで回避できます。これにより、事前にコネクタを作成するという手間を増やさず、プロトタイプで動作をモデル化することができます
最後は当たり前のような質問になりますが、RADプログラミングに見合うペースでイテレーションを行うことができるかどうかを自問しましょう。もちろん、従来のソフトウェア開発手法で生成したコードが変更不可能というわけではありませんが、変更に相当の労力を伴う「骨組み」部分があることは確かです。プロジェクトの骨組みとなる必要最小限のコード、つまりボイラープレートを作成する労力もゼロではありません。大きな労力が必要になる場合も多いのです。
アプリケーションの中核を構築したり、不適切な前提を途中で修正したりすることで、どうしても実用プロトタイプのデリバリーに費やせる時間やエネルギーが削られてしまいます。また、開発チームだけでなく、設計チームと製品チームにもアイディエーションとアシミレーション(顧客やエンドユーザーからのフィードバックの処理)とのコンテキストの切り替えを前向きに、かつ迅速に行うことが求められます。
このプラクティスがすべてのチームに浸透するとは限りませんが、少なくとも学んだり、便利なツールを活用したりすることはできます。チームが迅速にイテレーションを行うことができない場合や、その実現に役立つツールに予算をかけられない場合、RAD開発は選択肢としてふさわしくないかもしれません。
開発手法について調べる際は、フレームワーク同士を比較するのが通例です。高速アプリケーション開発はアジャイルソフトウェア開発と直接比較されがちです。
しかし、この二つを比べるのは難題といえます。確かにRADはアジャイルの前身ですが、アジャイルは「開発モデル」の概念を大きく超えます。手法というよりは、哲学というべきものなのです。 このことが伝わるよう、各コンセプトの基本原則を比較してみました。
おわかりいただけたかと思いますが、高速アプリケーション開発は特定の言語、ツール、インターフェイスというよりは、むしろソフトウェア開発手法です。しかし、高速なプロトタイプ作成、開発、フィードバック収集の推進にはツールが役立ちます。
このカテゴリの製品を利用すると、インタラクティブな設計を非常に迅速に行えるようになります。また、リストに掲載されているWebflowなど一部のツールでは、デザイナーが設計全体をブラウザに依存せず動作するプロトタイプとしてエクスポートすることができます。
ツール | プロトタイプ | 動作環境 |
Adobe Experience Design | Web、モバイル | macOS、Windows |
Balsamiq | Web、モバイル | macOS、Windows |
InVision | Web、モバイル、ウェアラブル | macOS |
JustInMind | Web、モバイル、ウェアラブル | macOS、Windows |
Mockplus | Web、モバイル | macOS、Windows |
Origami Studio | モバイル | macOS |
Proto.io | Web、モバイル、ウェアラブル | Web |
Sketch | Web、モバイル | macOS |
Webflow | Web、モバイル | Web |
ここまで何度も説明したとおり、RAD手法では顧客やエンドユーザーからの頻繁なフィードバックが必要です。また、最近の業態として、オフサイトで働く開発者は顧客からのインプットが必要になるたびに泊まりがけの出張をするのではなく、リモートでフィードバックをもらいたいと考えています。
ツール | プロトタイプ | 動作環境 |
Conjure | Web | クライアント |
InVision | Web、モバイル | クライアント |
Red Pen | Web、モバイル | クライアント |
Usability Sciences | Web、モバイル | エンドユーザー |
Userbrain | Web | エンドユーザー |
UserTesting | Web、モバイル | エンドユーザー |
Validately | Web、デスクトップ、モバイル | エンドユーザー |
チームのテクノロジー要件が厳格である場合やスキルが限られている場合、今の手法を貫くほうが簡単です。テクノロジーの移行コストを正当化できない場合が多いからです。しかし、新しい開発アプローチを積極的に検討しようとするのであれば、このカテゴリのツールが生産サイクルの加速に役立ちます。
ツール | ビルド |
Alpha Software | Windows、Web、モバイル |
AppGyver | モバイル |
Appian | Web、モバイル |
Kony | Web、モバイル |
Zoho Creator | Web |
Mendix | Web、モバイル |
OutSystems | Web、モバイル |
Salesforce AppCloud | Web、モバイル |
Spring | モバイル |
Visual LANSA | Windows、Web、モバイル |
WaveMaker | Web、モバイル |
おわかりいただけたかと思いますが、高速アプリケーション開発は特定の言語、ツール、インターフェイスというよりは、むしろソフトウェア開発手法です。しかし、高速なプロトタイプ作成、開発、フィードバック収集の推進にはツールが役立ちます。
OutSystemsは、AIによって強化された最先端のローコードアプリケーションプラットフォームです。高速アプリケーション環境だけでなく、ホスティング、動的な拡張、リリースの自動化、パフォーマンス監視、ユーザー管理、バージョン管理など多くのことを実現できます。その最たるものが強力な開発環境です。
OutSystemsプラットフォームは、複雑な作業を自動化・簡素化する高生産性ツールと従来の開発手法のパワーや表現力を組み合わせることで、ITに近い役割を担う人員がベテランのITプロフェッショナルのようにエンタープライズレベルのWebアプリケーションやモバイルアプリケーションを高速に作成することを可能にします。
オンラインデモを予約するか、OutSystemsの無償版をお試しください。