「改善すること」が前提の開発手法
アジャイル(Agile)開発の概念は2001年に、米国のソフトウェアエンジニアであるケント・ベックらがまとめた「アジャイルソフトウェア開発宣言(Manifesto for Agile Software Development)」で定義されました。宣言の中で、よりよい開発方法の価値は以下の4つにあると述べられています。
・(プロセスやツールよりも)個人と対話
・(包括的なドキュメントよりも)動くソフトウェア
・(契約交渉よりも)顧客との協調
・(計画に従うことよりも)変化への対応
アジャイル開発は顧客のニーズに応えながら、より効率的により素早くプロダクトを開発することを目的として考えられた手法です。その根本には「対話」という現場重視の考え方があり、とくに重視されるのは「変化への対応」。開発途中の成果からフィードバックを得て、仕様の変更や追加に対応するなど、「改善」を繰り返すことが前提です。
従来のシステムやソフトウェアの開発は、事前に機能や仕様を決めて開発に着手する「ウォーターフォールモデル(Waterfall)」が主流でした。スケジュールが立てやすく、予算や人員確保がしやすい反面、開発途中での仕様変更は難しく、進行計画に余裕を持たせるため完成までに時間がかかります。アジャイル開発は「Agile(素早い)」の名称どおり、開発スピードは早く、仕様変更やトラブルへの対応は迅速です。アジャイル開発の臨機応変なアプローチは、DXの求める「状況に応じて柔軟かつ迅速に対応していく」という理念により即していると言えるでしょう。
アジャイル開発の進め方と3つの手法
アジャイル開発は計画段階では綿密な仕様を決めません。プロジェクトを進めながら、設計や仕様の変更をすることが前提なので、まず大まかなリリース計画を立てます。達成したいゴールを明確に決めて、全体のスケジュールを作成。「計画→開発→実装→テスト」という工程を1週間から4週間程度の短いサイクルで繰り返し、少しずつプロダクトを完成形に近づけていきます。この小さな単位の開発はイテレーション(iteration、くり返すこと)やスプリント(sprint、短距離走)と呼ばれます。
アジャイル開発には、主に3つの手法があります。
スクラム
チーム間のコミュニケーションを重視し、ラグビーでスクラムを組むように、チーム全員が協力して開発を進める手法。チームで効率的に開発を進めるためのフレームワークです。最大10人までの「スクラムチーム」で構成され、メンバー自身が計画を立案し、計画と実装を反復的に繰り返し、イテレーションごとに開発の問題点を精査します。
スクラムチームのメンバーには、システムの機能や要件を管理・策定する「プロダクトオーナー」、利用可能なインクリメントを作成する「開発者」、スクラムを確立させ有効に機能させる責任を持つ「スクラムマスター」という3つの役割があります。スクラムメンバーは毎日同じ時間に15分程度のミーティングを行い、前回からの進捗や、現状の課題、次回までに行うことをチーム内で確認し共有します。これを「デイリースクラム」といいます。
エクストリーム・プログラミング(XP)
技術面に重きを置いた手法です。顧客の要望を取り入れながら、開発途中の変更など柔軟性を重視します。「コミュニケーション」「シンプル」「フィードバック」「勇気」を共有し、開発を進めます。中でも開発途中の設計や仕様の変更に立ち向かう「勇気」が重要とされています。
ユーザー機能駆動開発(FDD)
顧客にとっての機能価値(feature)を重視します。ユーザーのビジネスを見える化し、必要な機能を洗い出します。適切な間隔で、ソフトウェアの開発を繰り返すのが特徴です。
アジャイル開発のメリット・デメリット
プロジェクトを成功させるには、メリットだけでなく、デメリットも理解したうえで適切な開発方法を選ぶことが重要です。
アジャイル開発一番のメリットは、柔軟な対応が可能で開発スピードが早いことです。機能単位で開発するため、途中で不具合が発生しても修正にかかる工数が少なくてすみ、工期やコストを抑えられます。また、顧客とコミュニケーションを取りながらフィードバックを行うので、顧客ニーズに最大限に応えられ、高い満足度を得られます。
一方で、開発の方向性がブレやすいというデメリットがあります。テストやフィードバックで変更・追加を加えていくことで、当初の計画からズレてしまうことも。仕様や要件ごとの小単位で開発を繰り返すため、スケジュールや進捗具合が把握しにくく、コントロールが難しい傾向にあります。
アジャイル開発は柔軟な対応が可能とはいえ、顧客から要件が出るたびに対応していると、全体の設計に悪影響が出てしまいます。実現したいことや運用後の方向性について、しっかりと共有して、無駄な開発を避けることが大切です。そのためには、スクラムによってチーム内での相互理解を高めることが必要です。開発を進めるうちに相互理解がさらに高まり、スケジュール管理などが容易になるのも、アジャイル開発のいいところと言えるでしょう。