イテレーションとは何か?アジャイル開発で用いられる用語を解説
イテレーションの概要
イテレーション(Iteration)はアジャイル開発で使われる主な用語の1つで、ソフトウェア開発の単位を示します。
イテレーションの期間は、通常1~4週間で設定されます。
この期間中に設計から開発、テスト、リリース後の振り返りまで、システム開発のサイクルを一通り回すことが特徴です。
イテレーションの期間は短いため、開発項目をふんだんに盛り込むことは困難です。そのため、開発項目を分けて、優先順位の高いものから開発を進める手法が取られます。その意味で、イテレーションは1つのプロジェクト内に複数存在することが一般的です。
イテレーションの期間中に開発する項目はイテレーションの開始時に確定されるため、期間中に機能の追加や変更は受け付けられません。
機能の追加や変更が必要な場合は、次回以降のイテレーションで検討されることになります。プロジェクトに携わる者にとって、決められた項目の開発に集中できることは大きなメリットといえます。
1つのイテレーションが終わったら成果と課題をまとめ、今後の開発に活かします。これらの作業を、開発すべき項目が満たされるまで続けることが特徴です。
イテレーションが必要となった背景
イテレーションが必要となった背景は、アジャイル開発が求められる理由と重なる点があります。以前は、ウォーターフォール型開発が多く使われていました。この手法はゴールが明確な規模の小さいプロジェクトに向いている一方で、一度開発やテストの段階に入ってしまうと設計のやり直しが難しいという特徴があります。
このため、ウォーターフォール型開発では要件定義や設計を完璧にしておく必要がありますが、実際には動くシステムを見ていない以上、仕様や要求の確定には困難が伴います。開発途中で、顧客から追加の要望が出されるケースは少なくありません。またテストの段階で必要な機能が実装されていないことが判明すると手戻りが大きくなり、納期遅延や費用増大の原因となります。
アジャイル開発ではイテレーションを活用し、開発プロセスを繰り返す手法を採用しています。これにより機能を細かく分け、段階ごとに実装する手法を実現することができます。早い段階から動くプログラムを提供でき、顧客からの追加要望も受けやすいことは大きなメリットです。
実際に顧客がリリースされたシステムを使っていくうちに、修正や改善要望が出される場合もあるでしょう。このような要望も、イテレーションでの開発内容に含めることで対応可能です。イテレーションは顧客が求めるシステムを提供する上で、重要な仕組みの1つです。
イテレーションはどう使われるか
ここからは、実際の使われ方を見ていきましょう。1つのイテレーションには、以下の業務が含まれます。
- 開発範囲の絞り込みと、目標の設定
- 設計
- 開発
- テスト
- 納品と振り返り
開発範囲の絞り込みは、最も重要な業務です。顧客の要求内容はプロダクトバックログにまとめられていますが、一連の開発が終わるタイミングでもない限り、要求されているすべてを短期間で開発することはできません。
このためイテレーションの期間中に収まるよう、開発項目を選ぶ必要があります。顧客とよく話し合った上で、優先度と難易度を踏まえつつ、実施すべき開発項目をピックアップしましょう。
また品質などの目標を設定することも重要です。
期間内に開発すべき要件が固まったら、設計や開発、テストを行います。
チームは少人数である場合が多く、短期間での確実なリリースが必要です。進捗状況のチェックなど、スケジュール管理が求められます。
イテレーションの終わりに実施する振り返りは、次回以降の開発に役立てるためにも重要です。改善点をまとめ、今後に活かしましょう。
1つのイテレーションが終わるタイミングと前後して、次回のイテレーションで開発する項目の絞り込みが行われます。このサイクルを繰り返し実行することで、システムを顧客が必要とする順に提供できることは、イテレーションを活用するメリットといえるでしょう。
参考
- 情報処理推進機構「アジャイル領域へのスキル変革の指針 アジャイル開発の進め方」
- 富士通ソフトウェアテクノロジーズ「アジャイル開発とは(前編)アジャイル開発の概要とウォーターフォール開発との対比」
- 富士通ソフトウェアテクノロジーズ「アジャイル開発とは(中編)スクラムとエクストリームプログラミング(XP)」
- プロダクト・マネジメントの要諦「イテレーション開発がいい理由」
- モンスター・ラボ「「アジャイル開発」とは? 特徴とメリット・デメリットをわかりやすく簡単に解説」
- Innovation & Co.「イテレーションとは?スプリントとの違いや開発プロセスを解説!」
- Qiita「アジャイル開発時におけるプロジェクトの進め方(その1)」
- Qiita「アジャイル開発でイテレーション(Iteration)を行うの目的」
- Qiita「アジャイル用語集」
- Ryuzee.com「5分で分かるスクラム用語集」