アジャイル開発がメジャーになってからしばらく経っており、いろいろな記事でも説明されておりますが、もっと実践的な内容が知りたい。という方も多いと思います。
そんな疑問にお答えいたします。
本記事では、アジャイル開発の概要説明を実施し、スクラムの進め方と、各プロセスの説明をし、アジャイル開発を実施するエンジニアが日々の業務で具体的にどのようなプロセスを踏むべきなのかを、分かりやすく説明していきたいと思います。
アジャイル開発とは
システムやソフトウェア開発におけるプロジェクト開発手法のひとつで、大きな単位でシステムを区切ることなく、小さい単位で計画から、設計、実装、テストを小さいサイクルで繰り返して開発を進めていく手法。
ソフトに限った内容でなく、システム設計やその他業務全体にも当てはめる事が出来る。
従来のウォーターフォールモデルのように、多くの詳細な仕様書を作り、1つ1つのステップを進めていく手法に対し、顧客が実際に使えるプロダクトを作る事を重視し、変化に柔軟に対応する事を特徴とする。
- ウォーターフォールとアジャイルの違い
アジャイル開発 | ウォーターフォール開発 | |
プロセス | 計画→設計→実装→テスト のサイクルを短いサイクルで実施し、このサイクルを多く回す事で、顧客が満足するアプトプットに近づける手法。 | 企画→要件定義→設計→実装→テスト とプロセスが完全に独立しており、それぞれのプロセスのアウトプットを次のプロセスのインプットとして全体のプロセスが動く手法。基本的に上流工程から下流工程へ流れ、逆流は想定されていない。 |
チームメンバ | 基本的には複数のチームが、上記のプロセス(計画→設計→実装→テスト)をそれぞれ回す。 | 基本的に、要求仕様作成者、詳細仕様作成者、コーディング(実装)、テスト、とそれぞれ担当チームが分かれている。 |
テスティング | 上記短いサイクルの中で何度もテストを繰り返す。 | コーディング(実装)が終わった後に、単体テスト、結合テスト、システムテスト、といったように各工程のテストをそれぞれの責任者が実施。 |
メリット | 要求に変化に早く対応が出来、開発スピードが速い。不具合発生時にすぐ次のスプリントで対応できるため、後戻りの工数が少ない。 | 当初の要求仕様通りに進むという特徴から、契約時に契約内容、責任範囲が明確となる。途中に変更が無い分、全体管理が容易。 |
デメリット | 仕様、要件事にスケジュールの設定をされる場合が多く、小さいサイクルで運用する為、全体のスケジュール管理がしにくくなる場合がある。 | 最初に決定した、計画を重視する為、後戻りが発生した場合、その時間やコストが膨らむ可能性がある。 |
アジャイル開発の手順
それでは具体的にはアジェイル開発の開発手順を記載していきたいと思います。項目は2つあり、1つ目は開発体制、2つ目は実際に実施する内容。という順で説明していきます。
アジャイル開発体制
アジャイル開発は次のような体制の元実施される事が多いです。プロダクトオーナの元に各役割を持ったチームが複数配置されており、スクラムマスタの管理の元、スプリントが調整されます。各役割と、用語は次の通りとなります。
※プロダクトオーナ:製品やプロジェクトの責任者や予算管理者
※スクラムマスタ:スプリントのイベントを調整する役割の人材
※チームリーダ:名前の通りチームのリーダー。スプリントのアウトプットが正しく出せるよう、チームをリードし、各メンバのタスク管理を実施。チームを成功へ導く役割をもつ。
※メンバ:名前の通りチームメンバ。リーダの指示に従い、与えられたタスクを実行する
※スクラム:開発プロセスの総称
※スプリント:開発期間の単位。スプリントは番号を付けて管理する事が多く、スプリント1,2,3と番号を付け、どの期間を指すかを番号で判別する場合が多い。
アジャイル開発の開発フロー
実際にアジャイル開発で行われる内容の詳細を説明していきたいと思います。上に記載した体制の元、計画→設計→実装→テストを実施するのですが、これをさらに細分化すると、次の6つのプロセスに分けられます。
この①~⑥の工程をスプリントという名称で開発期間の単位として定義し、1~3週間くらいの短いスパンでこのサイクルを回し、適宜軌道修正しながら、開発とその管理をしていく事をアジャイル開発といいます。
✓アジャイル開発の開発フロー
- インプット
- プロダクトオーナによる、チームリーダ及びメンバへの方針説明
- プロダクトオーナから、進捗、環境変化によって優先順位決めや、開発の軌道を修正する等の指示を実施
- チーム間インプット
- 他のチームに依頼があるようなタスクがある場合、このタイミングで業務依頼等を実施し、各チーム、各メンバのタスクを明確にする。
- スプリントプランニング
- 1のインプット、2のチーム間インプットの両インプットに基づき、自身のタスクを決定する。
- スプリントプランニングレビュー
- プランニングで計画したタスクに対し、他チーム、プロダクトオーナとの合意を得る
- レトロスペクティブ
- 本スプリントで出来た事、出来なかった事、問題点をチームで共有する。KPTと言われ、主に、下記Problemの洗い出しと次スプリントでそれを改善する為のTryを決定する事に時間を費やし、改善のサイクルを回す。この改善サイクルを短い期間で回せる事がアジャイル開発の強みだと、私は思います。
- KPTに関する詳しい記事はこちら。
- K(Keep):うまく進み、このまま継続すべき内容
- P(Problem):スプリントの中で問題があった内容
- T(Try):Problemに対して、次のスプリントでそれを改善する為に試す事
- スプリントレビュー
- 各チームで実施したレトロスペクティブに基づき、計画に対する進捗や結果を他のチームやプロダクトオーナに対して報告。1へ戻る。
この1~6を短いサイクルで実施するのですが、4で決定したタスクの進捗管理を毎日実施します。それをデイリースクラムと呼び、目的は次の通りです。
- メンバの日々の業務管理を実施
- 計画、進捗、成果、課題をチーム内で共有
- 課題に対する取り組む方針をチームで協議
各タスクが個人ワークとなり、ブラックボックスにならないように、進捗を見える化し、課題管理をリーダ主導の元、全員が共有し、チーム全体で課題に取り組む事が重要であり、各自がプランニングした内容が、そのスプリント内で終わるようマネジメントしていく能力がリーダには求められていきます。
以上、アジャイル開発の説明でした。
アジャイルとは異なりますが、方式がアジャイルでもウォーターフォールモデルでも、それをしっかり管理、マネジメントしていく事が重要であり、その役割が重要になります。少し本記事とは異なりますが、プロジェクトマネージメントにはどのようなスキルが必要か記載した記事もありますので、もしよろしければご覧ください。
参考:プロジェクトマネージャが絶対抑えるべきスキル教えます【募集要項実例】
また、ものづくりエンジニアが製品をつくるプロセスも下記にまとめておりますので、もしよろしければご覧いただければと思います。
参考:ものづくりエンジニアの仕事内容と製品が出来るまでのプロセスを公開します
記事が気に入って頂けたら、クリックして頂けると嬉しいです。
コメント