アジャイル
短い期間で実装と確認を繰り返し、変更に対応しながら完成へ近づける開発手法です。
アジャイル開発とは
アジャイル開発とは、システムやソフトウェアを一度に完成させようとせず、短い期間ごとに開発と確認を繰り返し、動く成果物を少しずつ完成に近づけていく開発手法です。
要求(要求事項、要件)の変更に対応しやすいことが特徴です。
「アジャイル(agile)」は英語で「素早い」「機敏な」という意味です。
基本の考え方
開発を小さな単位に分割し、短期間で繰り返します。
各繰り返しの終わりに、動作する成果物を確認します。
確認結果や要望を次の繰り返しに反映します。
アジャイル開発の進め方
開発は短い期間の区切りを繰り返して進めるのが一般的です。
基本の流れ
-
作る機能を洗い出し、優先順位を決めます。
-
優先順位が高い機能から、1週間から4週間程度の短い期間で設計、実装、テストを行います。
-
その期間の終わりに、動作するソフトウェアを利用者や顧客に確認してもらい、評価と意見を得ます。
-
評価結果を次の期間の計画に反映し、同じ流れを繰り返します。
反復で行う作業の例
| 区分 | 目的 | 実施内容の例 |
|---|---|---|
| 計画 | 今回作る範囲を決める | 要求を選び、作業量を見積もります。 |
| 実装 | 使える機能を作る | 仕様を決め、プログラムを作ります。 |
| テスト | 正しく動くか確かめる | 単体テスト、結合テストを行います。 |
| レビュー | 成果物と進め方を確認する | 利用者の確認、チーム内レビューを行います。 |
| 振り返り | 次を良くする点を決める | 問題点と対策を整理します。 |
代表的なアジャイル開発手法
スクラム
アジャイル開発でよく使われる手法です。開発は「スプリント」と呼ばれる固定期間で進めます。
役割
-
プロダクトオーナー:作る機能の優先順位や方向性を決めます
-
スクラムマスター:スクラムを実施できるよう、チームの障害を取り除く支援をします
-
開発チーム:設計、実装、テストなどを行い成果物を作ります
XP(エクストリームプログラミング)
品質を高めるための具体的な実践手法(プラクティス)を重視する手法です。
代表的なプラクティス
-
ペアプログラミング:2人1組でプログラムを作成します
-
テスト駆動開発(TDD):テストを先に作成し、そのテストを満たす実装を行います
-
リファクタリング:動作を変えずに内部構造を改善します
-
継続的インテグレーション(CI):変更を頻繁に統合し、自動テストなどで確認します
ウォーターフォール開発との比較
| 比較項目 | ウォーターフォール開発 | アジャイル開発 |
|---|---|---|
| 計画 | 最初に全体計画を詳細に立てます | 大まかな計画を立て、各サイクルで見直します |
| 要件変更 | 原則として後戻りしない前提です | 変更が起きる前提で調整します |
| 成果物の提供 | 開発完了後にまとめて提供します | 短い周期で段階的に提供します |
| 利用者との関わり | 要件定義時と納品時が中心になりやすいです | 開発期間を通じて継続的に関わります |
| 適した案件 | 要件が明確で変更が少ない案件が中心です | 要件が変わりやすい案件が中心です |
理解のポイント
-
アジャイル開発では、最初から全ての詳細を確定させず、開発中の変更を前提として計画を調整します。
- 短い期間で開発サイクルを回し、動作する成果物を繰り返し提供します。
-
途中の要件変更に対して、サイクルごとの見直しで対応しやすい点が特徴です。
-
短い期間ごとに成果物を確認するため、進捗や品質の問題を早期に把握しやすいと考えられます。
発展知識
関連用語
| 用語 | 概要 |
|---|---|
| ウォーターフォール開発 | 要件定義から順に工程を進め、原則として後戻りしない開発手法です |
| スクラム | スプリントという固定期間で開発を繰り返すアジャイル開発手法です |
| XP(エクストリームプログラミング) | ペアプログラミングなどの実践手法を重視するアジャイル開発手法です |
| プロダクトバックログ | 開発すべき機能や要件を優先順位付きで一覧にしたものです |
| DevOps | 開発と運用が連携して、継続的にソフトウェアを提供する考え方です |
| プロトタイピング | 試作品を早い段階で作り、利用者の確認を得ながら進める手法です |