概要
ソフトウェアやシステム開発において、短期間の反復(イテレーション)を繰り返しながら開発を進める手法。
※ agileは日本語にすると「俊敏な、機敏な」という意味
メリット
1.仕様変更に強い
機能別に「計画」や「設計」を行うアジャイル開発は、仕様変更に対しても柔軟に対応することができます。顧客のフィードバックの後に仕様変更や要望の追加が発生しても、その内容を次のイテレーションに反映させることで対応可能です。
2.早くリリースできる
ソフトウェアの各種機能をひとつの単位として、「計画」「設計」「実装」「テスト」という一連の工程を回し、リリースします。その際、ユーザーストーリーを取り込んだリリース計画を立てることによって、いち早くユーザーのニーズを満たしたプロダクトを提供することが可能となります。
3.ユーザーの要望に寄り添った開発ができる
短いスパンで成果物をリリースするため、顧客は開発進捗を確認できて、開発チームはその都度フィードバックを得ることができます。そして、次のイテレーションに仕様変更や要望をタスクとして追加することによって、ユーザーの要望に最大限寄り添った開発を行うことができます。
デメリット
1.全体のスケジュール管理が難しい
詳細な計画を最初に立てないため、スケジュールや進捗の把握が難しく、全体のコントロールが困難になることがあります。
2.プロジェクトの方向性がブレやすい
仕様の変更を加えやすいメリットの反面、プロジェクト開始当初の目標、方向性を見失ってしまうことがあります。
代表的な手法
- スクラム
- カンバン
- リーンアジャイル
- エクストリームプログラミング(XP)
4つの価値基準
「アジャイルソフトウェア開発宣言」にて、アジャイルを実践する上での基本的な価値観である「4つの価値」が示されています。
1.「個人と対話」
プロセス、ツールよりも個人と対話。
2.「実際に動く(働く)ソフトウェア」
広範囲で包括的なドキュメントよりも実際に動くソフトウェア。
3.「顧客とのコラボレーション」
契約交渉よりも、顧客とのコラボレーション(利的協力)。
4.「変化に対応」
計画に従うよりも、変化に対応。
12の原則
「アジャイルソフトウェア開発宣言」にて、アジャイル開発にどういった姿勢で臨み、どう行動すべきか、どんな目標を設定し、スケジュール感覚を持つのが大切かといった理想像が12つ示されています。
- 顧客満足を最優先して継続的に価値あるソフトウェア提供する。
- 要求変更を歓迎し、変化を味方につけて顧客の競争力を向上させる。
- 「動くソフトウェア」を2~3週間、2~3ヶ月と短い間隔でリリースする。
- ビジネスサイドと開発者は日々一緒にプロジェクトで働く。
- 意欲に満ちた人を集めてプロジェクトを構成し、メンバーを信頼する。
- 情報を伝える効率的で効果的な方法は対面で話をすること。
- 動くソフトウェアが進捗の最も重要な尺度になる。
- アジャイル・プロセスは持続可能な開発を促進する。一定のペースを維持する。
- 技術的な卓越性と優れた設計への欠かさない注意が機敏さを高める。
- シンプルさが本質。
- 最良のアーキテクチャ・要求・設計は、自己組織的なチームから生まれる。
- 定期的に振り返りをして、自分たちのやり方を最適に調整する。