数年前まで、世間ではアジャイル開発はうまくいかない、失敗するなどネガティブなイメージを持っている方も多くいましたが、ここ数年は多くの企業がアジャイル開発を取り入れています。背景には、アジャイル開発の浸透や、アジャイル開発と親和性の高いDXの高まりがあると言えます。アジャイル開発の大きな特徴に「イテレーション」という一定期間で開発期間を区切り、反復する点があります。アジャイル開発をスムーズに進めるためにはイテレーションを理解しておくことが重要です。ここではイテレーションとは何か、どのように進めるのか、ポイントなどを解説します。
イテレーションとは
イテレーションとは、1〜4週間単位でスケジュールを区切り、開発の一連の工程である「設計・開発・テスト・リリース」を1つのイテレーションの中で行い、それを反復させて開発を進めることをいいます。
スプリントとの違い
イテレーションと同様に使われる言葉に「スプリント」があります。スプリントは、アジャイル開発手法のひとつである「スクラム」で用いられる用語です。スプリントの意味はイテレーションと同様で、開発期間を区切り、反復することをいいます。
なぜイテレーションで開発を進めるのか。その目的とメリットとは?
イテレーションで開発を進める意味はどこにあるのでしょうか。ここでは目的とメリットを解説します。
目的・メリット1:アジャイルマニフェストに沿う
アジャイル開発には、2001年当時アジャイル開発をリードしていた17名が取りまとめた「アジャイルマニフェスト」があり、アジャイル開発の重要な概念として下記が定義されています。
プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、
この定義を実現し、顧客にとって価値あるプロダクトを提供するためには、イテレーションという単位に区切って開発することが最善であると考えられました。
目的・メリット2:開発プロジェクトの不確実性に対応する
例えばウォーターフォール開発の場合、要件定義を行い仕様を確定させても、リリースすると仕様変更が発生したり、要求したものと違うとクレームが発生したりなど、問題となることが多くあります。プロジェクトは開始直後ほど不確実性が大きく、プロジェクトが進むに従い、不確実性が徐々に減少していくものです。不確実性は、プロジェクトにとってはリスクです。
プロジェクトをイテレーションという小さな単位で区切り、顧客に確認を取りながら、時には柔軟に仕様変更を行い、ひとつひとつの開発を確実に終わらせていくことはプロジェクトの不確実性を最小限にしながら完成を目指すことに繋がり、リスクを減らすことができます。
目的・メリット3:失敗からの成長を最大限に活かす
通常、プロジェクトでは多くの反省点や改善点が出るものです。しかし、それらをふりかえる作業は大抵プロジェクトが終了したとき、クロージングとして行われます。その後メンバーはそれぞれ次のプロジェクトや他の仕事に入ってしまい、当該プロジェクトでの反省点をリアルタイムに活かすことはできません。
アジャイル開発では、イテレーション毎にふりかえりを行い、次のイテレーションに活かすという取り組みがあり、チームの課題にリアルタイムに向き合い、改善することができるため、プロダクトの成長と、チームの成長を促すことができます。
目的・メリット3:開発にメリハリ、緊張感が出る
イテレーションで開発を進めると、タスクの期限が近く、また、デイリースタンドアップ(朝会や夕会)などコミュニケーションを取る場も多くあります。これらはメンバーに緊張感をもたせ、長期間のプロジェクトでも中だるみせずにプロジェクトを進めることができ、プロジェクトに活気をもたらします。
【無料資料】プロジェクト生産性を高めて利益を最大化するには?
イテレーション内で行うこと
イテレーションでは、「設計、開発、テスト、リリース」という開発工程を繰り返すことになりますが、その他にもアジャイル開発として行うべきことがあります。
ここではイテレーション内で主に行うことを解説します。
設計・開発
イテレーション内に開発すると決めたものの設計・開発を行います。
テスト
開発したものをテストします。テストは単体、結合を含みます。
リリース
ここまでのイテレーションで開発したものと、現在のイテレーションで開発したものが正しく「動く」ものをリリースします。
レビュー
イテレーション内で開発したものが正しく動くか、仕様の認識違いがないか、改善点や課題がないかなどを関係者でレビューします。
ふりかえり
稼働中のイテレーション内のふりかえりや、チームとしてのあり方についてふりかえりを行い、次回以降のイテレーションで行うべき改善行動を計画します。ふりかえりではKPTやOKRなどの手法が用いられます。
次のイテレーションの計画
現在の開発状況や顧客要望、レビューやふりかえりをふまえ、次のイテレーションの計画を行います。計画は下記の視点で行い、チーム内で合意し、スムーズに次のイテレーションをスタートできるようにします。
- 次のイテレーションで何を行うのか
- 作業見積(ポイント見積)は正しいか
- 優先順位を変更すべきタスクはあるか
- イテレーション内に終了できるタスク単位になっているか
- イテレーション内で行うタスクボリュームは最適か
イテレーションをスムーズに進めるための4つのポイント
イテレーションは、期間を区切って開発を進めればよいというわけではなく、効率的かつチームの成長に考慮する必要があります。ここではイテレーションを進める際のポイントを解説します。
ポイント1:自動化環境を整える
イテレーションは何度も繰り返すため、繰り返し行う作業は自動化し、リソースを割かないようにすることが作業効率化にもなり、また、人為ミスなどがなくなり品質も向上します。多少時間やリソースをかけても「楽するための努力」を行うことがポイントです。
ポイント2:ふりかえりの時間を確保する
ふりかえりは、プロジェクトが忙しくなったり、チームの士気がさがったりすると、どうしても割愛されがちな時間です。しかし、先のとおり、ふりかえりはチームの成長と質の良いプロダクトを生むための取り組みのため、根気よく実施することが重要です。
ポイント3:計画の時間を確保する
次のイテレーションにスムーズに入れるよう、次の開発計画を現在のイテレーションが終わるまでに完了させておくことが好ましいです。元旦に気持ちがリセットされるように、人は区切りがあると再スタートを切りやすい傾向にあり、これは生産性にも影響すると考えられます。
そのため、イテレーションがすぐ走り出せるように準備しておくことがポイントです。
特に、プロジェクトが始動する一番最初のイテレーションは、うやむやに始めてはいけません。プロジェクト全体のポイント見積と優先順位をつける時間を確保し、計画を整えてスタートを切ることが重要です。
ポイント4:タスクの量に注意し、チームのベロシティを計測する
チームがどれだけの仕事をこなせるのか、チームのベロシティを計測し続けます。キャパシティを超えタスクをイテレーションに詰め込みすぎるとモチベーションの低下やプロジェクトの失敗に繋がります。ベロシティによって次のイテレーションの作業量を決定します。
【無料資料】工数管理を軸にした生産性向上・業務改善の5つのステップ
まとめ
ここまで、イテレーションとは何か、目的や進め方のポイントを解説してきました。アジャイル開発のイテレーションで開発を進めることは、不確実性に対応し、また、軌道修正がしやすい手法といえます。アジャイル開発の経験がない場合、いきなり全てを取り入れるにはハードルがあります。アジャイルの手法をできることから取り入れてみることや、外部のアジャイルコーチに入って貰うことも大きな失敗を防ぐための方法のひとつです。