あなたはアジャイル開発という言葉を聞いたことがありますか?アジャイル(Agile)とは、素早いという意味で、アジャイル開発とは、大まかに言えば文字通り、素早い開発のことです。
今回は、アジャイル開発という言葉聞いたことがあるが、詳しくは知らないという方のために、アジャイル開発の成り立ちやコンセプトから、他の開発手法との違い、メリット、デメリットについて説明します。
アジャイル開発とは、迅速かつ柔軟にソフトウェア開発を行うための一群の手法のことです。従来の手法であるウォーターフォール型開発と対照的に語られることが多く、アジャイル開発自体は比較的新しい手法です。
アジャイル開発は、17名のソフトウェア開発者による議論の末に考案され、2001年に「アジャイルソフトウェア開発宣言」として公開されました。「アジャイルソフトウェア開発宣言」は、ソフトウェア開発を行う上で重視すべき指針を示すものです。
アジャイル開発は、以下のようなコンセプトを持っています。
価値を認める | より重視する |
プロセスやツール | 個人との対話 |
包括的なドキュメント | 動くソフトウェア |
契約交渉 | 顧客との協調 |
計画に従うこと | 変化への対応 |
注意すべき点は、「プロセスやツール」、「包括的なドキュメント」、「契約交渉」、「計画に従うこと」などの従来の開発手法において重要と捉えられていた事柄の価値を否定しているわけではないという点です。
アジャイル開発は、それらの価値を認めつつ、「個人との対話」、「動くソフトウェア」、「顧客との協調」、「変化への対応」をより重視するという立場です。
アジャイル開発の特徴は、短期間の開発・検証・テストのサイクルを繰り返し行うことです。優先順位の高い機能から開発を進め、最終的には個別に開発した各機能の集合としてシステムを構築します。
プロジェクトの条件に変更が生じることが前提となっているため、仕様変更への柔軟な対応が可能であり、プロダクトリリースまでの納期が短縮できます。また、プロダクトの価値を最大化することを目標とする点も特徴の一つです。
次に、アジャイル開発とウォーターフォール型開発の違いについて説明します。ウォーターフォール開発は非常に古くから存在し、現在でも一般的に用いられている開発の手法です。
アジャイル開発は、開発・検証・テストのサイクルを短期間で繰り返す開発手法です。一方で、ウォーターフォール開発は、システムの仕様を全て詳細に決定してから開発をスタートし、各工程を一つひとつ順番に完了し、全ての工程が完了した後で、ソフトウェアが利用可能になります。
上流工程から下流工程に水が流れるように進行することから、このような名前がつけられています。
ウォーターフォール型開発のメリットは、プロダクトの品質を一定水準以上に保ちやすいということです。ウォーターフォール型開発では、開発するプロダクトの仕様を明確に定義したうえで、事前に定めた手順通りに開発を進めるため、安定した品質が期待できます。
また、開発のスタート段階で作業量を把握することができるため、リソースの管理がしやすいというメリットがあります。さらに、仕様通りのプロダクトが、予定通りのスケジュールで開発されることが前提となるため、クライアントに安心感を与えることができます。
ウォーターフォール型開発では、要件定義を詳細に行ったうえで開発をスタートするため、開発前段階の工程に時間がかかり、開発期間が長期化する傾向があります。同様の理由で、仕様変更しにくいというデメリットがあります。
続いて、アジャイル開発が向いているプロジェクトと向いていないプロジェクトについて説明します。アジャイル開発にも向き不向きがあり、プロジェクトの性質によって他の開発手法を採用すべき場合もあります。
新規事業開発や変化の激しいビジネスのプロジェクトがアジャイル開発に向いているといわれています。アジャイル開発に向いているプロジェクトの例は、以下の通りです。
アジャイル開発は、機能要件が明確であったり、納期が厳密に決定しているプロジェクトには不向きであると言われています。アジャイル開発が向いていないプロジェクトの例は、以下の通りです。
続いて、アジャイル開発のメリットについて説明します。アジャイル開発には、以下のようなメリットがあります。
開発前段階で詳細に全体設計をするウォーターフォール型開発とは異なり、アジャイル開発は小回りが利く、リカバリーがしやすいという特性があります。
同時に、プロセスの改善やマネジメント能力の向上などにも寄与するため、チーム全体の成長に寄与します。
続いて、アジャイル開発のデメリットについて説明します。
最後にアジャイル開発の事例を紹介します。
ANAグループのシステム構築・保守を担当するANAシステムズ株式会社は、アジャイル開発による内製化を推進しています。
プロジェクトを短期間に複数同時並行で進める際に、アジャイル開発の有用性を実感し、導入に踏み切っています。
動くソフトウェアをベースにしてユーザーのレビューを受けられるようになったことで、手戻りが減少し、ユーザー意見を反映したプロダクトを開発することができるようになりました。
ネスレ日本株式会社は、基幹システムの移行に伴い、アジャイル開発の手法を導入しています。時間が限られている中、何よりもスピードが重視されたことが採用理由とのことです。
短期間の移行に適したパッケージソフトやクラウド基盤を利用すると同時に、開発が必要な場面では、アジャイル開発を行っています。
クラウド名刺管理サービスを提供するSansan株式会社は、名刺入力システムをアジャイル開発で構築しました。
プログラミング言語のRubyとアジャイル開発を組み合わせることにより、自由度が高く、メンテナンスが容易な環境が実現し、従来の手法よりも短期でリリースすることに成功しました。
アジャイル開発とは、迅速かつ柔軟にソフトウェア開発を行うための一群の手法のことで、2001年に公開された比較的新しい手法です。
アジャイル開発には、文書を削減できる、納期を短縮できる、手戻りが少ない、仕様変更に柔軟に対応できる、チームの成長が促進される等のメリットがありますが、プロジェクトの方向性を定めにくい、スケジューリングや進捗確認の難易度が高い等のデメリットもあります。
アジャイル開発にも向き不向きがあり、プロジェクトの性質によって他の開発手法との使い分けが必要です。
自社のプロジェクトの性質を見極め、管理職だけでなく現場の人間、取引先にとってもWin-Winになる方法を選定しましょう。