アジャイルは「素早い・機敏な・早い」という意味を持ち、アジャイル開発とは従来のシステム・ソフトウェア開発の課題であった開発期間の短縮や、柔軟な仕様変更を実現するための開発手法です。2001年にアメリカにて作成された、アジャイルソフトウェア開発宣言(アジャイル・マニフェスト)の中で定義されたのが始まりとされています。
本記事ではアジャイル開発の概要と要点について解説します。
アジャイル開発とは
アジャイル開発とは、従来のソフトウェア開発の課題であった開発期間の短縮や、柔軟な仕様への対応を実現する開発手法です。
アジャイル開発には複数のバリエーションが存在しますが、一例として下記のような順序で開発を行います。
少数のエンジニアを中心としたチームを組成する
短い期間(開発規模にも左右されるが、一般的には2週間程度)を設定し、その期間内の開発スケジュールを作成する
設計・開発・テスト・修正・リリースといった、一連の開発に係るタスクを期間内にすべて行う
期間内に開発したソフトウェアやシステムをリリースするとともに、把握している問題点や改善点があれば、2-3の工程を繰り返す
開発手法の変遷
ウォーターフォールモデル
アジャイル開発が登場する以前、システム・ソフトウェアの開発は、ウォーターフォールモデルと呼ばれる手法が一般的でした。ウォーターフォールモデルは、要件定義→設計→開発→テスト→修正→運用という開発に係る一連のタスクを順序通り進める開発手法で、これらの工程を水が上流から下流に流れていくように一方通行に進めます。
その為、一度決定した仕様を後から大きく変更することは想定していません。
アジャイル開発
一方、アジャイル開発は短い期間内で仕様の決定から開発を繰り返し行うため、仕様の変更を想定に入れた開発手法となっています。実際にリリースを複数回行う過程で、ユーザーから寄せられた改善案を仕様に反映する等、柔軟な対応が可能です。
アジャイル開発によるメリット・デメリット
前述の通り、アジャイル開発による最大のメリットは、柔軟に軌道修正を行いながら開発を進めることができる点にあります。また、複数の機能が存在する場合、優先度の高い機能から実装したり、開発の過程で未実装の箇所にも仕様変更が生じた場合にも、手戻りすることなく実装を進めることが出来ます。
何かとメリットの多いアジャイル開発ですが、複雑な要件が求められるシステムや、実行時に確実性が求められるシステムの場合、要件を確実に組み上げるウォーターフォールモデルの方が適している場合もあります。ウォーターフォールモデルからアジャイル開発に移行している背景として、業務に合わせた大型システムを開発する時代から、SaaS,PaaSといったクラウド上のソフトウェアに合わせて業務を合わせる時代に変化しつつあることが大きく影響していると言えます。
例えば、スマートフォン向けのゲームアプリを開発する場合、アジャイル開発は非常に有用と言えます。開発のボリュームが少ないため、比較的短い期間で一回のサイクルを回しながら効率的に開発を進めることが可能なうえ、8割程度の出来になった時点で一般のテストユーザーを募集することで、リリース前のバグを事前に検知することが容易です。また、万が一リリース後にバグが発生しても修正版を再度リリースすることで対応可能なケースがほとんどなので、スピードを重視したアジャイル開発と相性が良いのです。
逆に、金融機関系の決済システムを構築するような場合は、膨大にやり取りされるデータを、一つのミスも許さずに処理する必要があります。このようなシステム構築では、膨大なデータを処理するためのデータベース等、多くの仕様を事前に確定する必要があり、また決済時にエラーが発生した場合に二重徴収を避ける機能など、ミスが許されない処理が多く、ウォーターフォールモデルが適していると言えます。企業の基幹システムも同様の条件が求められるため、ウォーターフォールモデルでの開発が主流ですが、近年では自社特有の内容をカスタマイズすることですぐ使えるようになる、クラウド形式の基幹システムも導入が進んでいるため、将来的にはアジャイル開発に移行するかもしれません。
上記をまとめると、それぞれの開発手法に適したシステムは下記のような条件が挙げられます。
ウォーターフォールモデルでの開発に適したシステム
・事前に取り決めるべき仕様が多く存在する
・リリース後のバグが許されない
アジャイル開発に適したシステム
・事前に取り決めるべき仕様があまり存在しない
・リリース後にバグの発生がある程度許容される
アジャイル開発の手法・各手法における要点
本章では、アジャイル開発の主な手法を3つ紹介します。
スクラム
スクラムはラグビーの「スクラム」と同様に、チーム一体となってコミュニケーションを活発に行うことを重視した手法です。
チーム内のメンバーは、逐次自分の作業状況や進め方について確認し合い、情報を共有しながら開発に取り組みます。朝会など定期的にメンバーが顔を合わせる機会を設け、コミュニケーションを活発に行いながら、メンバー全員が正しい方向を向いて開発を遂行できる状況を維持します。
逆に、コミュニケーションが円滑に取れないケースでは、計画と実際の開発状況にずれから生じるスケジュール遅延の発生や、各メンバーのプロダクトがうまく連携せずバグが多発するなどの危険もあります。
スクラムは、チームとして業務に対してどのように取り組むか定義するスキームなので、システム開発以外の一般的な業務においても適用可能な点も、大きな特徴となります。
エクストリーム・プログラミング(XP)
エクストリーム・プログラミング(XP)は、開発途中に発生した仕様変更に対する柔軟性を重視した手法です。開発を進めるうえで顧客とのコミュニケーションを密に取ります。顧客が実装したいシステムの仕様を十分に理解することで、どのように問題が解決できるか、あるいは技術的な実現可能性について、顧客にフィードバックし、認識の齟齬がない形で開発を進めることが可能です。
ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発(FDD)は、開発するシステムの品質を重視した手法です。顧客にとって何がベストなシステムかを明確にし、その上で、そのシステムの実現に向けてチームを組成し、開発を進めます。顧客の求めるシステムを第一に開発を進める、という点で品質に重きを置いた手法であると言えます。
今回のまとめ
今回はアジャイル開発に関する基礎知識のご紹介と、プロジェクトの進め方についてご紹介しました。事前にポイントを把握し、ご自身の事業においてどのような開発手法が最適か把握しておくことが重要です。