イテレーションとは?
イテレーションとはどのようなものなのか、同様の意味で使われるスプリントとは何が違うのかなどを解説します。
アジャイル開発における開発サイクルの単位
イテレーションとは、アジャイル開発で用いられる言葉で、設計、開発、テスト、改善という開発サイクルの単位のことを指します。
経済産業省の『システム管理基準』によると、以下のように定義されています。
イテレーション
1~数週の期間を設け、その期間分の計画・分析・設計・実装・テストを実施して、その期間分の情報システムをリリースする活動。1プロジェクトの中でこの活動を複数回反復する。
アジャイル開発とは、短いサイクルで開発を何度も繰り返していく開発手法のことです。イテレーションと呼ばれる短い開発サイクルを回すことで、顧客からの要望や仕様変更などに柔軟に対応できます。
従来のウォーターフォール開発は、企画、要件定義、設計、開発、テストを長期間かけて、一度で行うのが特徴です。ウォーターフォール開発は、最初の段階で企画や計画に時間をかけることで、計画どおりにプロジェクトを進められるメリットがあり、大規模プロジェクトに向いています。しかし、開発途中で機能変更をすることがむずかしく、顧客からの要望などに柔軟に対応しづらいデメリットもあります。
一方でアジャイル開発では、短い開発サイクルを繰り返すことで、少しずつ製品の完成度を高めていきます。1回のイテレーションが終わり次のイテレーションがはじまる際に、顧客からの要望や改善に対応できるため、顧客のニーズや状況の変化に対応しやすいのが大きなメリットです。
アジャイル開発についてはこちらもご覧ください。
>>アジャイル開発とは?概要や進め方、ウォーターフォール型開発との違いやスクラムについて解説のページへ
イテレーションが必要とされる理由
近年は、外部環境や顧客のニーズが急速に変化しやすくなっていることから、開発の途中で仕様の変更や改善を求められることもよくあります。アジャイル開発では、短いサイクルで開発を繰り返すため、顧客からの要望や仕様変更に対応しやすいことがメリットです。
従来のウォーターフォール開発では、スケジュールを詳細に立てて、一回の開発で納品まで行うため、開発途中での仕様変更対応がむずかしくなってしまいます。途中で仕様変更を行う場合は、一度開発を中断して、仕様変更部分の設計からやり直す必要があります。ほかの箇所についても、仕様変更による影響の有無を判断しなければなりません。
従来のウォーターフォール開発と違い、アジャイル開発では短い開発サイクルを繰り返すなかで、その都度外部環境や顧客のニーズの変化を取り入れて対応できます。そのため、イテレーションと呼ばれる短い開発サイクルを繰り返す、アジャイル開発が必要とされているのです。
イテレーションとスプリントの違い
関連サービスについて
▽おすすめ資料のご紹介▽
「アジャイル組織を目指すあなたへ 最初に読むべき必読ブックガイド」
本資料は、アジャイル組織を目指す方々に向けたブックガイドです。DevOpsとアジャイルに関する書籍をとりあげ、それらから得られる知識や教訓をわかりやすく解説しています。さらに、実践への第一歩や推奨の読み進め方も収録。これからの組織づくりに役立つ知識を効率よく学べます。ぜひダウンロードしてご覧ください。
「アジャイル組織を目指すあなたへ 最初に読むべき必読ブックガイド」のダウンロードページへ
イテレーションのメリット
イテレーションを活用して開発を行うメリットについて、ご説明します。
顧客のニーズを反映しやすくなる
短い開発サイクルを繰り返していくことで、顧客から要望を受けた場合にも、次のイテレーションに組み込むことが可能です。そのため、顧客のニーズを反映しやすいというメリットもあります。
顧客からの要望への対応が迅速化される
1~数週間ほどの期間で開発を行うため、短い期間で機能、操作性などを確認することが可能です。また、不具合や問題点などがあれば、次のイテレーションですぐに改善できます。
そのため、顧客からの要望への対応スピードをはやめられるというメリットがあります。また、不具合を早期に見つけられるため、開発の最終段階で致命的なバグが見つかり、大きな手戻りが発生するなどの事態を防ぐことも可能です。
品質向上につながる
設計、開発、テスト、改善というイテレーションのサイクルを繰り返して開発を行うため、問題が起こってもその都度改善をとり入れることが可能です。そのため、イテレーションを繰り返していくと、顧客からの要望に近い成果物を開発できるという意味で、品質の向上につながります。ただし、開発の進め方によっては、バグの発生を抑えるという意味での品質の向上が困難なケースもあり、注意が必要です。
チームのモチベーションアップや成長促進につながる
ウォーターフォール開発は、年単位の長期間のプロジェクトになることが多く、開発チームのモチベーションを保つことが困難です。しかし、イテレーションごとに短期間の目標を設定して開発を行う方法の場合、目標を一つ一つ達成していくことで、モチベーションアップや成長の促進につながります。
手戻りのリスクを軽減できる
ウォーターフォール開発でもっとも大きな弱点となるのが、手戻りのリスクが大きいことです。企画から要件定義、設計、開発、テスト、納品という長期間の計画を立て、計画どおりにプロジェクトを進めるため、開発途中でバグや仕様変更などが発生すると、手戻りが大きくなります。また、開発途中に仕様変更やバグ改修を行う際は、変更箇所以外への影響確認も必要です。
イテレーションにより、細分化された開発を繰り返し行う手法なら、途中で問題が起きた場合でも手戻りが少なく、開発全体に与える影響が少なくすみます。
イテレーションが使われる「エクストリームプログラミング(XP)」について
ここでは、エクストリームプログラミング(XP)とは、どのような開発手法なのかをご説明します。
エクストリームプログラミング(XP)の特徴
エクストリームプログラミングとは、アジャイル開発の手法のひとつで、開発の成功例を「極端(extreme)」に実践するという意味をもっています。過去の成功例と同じことを行うことで失敗しないという考え方のもと、成功事例を集めて開発を行っていきます。
アジャイル開発の手法のなかでは「スクラム」が有名です。スクラムが役割・イベントなどを定義することでチームの作業を推進することを主眼にするのに対し、エクストリームプログラミングは技術的なプラクティスに焦点をあててコード品質を向上し開発プロセスを改善します。
エクストリームプログラミング(XP)の基本原則
エクストリームプログラミングには、5つの基本原則があります。ここでは、開発を進める際に重視すべき5つの基本原則について、簡単にご説明します。
・Rapid Feedback(迅速なフィードバック)
短いフィードバックループを使用して、製品が顧客のニーズを満たしているかどうかをすぐに把握します。
・Assume Simplicity(単純さを前提とする)
要求された機能を、シンプルに実現することを指針とします。
・Incremental Change(増分変更)
一連の小さな変更を計画、開発、設計に適用して問題を解決します。
・Embrace Change(変化を受け入れる)
差し迫った問題を解決しながら選択肢を残します。
・Quality Work(質の高い仕事)
テストファーストプログラミングを重視します。
イテレーションの流れ
イテレーションの流れは、以下のとおりです。
1.プランニング
プロジェクト全体の見積もりと、イテレーションごとのリリースの計画を作成します。それぞれのリリース計画は、最小限の要件や仕様にとどめておき、顧客からの要望などに柔軟に変更できるようにします。また、顧客の要求とチームの能力を考慮して、開発する機能を決定していきます。
2.開発
イテレーションごとに目標を設定し、計画を立てて開発、テストを実施します。また、開発チームや顧客からのフィードバックを随時受けます。
3.レビュー
機能が問題なく動作するか、顧客の求める仕様になっているか、問題点や改善すべき点はないかなど、顧客を含む関係者全員でレビューします。
イテレーションを円滑に進めるためのポイント
イテレーションを円滑に進めるためのポイントについて、解説します。
目的を明確にする
イテレーションごとの目的を明確にしておき、顧客や開発メンバー内で共有しておくことが重要です。そうすることで、開発メンバーが足並みをそろえて、同じ目的に向かって開発を進められます。
自動化などで開発効率を向上させる
ツールによる自動化を可能な限りとり入れて、開発効率を向上させることが重要です。たとえば、アプリケーションをすばやくデプロイするCI/CDツールや、データ入力を自動で行うRPAツールなどがあります。
開発ペースの維持を意識する
開発がスムーズに進むように開発ペースを維持することで、安定して開発を進められます。負担が大きすぎるイテレーションがある、開発メンバーの入れ替わりが激しいなどの場合は開発が安定せず、開発品質の低下につながるでしょう。
振り返りの時間を確保する
イテレーションごとに振り返りを入念に行い、よかった点、悪かった点を洗い出して、次に活かすことが大事です。失敗した点だけでなく、成功体験を確認することで、チームの士気を高めることにつながります。
顧客やチームメンバーと密なコミュニケーションをとる
変化に柔軟に対応しつつ開発を進めるためには、顧客やチームメンバーとのコミュニケーションを密にとることが必要不可欠です。積極的にコミュニケーションをとり、意見を交換しあうことでよりよい意見が生まれ、生産性の向上や品質の向上につながります。
関連サービスについて
まとめ
イテレーションとは、短い期間で開発を繰り返すアジャイル開発で用いられる言葉です。アジャイル開発では1~数週間程度で設計、開発、テスト、改善を繰り返しますが、この開発期間のことをイテレーションと呼びます。
アジャイル開発を導入して、顧客のニーズや仕様変更に柔軟に対応できる開発を行いたい場合は、SHIFTのアジャイル開発支援(SHIFT 1LINE)をご活用ください。お客様のアジャイル内製開発体制の構築とプロジェクト推進において、開発・ITガバナンス・プロダクトデザインなど、すべての局面で強力にサポートいたします。
継続的なプロダクト開発に伴走する、SHIFTのアジャイル開発支援
「顧客のニーズに柔軟に対応できる開発体制に変えたい」「新しい開発手法を導入して生産性の向上や顧客満足度の向上につなげたい」「アジャイル開発のノウハウがない」などの悩みを抱えている企業様は多いかもしれません。
従来のウォーターフォール開発は、要件定義、設計、開発、テストまでを入念に計画してから長期間で開発を進めるため、開発計画を立てやすいというメリットがありました。しかし、開発期間が長いため、仕様変更や顧客からの要望に柔軟に対応しにくいという弱点があります。
一方で、アジャイル開発では、短い期間の開発を繰り返すため、開発途中で改善点や顧客の要望をとり入れやすくなっています。
アジャイル開発をスムーズに進めるためには、豊富な専門知識や経験、ノウハウが必要です。そのため、アジャイル開発やイテレーションに関する知識やノウハウがない状態で、アジャイル開発にシフトするのはむずかしいでしょう。
そこで、SHIFTのアジャイル開発支援(SHIFT 1LINE)をご活用いただければ、お客様のアジャイル内製開発体制の構築とプロジェクト推進において、開発・ITガバナンス・プロダクトデザインなどすべての局面で強力にサポートいたします。
短期的な人材確保や長期的な人材育成など、お客様のニーズにあわせて対応し、お客様のシステム開発に柔軟性とスピードをもたらします。
監修
株式会社SHIFT
「ヒンシツ大学」クオリティ エヴァンジェリスト
永井 敏隆
大手IT会社にて、17年間ソフトウェア製品の開発に従事し、ソフトウェアエンジニアリングを深耕。SE支援部門に移り、システム開発の標準化を担当し、IPAのITスペシャリスト委員として活動。また100を超えるお客様の現場の支援を通して、品質向上活動の様々な側面を経験。その後、人材育成に従事し、4年に渡り開発者を技術とマインドの両面から指導。2019年、ヒンシツ大学の講師としてSHIFTに参画。
担当講座