5分でわかるイテレーションとは? 開発プロセスやスプリントの違い、特徴などを全て解説
CircleCI Japan GK リージョナル マーケティング マネージャー
アジャイル開発の中で欠かせない仕組みの一つに「イテレーション」が挙げられます。 この記事では、イテレーションの概要や必要性、スプリントとの違い、そして実際にどう使われるのかを紹介していきます。
イテレーション(Iteration)とは?
短期間で開発を繰り返すアジャイル開発、その中で使われる開発サイクルの単位を表す言葉を、イテレーション (Iteration) といいます。
「設計」「開発」「テスト」「改善」 から構成されるイテレーションは通常1〜4週間で設定され、システム開発のサイクルを一通り回すことが特徴です。一つのサイクルを回した後にリリース、これを イテレーション 1 とした時、イテレーション 2、イテレーション 3… というように繰り返します。
イテレーションの必要性
それでは、イテレーションはなぜ必要なのでしょうか?
今まで多く使われていた ウォーターフォール型開発では、工程を分割した上で開発を進めていき、全ての工程が無事に完了した後テストが行われます。そのため、開発途中で顧客からの追加要望があった場合、工程を大きく戻す可能性があり納期遅延や費用が増大します。
一方で、アジャイル開発においては開発プロセスを繰り返すことで機能を細かく分け、ステージごとに組み込まれる手法を実現できます。この機能こそが上記で説明したイテレーションです。
比較的早い段階から実際に動くプログラムを提供することで、顧客からの追加リクエストにも対応しやすいというメリットもあります。このことから、イテレーションは重要な仕組みの一つであり、アジャイル開発においての必要性が挙げられます。
イテレーションとアジャイル開発の違いとは?
イテレーションとアジャイルの違いとは、先ほども説明した通り、短サイクルで開発を繰り返すアジャイル開発の一種の流れのみとなります。アジャイルは、基本的にソフトウェアやアプリケーション開発の要求等のみを決定することが多く、イテレーション(Iteration)はその後に活用され、サイクルを繰り返しながら開発を進めていく方法です。
イテレーションはあくまでもアジャイル開発に使われる言葉であり、イテレーションを理解するにはアジャイルの基本知識を理解しておくことが重要です。
イテレーションとスプリントの違い
どちらも開発サイクルを表す イテレーションとスプリントですが、その違いは使用される開発シーンです。
イテレーションは「XP - エクストリームプログラミング」( 次の項で紹介しています)で使用されます。設計から開発、テスト、改善のプロセスを繰り返すイテレーションは、この改善までの工程を短期間かつ高頻度で行うため、失敗と改善という経験を集めやすくXP開発の中に組み込まれています。
スプリント(本記事内 「スプリントを紐解く」で詳しく紹介しています)は「スクラム」で使用され、イテレーションと同様に開発サイクルを繰り返すことを意味します。開発チームにおける仕事の進め方を示したフレームワークを指すスクラムでは、チーム作業の効率化が重要とされています。
このように開発シーンによって分かれるイテレーションとスクラムですが、厳密に区別されているわけではなく、スクラムでのプロセスにイテレーションを使用する場合もあります。
エクストリーム プログラミングとは?
エクストリーム プログラム (XP) は、アジャイル開発手法の一つです。1990年代に ケント・ベック 氏らによって考案されたこの手法は、「変化を受け入れる」「計画を柔軟に変更していく」ことを特徴としており、この非常に斬新な手法は衝撃を与えました。
柔軟性という最大のメリットを持つ エクストリーム プログラム では、開発を行う上で重視すべきポイントを5つの価値として定めています。その5つの価値を詳しく見ていきましょう。
コミュニケーション
プロジェクトが失敗する原因の一つはコミュニケーション不足です。エクストリーム プログラミングではこれを重要視し、顧客と開発チーム内全てにおいて積極的にコミュニケーションを取ります。
シンプル
基本的な機能だけを盛り込み、他に必要な機能があればその都度対応するというようにシンプルさを重視し、まずは単純な実装ですませるようにします。
フィードバック
ソフトウェア開発では、実際に必要のない機能が開発されることがあります。この不必要な開発を防ぐために定期的に顧客からのフィードバックを受け、必要な機能を洗い出します。
勇気
ここで意味する”勇気”とは、上記3つを実現する勇気を指します。途中で大幅な変更を求められる可能性があるという前提で、開発を進めていきます。
尊重
ソフトウェア開発の多くは一人ではなく、チームで行われます。プロジェクトを円滑に進めるため、そして成功させるためにチームのメンバーを尊重することは欠かせません。
上記で紹介した5つの価値に加えて、エクストリーム プログラミングにはいくつかのプラクティスがあります。その中の一つが「反復」であり、この反復こそが イテレーション ( 設計→実装→テスト→リリース ) で区切られ、1〜4週という短い期間で開発を繰り返します。
スプリントを紐解く
それでは、スクラムで使用されるスプリントとは何でしょうか? 「イテレーションとスプリントの違い」でご紹介したように、イテレーションと同じく開発サイクルを繰り返すことを意味しています。この項ではスプリントについてさらに詳しく紐解いていきます。
まずスプリントでは、1週間から2週間を基準とした「タイムボックス」という期間を構築します。そしてタイムボックスごとに設計や開発、テスト、リリースを行い、この工程を繰り返して開発を行います。
そしてこの前後に「プロダクト・バックログの作成」「スプリント・バックログの作成」「スプリントレビュー」「リリース可能なソフトウェア」を設定することで、スプリントの一連の流れが完成します。
イテレーションはどう使われるか
前2項では、イテレーションに関わりのある エクストリーム プログラミング と スプリントについて紹介してきました。この項では実際にイテレーションをどう使うのか、XP開発を例に全体のプロセスを紹介します。
ステップ1: リリース計画の作成
顧客の要望を整理し、イテレーションごとに要件と仕様を決め、リリース計画を作成します。ここで重要なのは、開発途中で変更ができるように、必要最小限の要件と仕様のみを決めることです。
ステップ2 : 開発
リリース計画が決まったら、実際に開発を進めます。前回のイテレーションの問題点や反省点を踏まえ、変更を行いながら進めていきます。
ステップ3 : 各イテレーションごとに成果物をリリース
各イテレーションごとに完成した成果物をリリースし、仕様どおりに動くか、顧客の要望と差異がないかを確認します。不足部分は改善をし、次のイテレーションに活かします。
開発プロジェクトでイテレーションを効率化させるには
イテレーションを効率的に行うには、開発ツールの導入がおすすめです。設計やプログラミング、テスト自動化などの機能が搭載されている開発ツールを使うことで、開発工程を管理し、納期に間に合うよう調整することも可能です。
開発ツールによって機能に違いがあるので、最適なツールを比較してみてください。もちろん、CircleCI もCI/CD ツールの一つとして、きっと皆さんのお役に立てるでしょう!