アジャイル開発は、従来型の開発手法と異なり、1つのシステム開発を機能ごとなどの複数のフェーズに分けて順番に開発していくプロセスが特徴です。
従来型の開発プロセスでは、開発着手前に開発全体の仕様を確定させ
アジャイル開発は、従来型の開発手法と異なり、1つのシステム開発を機能ごとなどの複数のフェーズに分けて順番に開発していくプロセスが特徴です。
開発開始後の変更を前提としませんが、アジャイル開発のプロセスには、次のような特徴があります。
アジャイル開発のプロセスの特徴 | |
開発途中の仕様変更を前提としたプロセス | ・細かなニーズまで柔軟に汲み取ることができる ・ビジネスの状況変化に合わせて臨機応変に開発内容を変えることが可能 |
フェーズごとにPDCAサイクルを回すプロセス | ・エラーを早期に発見して修正することができる ・少ない負担でソフトウェアの品質を高めることができる |
このように、顧客の要望に沿った開発を実現しやすいプロセスが特徴のアジャイル開発ですが、プロセスごとの注意点やプロセスにおける受注者・開発者の役割分担を把握して採用しないと、有効活用することはできません。
アジャイル開発のプロセスを表面的に確認するだけでなく、具体的にどういうところが従来型の開発手法と異なるのか把握して、アジャイル開発を採用するかどうかを検討することが欠かせません。
そこで、この記事では、アジャイル開発を正しく使いこなすうえで押さえるべき以下のポイントを解説します。
【当記事のポイント】
・アジャイル開発のプロセスの特徴 ・アジャイル開発のプロセスの基本 ・アジャイル開発のプロセスにおける役割分担 ・アジャイル開発のプロセスで作るもの ・アジャイル開発のプロセスをスムーズに進めるための注意点 |
上記の内容を把握することで、アジャイル開発と
アジャイル開発は、従来型の開発手法と異なり、1つのシステム開発を機能ごとなどの複数のフェーズに分けて順番に開発していくプロセスが特徴です。
はどのように進めるものか、イメージができるようになるでしょう。また、それを踏まえて、適切な開発方法を検討することができるようになります。
アジャイル開発は、従来型の開発手法の課題を踏まえて、開発プロジェクトを柔軟に進めることができるようにした手法です。開発を思い通りに進めるためにも、目的に合わせた最適な開発手法を選んで、使いこなせるようになりましょう。
1.アジャイル開発はサイクルを反復するプロセスが特徴
アジャイル開発は、基本的に「要件定義・設
アジャイル開発は、従来型の開発手法と異なり、1つのシステム開発を機能ごとなどの複数のフェーズに分けて順番に開発していくプロセスが特徴です。
計〜開発・テスト〜リリース」のサイクルをフィードバックしながら反復するという流れになっています。
上記のように、アジャイル開発では、開発全体を機能ごとといった単位で複数に分け、機能ごとに要件定義からリリースまでの工程を終わらせていきます。前の工程でのフィードバック結果を、次の工程での要件定義などに活かすことができるのが特徴です。
このように、アジャイル開発のプロセスには、
・各機能の開発が独立して進められる
・最初から全体の仕様を確定し
アジャイル開発は、従来型の開発手法と異なり、1つのシステム開発を機能ごとなどの複数のフェーズに分けて順番に開発していくプロセスが特徴です。
てしまわない
という特徴があるので、開発開始後の仕様変更にも柔軟に対応できます。
従来型の開発方法(ウォーターフォール開発)は、以下のとおり、開発全体についてまとめて工程を進める1本道のプロセスです。
そのため、開発全体の進捗管理は簡単ですが、開発開始後の仕様の変更・追加をしようとすると手戻りが多く、費用や時間の負担が大きくなってしまうという特徴があります。
このように、アジャイル開発のプロセスは従来型の開発方法と異なり、何度も工程を反復することが特徴です。
2.アジャイル開発のプロセスの基本の流れ
アジャイル開発は何度も工程を反復することが特徴であることはわかりましたが、具体的にはどのように進めていけばよいのでしょうか。
ここでは、複数種類あるアジャイル開発のなかでも、汎用性が高くよく使われる「スクラム」という手法を例に挙げて、より詳しく進め方をご紹介します。
アジャイル開発(スクラム)では、「スプリント」と呼ばれる短期間の開発工程を複数回繰り返して、開発を進めていく手法です。
上記のとおり、スプリントには、
①スプリントプランニング
②デイリースクラム
③スプリントレビュー
④ふりかえり
という4つの特徴的なプロセスが含まれます。
なお、①〜④のプロセスを複数回繰り返すことで、システム全体を構築していきます。デイリースクラムは1回のスプリントで複数回、実施します。
各プロセスの概要やポイントなどを、以下で詳しく見ていきましょう。
2-1.スプリントとは?
スプリントとは、計画に基づき、設計・開発・テスト・リリースをする作業単位のことです。スプリント1つあたりの期間は、1〜4週間の間で任意の期間を設定します。
スプリントに含まれる代表的な4つのプロセス(イベント)は、以下のとおりです。
スプリントのプロセス | |
①スプリントプランニング | ・スプリントの開始時に行うミーティング ・スプリントの開発内容や進め方を決める |
②デイリースクラム | ・スプリント期間中に毎日行う15分程度のミーティング ・進捗や今日の目標・開発を進めるうえでの課題などを共有 |
③スプリントレビュー | ・スプリントの最後に行う会議の1つ ・今回のスプリントの成果や今後の流れを共有 |
④ふりかえり | ・スプリントの最後に行う会議 ・今回のスプリントに対する評価や反省点を確認し、次回以降に向けた改善点を検討 |
このようにスプリントは、反復する開発工程の期間を短く区切り、随時ミーティングを設けることで、確実に目標達成をできるようにするための仕組みです。
スプリントを正しく設定していくことが、スケジュール管理がしづらいアジャイル開発をスピーディーかつスムーズに進めることにつながります。
2-2.①スプリントプランニング
スプリントプランニングとは、スプリントの開始時にスプリント(開発工程)の計画を立てるために行うミーティングのことです。
開発チームや各リーダー(プロダクトオーナー・スクラムマスター)が集まり、今回のスプリントについて
・開発に携わるメンバー
・今回の開発内容
・スプリントの目標や進め方
・開発目標から具体的なタスクの洗い出し
・各メンバーの作業分担
などを決定します。
スプリントプランニングは、開発目標や作業分担を共有し認識誤りが起こるのを防ぐことで、手戻りを防ぐために必須の過程です。
1〜4週間と限られたスプリントで確実に目標を達成するため、欠かせないプロセスと言えるでしょう。
スプリントプランニングのポイント | |
実施時期 | 各スプリントの開始時 |
参加者 | 開発チーム・プロダクトオーナー・スクラムマスター |
決めること | 今回のスプリントの開発内容・進め方・作業分担など |
2-3.②デイリースクラム
デイリースクラムとは、スプリントの開発作業中に毎日、進捗と当日の目標などを報告しあう短時間のミーティングのことです。
スプリントを円滑に進めるために毎日行うデイリースクラムには、効率的に情報共有するため、以下のような特徴があります。
【デイリースクラムの特徴】
・毎日決まった時間に決まった場所で行う ・立ったまま行う ・時間は15分程度 |
デイリースクラムで報告しあうのは、以下の内容です。
・昨日までの進捗
・今日の目標
・作業を進めるにあたっての課題
デイリースクラムは、課題を早期発見・早期解決し、スケジュールどおりに作業を進めるうえで重要なプロセスと言えます。
期間が限られたスプリントの目標を確実に達成するためにも必ず毎日行いましょう。
デイリースクラムのポイント | |
実施時期 | スプリントの開発作業中に毎日 |
参加者 | 開発チーム・スクラムマスター |
報告すること | 昨日までの作業の進捗と今日の目標など |
2-4.③スプリントレビュー
スプリントレビューとは、各スプリントの終了時に行う、今回の開発成果を確認する会議のことです。
開発チームや各リーダー(プロダクトオーナー・スクラムマスター)に加え、顧客などの利害関係者(ステークホルダー)にも必ず参加してもらう必要があります。
スプリントレビューでは、
・実際に動かしてみて、開発の利害関係者からフィードバックをもらう
・スプリントの結果を踏まえた今後の課題などを、プロダクトバックログ(タスクの優先順位表のようなもの)に反映する
などといった作業を行います。
スプリントレビューは、顧客などからフィードバックをもらうことで
・開発の方向性に認識のずれがないか確認する
・次回のスプリントに反映し開発の精度を上げる
といった目的のために必要です。
スプリントレビューのポイント | |
実施時期 | 各スプリントの終了時 |
参加者 | 顧客などの利害関係者・開発チーム・プロダクトオーナー・スクラムマスター |
実施すべきこと | ・利害関係者のフィードバックを確認する ・プロダクトバックログを更新する |
2-5.④ふりかえり
ふりかえり(スプリントレトロスペクティブ)は、今回のスプリントの作業プロセスに対する評価や反省点を確認し、次回以降に向けた改善点を検討するために、スプリントの最後に行うミーティングです。
スプリントレビューではスプリントの成果を、ふりかえりではスプリントのプロセスを確認します。
ふりかえりで確認する主な内容は以下のとおりです。
・今回のスプリントの作業の進め方や内容で、よかった点や課題
・次回以降のスプリントで改善すべき点
ふりかえりは、PDCAサイクルを回して、次回以降のスプリントの効率や精度を向上させるために行います。工程を反復するアジャイル開発では、特に有効なミーティングと言えるでしょう。
ふりかえりのポイント | |
実施時期 | 各スプリントの終了時 |
参加者 | 開発チーム・プロダクトオーナー・スクラムマスター |
実施すべきこと | ・スプリントの作業の進め方について評価すべき点・課題を確認 ・次回以降の改善点を検討 |
3.アジャイル開発のプロセスにおける役割分担
アジャイル開発の流れがわかったところで、次は、アジャイル開発のプロセスに関わるメンバーの役割分担をご紹介します。
アジャイル開発(スクラム)の主な役割分担 | |
プロダクトオーナー | 開発するプロダクト(アプリケーションやシステム)の方向性を決める |
スクラムマスター | 開発作業がスムーズに進むようにスケジュール管理やチーム内の調整をする |
開発チーム | 開発作業を行う |
アジャイル開発のプロセスについて正しく把握するためにも、代表的な開発に関わるメンバーの役割(スクラムチームに属する役割)を具体的に把握しておきましょう。
3-1.プロダクトオーナー
プロダクトオーナーとは、どのようなプロダクトを作るのか、開発全体の方向性を決める役割を担うメンバーです。
何を開発するか決めるプロダクトオーナーは、発注者(ユーザー)側から選びます。
プロダクトオーナーが担当する具体的な業務は、以下のとおりです。
【プロダクトオーナーの担当業務例】
・開発するシステムの仕様や必要な機能を決める ・開発する機能の優先順位を決める ・プロダクトバックログを管理する ・開発チームと社内・社外の利害関係者との調整を行う |
開発の方向性を管理するプロダクトオーナーは、プロジェクト立上げ時からスプリントまで、すべてのプロセスに関わります。
プロダクトオーナーのポイント | |
役割 | 何を開発するか決める |
立場 | ユーザー側から選ぶ |
担当プロセス | プロジェクト立上げ・プロダクトバックログ作成・スプリントのほぼすべての過程に主体的に関わる |
なお、プロダクトバックログについては、「4-1.プロダクトバックログ」で詳しく解説します。
3-2.スクラムマスター
スクラムマスターとは、開発作業がスムーズに進行するように、開発チームのサポートを行う役割のことです。開発者側のメンバーから選びます。
チームを統率するのではなく、メンバーが仕事をしやすくなるように、相談に乗ったり課題解決を手助けするのが特徴です。なお、スクラムマスター自身は開発業務を行いません。
スクラムマスターが担当する具体的な業務は、以下のとおりです。
【スクラムマスターの担当業務例】
・開発チームが円滑に動けるよう、アドバイスをする ・作業進行の障害が無いか確認し、調整を行う |
開発チームの支援を担当するスクラムマスターは、プロダクトバックログ作成・スプリントのプロセスに補佐的な立ち位置で関わることになります。
スクラムマスターのポイント | |
役割 | 開発チームのサポートを行う |
立場 | 開発側のメンバーから選ぶ |
担当プロセス | プロダクトバックログ作成・スプリントに補佐的に関わる |
3-3.開発チーム
開発チームとは、実際の開発作業を担当する役割のことです。複数名のメンバーでチームを組んで作業を行います。
プロダクトオーナーやスクラムマスターと協調はしますが、開発は自律的に進め、開発のやり方も自分たちで決めるのが特徴です。
開発チームが担当する具体的な業務には、以下のようなものがあります。
【開発チームの担当業務例】
・開発チーム内の計画や進め方を決め、管理する ・設計、開発、テストなどを行う |
プロダクトバックログ作成やスプリントの中のタスク実行、スプリントレビュー・ふりかえりに、主体的に関わる役割です。
開発チームのポイント | |
役割 | 実際の開発作業を担当する |
立場 | ユーザー側・開発側の双方から選ぶ |
担当プロセス | プロダクトバックログ作成・スプリントに主体的に関わる |
4.アジャイル開発のプロセスで作るもの
最後に、アジャイル開発のプロセスを進める過程で作成すべきログ等について解説します。
アジャイル開発のプロセスで作るもの(スクラム) | |
プロダクトバックログ | ユーザーのニーズを満たすために必要な機能・仕様を優先順位付けしたリスト |
スプリントバックログ | プロダクトバックログの内容を、開発チームが実際に作業するタスクに置き換えたリスト |
インクリメント | 1回のスプリントで作成する成果物 |
それぞれ具体的にどのようなものかを、以下で確認してください。
4-1.プロダクトバックログ
プロダクトバックログとは、顧客(ユーザー)の要望に優先順位を付けて整理したリストを指します。発注者にもわかるような表現・体裁でリスト化することが特徴です。
プロジェクト開始時に作成し、必要に応じて開発着手後も更新されます。管理を担当するのはプロダクトオーナーです。
記載内容には、次のようなものがあります。
・プロジェクトの最終目標(プロダクトゴール)
・プロダクトゴールを達成するために必要な仕様と優先順位(プロダクトバックログアイテム)
プロダクトバックログを顧客(ユーザー)と開発関係者が具体的に共有することで、作るべき仕様などに対する認識のずれをなくせるので、質の高い開発につながります。
プロダクトバックログとは | |
概要 | 発注者(ユーザー)の要望に優先順位を付けて整理したリスト |
作成時期 | プロジェクト開始時(随時、必要に応じて更新する) |
作成主体 | プロダクトオーナー |
4-2.スプリントバックログ
スプリントバックログとは、プロダクトバックログを、スプリントで実行すべきタスクに分解したリストです。
スプリントバックログの優先順位の高い順に、タスクをリスト化します。各スプリント開始時に、プロダクトオーナーと開発チームが中心になって作成します。
スプリントバックログに含まれる内容は、
・ユーザーのニーズを満たすために追加すべき機能
・機能追加のために処理すべきタスク
・作業時間の見積もり
などです。
スプリントバックログとは | |
概要 | プロダクトバックログをスプリントで実行すべきタスクに分解したリスト |
作成時期 | 各スプリントの開始時 |
作成主体 | プロダクトオーナーと開発チーム |
4-3.インクリメント
インクリメントとは、スプリント1回あたりの成果物を指します。
プロダクトバックログに載っていた顧客のニーズ(仕様)が部分的に形になったものが、インクリメントと言えるでしょう。複数のインクリメントの組み合わせが、プロダクトです。
次のようなものが、インクリメントに該当します。
・ソフトウェア
・新しく追加した機能など
インクリメントと認められるためには、完成していて動作することが必要です。
「完成」と言えるためには、単に作成すればよいのか・テストが必要かなど、基準が人によって異なるため、アジャイル開発の開始時に完成の定義を決めておきましょう。
インクリメントとは | |
概要 | スプリント1回あたりの成果物 |
作成時期 | 各スプリント終了時 |
作成主体 | プロダクトオーナーと開発チーム |
5.アジャイル開発のプロセスをスムーズに進めるための注意点
アジャイル開発のプロセスをスムーズに進めるためには、以下の3つに注意が必要です。
アジャイル開発のプロセスをスムーズに進めるための注意点 |
1. 開発の目的・ビジョンを明確にする 2. アジャイル開発の特徴・役割を理解する 3. コミュニケーションを活性化させやすい体制にする |
それぞれ、どのようなところに注意が必要なのか、以下で解説します。
5-1.開発の目的・ビジョンを明確にする
アジャイル開発を円滑に進めるためには、開発の目的や方向性などを明確にし、チーム全員で共有しておく必要があります。
優先順位の高い機能から段階的に開発を進め、スプリントごとにPDCAサイクルを回すアジャイル開発では、開発全体の最終目的が不明確になりやすいからです。
例えば、テキストベースのチャット機能がメインのシステム開発をしていたつもりが、開発過程で出た「ビデオチャットの機能や録画機能・動画編集機能などもつけてはどうか」という意見をすべて取り入れ、チャット機能はあまり充実させないまま開発を進めてしまうと、本来目指していたものとは違うシステムが出来上がってしまうでしょう。
どういう方向性で開発を進めるのか、開発チームはもちろん、それ以外の顧客・利害関係者にも共有しておくことで、開発途中で方向性がずれる事態を避けることができるのです。
5-2.アジャイル開発の特徴・役割を理解する
アジャイル開発やスクラムの進め方、プロセスの中で各メンバーが果たすべき役割を、きちんと理解して進めるようにしましょう。
最初に全体の仕様を確定せず開発しながら精度を高めていくことが特徴のアジャイル開発では、各メンバーが役割を果たさないと、納期に大幅に遅れたり、顧客のニーズを満たすために必要な機能が漏れたりしてしまうためです。
例を挙げると、スケジュール管理を担当するリーダーが納期に間に合うように全体の工程を調整する必要性を把握していなかったら、最終納期までに開発を終えることは難しくなるでしょう。
メンバー全員が各プロセスで何をしないといけないのか具体的に把握し、主体的に開発に関わるようにすることが、アジャイル開発の成功には欠かせません。
5-3.コミュニケーションを活性化させやすい体制にする
発注者側と開発者双方が協力し、自由に意見交換ができる人選を行うことが、アジャイル開発をスムーズに進めるうえで欠かせません。
アジャイル開発で、迅速に発注者側の要望に沿った開発を進めるには、スプリントごとに発注者側の適切で具体的なフィードバックが必要です。
コミュニケーションが取りづらく率直な意見を出しにくい環境だと、的確なフィードバックが得られず、発注者側の希望に合わない開発結果になってしまうでしょう。
具体的には、実際にシステムを運用する担当者が「操作性があまりよくない」と感じていても、意見を出しづらい環境では上手く伝えられず、現場では使いづらいシステムが出来上がってしまう場合などが考えられます。
意見を出しやすい体制にするには、
・特に開発者は経験者を選任する
・できるだけメンバーを固定する
などに注意して、チームメンバーを選ぶのが効果的です。
6.まとめ
今回は、アジャイル開発を正しく使いこなすうえで押さえるべきプロセスのポイントについて解説しました。最後に、要点をまとめてご紹介します。
アジャイル開発のプロセスの特徴は、「要件定義・設計〜開発・テスト〜リリース」のサイクルを、フィードバックしながら反復することです。
アジャイル開発の代表的な手法であるスクラムは、以下のようなプロセスで進めます。
アジャイル開発(スクラム)のプロセス | |
スプリントプランニング | スプリントの開発内容や進め方を決める |
デイリースクラム | 進捗や今日の目標、開発を進めるうえでの課題などを共有 |
スプリントレビュー | 今回のスプリントの成果や今後の流れを共有 |
ふりかえり | 今回のスプリントに対する評価や反省点を確認し、次回以降に向けた改善点を検討 |
上記のプロセスを進めるうえで欠かせないのが、次の役割分担です。
アジャイル開発(スクラム)の主な役割分担 | |
プロダクトオーナー | 開発するアプリケーションやシステムの方向性を決める |
スクラムマスター | 開発作業がスムーズに進むようにスケジュール管理やチーム内の調整をする |
開発チーム | 開発作業を行う |
アジャイル開発のプロセスでは、プロダクトバックログ・スプリントバックログといったリストや、インクリメントと呼ばれる成果物を作る必要があります。
アジャイル開発のプロセスをスムーズに進めるためには、以下の3つに注意しましょう。
・開発の目的・ビジョンを明確にする
・アジャイル開発の特徴・役割を理解する
・コミュニケーションを活性化させやすい体制にする
今回ご紹介したポイントを参考にアジャイル開発を使いこなして、これまで以上に満足度の高いソフトウェア開発に挑戦してみてください。