さまざまな開発手法がある中で、最近では「ウォーターフォール型開発」よりも「アジャイル開発」に注目が集まっており、その中でも「スクラム開発」が開発現場で活用されはじめています。
スクラム開発とは少人数のチームで短いサイクルを繰り返して効率よく迅速に開発を行うフレームワークです。
本記事では、スクラム開発とは何か、取り入れるメリット・デメリットや詳しい仕組みについて解説します。アジャイル開発に興味がある方、スクラム開発を今後取り入れていきたいとお考えの方はぜひ参考してみてください。
※スクラム開発は、アジャイル開発の中の「スクラム」「スクラムフレームワーク」と呼ばれることもありますが、本記事では「スクラム開発」と表現します。
- もくじ
1.スクラム開発とは?概要や定義
スクラム開発とはアジャイル開発の一種で、チーム内で役割ごとに担当者を割り振り、密にコミュニケーションを図りながら進めていく手法です。
しかし、そもそもアジャイル開発がどのような手法なのか、ウォーターフォール型開発との違いがわからない方もいるのではないでしょうか。
そこで、はじめにアジャイル開発の特徴について見ていきましょう。
1-1 そもそもアジャイル開発とは
アジャイル開発とは、システム開発で必要となる「要件定義・基本設計・詳細設計・開発・テスト・運用」のサイクルを機能ごとに繰り返していく開発手法です。
機能ごとに上記のサイクルを繰り返していくため、急な仕様変更や顧客の要望に対しても素早く対応できます。
昨今は、一度サービスをリリースしてからも、顧客からのフィードバックをもとに更なるサービス改善をしていく企業が生き残っていく傾向があります。アジャイル開発は、こうした顧客のフィードバックを柔軟に取り入れ、アップデートを繰り返すことに向いている開発手法といえるでしょう。
1-2 スクラム開発とは
スクラム開発とは、アジャイル開発の手法の一つです。ラグビーのスクラムのように、少人数のチームで開発を進めていきます。チーム内でタスクを割り振り、日々のコミュニケーションを取りながら進めるため、アジャイル開発のなかでもコミュニケーションを重視した手法となります。
役割を明確にしたうえで開発に着手するため、各タスクを同時並行で進められ、効率的に開発を進めることができます。
ただし、日々のコミュニケーションを煩雑にしてしまうと、それぞれのタスクに影響して開発が遅延してしまいます。
1-3 スクラム開発の3つの柱
スクラム開発では「スプリント」と呼ばれるイベントの組み合わせが繰り返し実施されます。イベントを機能させるためには、以下の3つの柱が重要です。
①Transparency(透明性)
スクラム開発でおこなわれるタスクを「見える化」し、チーム内で共有できる状況を指します。スクラム開発の意思決定は、5章で解説する3つの成果物によっておこなわれるため、透明性の高い成果物でなければなりません。もし、担当者の作業が「見える化」されておらず、透明性の低い成果物になると、意思決定の精度が落ちてしまうでしょう。
②Inspection(検査)
スクラム開発のゴールに向けて成果物が正しく評価された状態を指します。事前に課題を検知し、適応すべき事柄を洗い出すことが目的です。
③Adaptation(適応)
スクラム開発で実施される業務のなかで、いずれかの側面が許容範囲を外れていたり、成果物が受け入れられなかったりしたときに修正を加えることです。それ以上の異常を防ぐためにできるだけ早く適応しなければなりません。
スクラム開発は「経験主義(経験から知識が生まれ、開発で必要となる意思決定が観察に基づいておこなわれる)」と「リーン思考(開発に不要なことを徹底的に排除し、本質だけに集中する考え方)」と呼ばれるものに基づいています。
2.スクラム開発のメリットとデメリット
スクラム開発を取り入れるメリットとデメリットについて解説します。
2-1 メリット:効率的・柔軟に対応できる
スクラム開発のメリットは主に以下の4つです。
- 仕様変更に柔軟に対応しやすい
- タスクをチームごとに分担して効率的に進められる
- PDCAサイクルを回せる
- ステークホルダーとのコラボレーションが促進される
スクラム開発は、「プロダクトオーナー」「スクラムマスター」「開発者」の3つの役割に分担して進められるため、それぞれの担当者が実施すべきタスクが明らかになります。各担当者のタスクの責任分界点が明確になるので効率的に進めることができます。
また、スプリントプランニングで計画を立て、計画に沿って日々のタスクをこなし、デイリースクラムやスプリントレビューで評価をして、最終的にはスプリントレトロスペクティブで今後に向けた改善点を洗い出して次回以降に活かしていく、このPDCAサイクルを短期的に回していけるため、スプリントの精度も徐々に高まるでしょう。
さらに、スクラム開発では、スプリントレビューで成果物をステークホルダーに提示するなど、定期的にフィードバックを得ながら進められます。スプリントは長くても1カ月程度が想定されるため、認識の齟齬があっても早期に発見でき、プロジェクト全体の進捗に大きな影響を与えにくいです。また、コラボレーションの促進により、ステークホルダーからの急な仕様変更にも対応しやすく、ユーザーの要望に応じたシステム開発ができるでしょう。
2-2 デメリット:全体像を把握しづらい・向き不向きがある
スクラム開発のデメリットは主に以下の2つです。
- 開発スケジュールの全体像を把握しづらい
- 円滑なコミュニケーションが必要
スクラム開発では、仕様変更に柔軟に対応できる一方で、変更の度に方向性が変わる、プロジェクトが肥大化するなど、全体のスケジュールを把握しづらいというデメリットがあります。
また、少人数のチームで進めていく開発手法なので、円滑なコミュニケーションが必須です。
コミュニケーションが苦手な方や、初心者の方には不向きと言えるでしょう。またメンバーの途中離脱・入れ替えがあった場合はプロジェクトが停滞する恐れもあるので、メンバー編成も重要になります。
3.スクラム開発のチーム体制とは
スクラム開発は、チームを組んで各タスクを進めていきます。スクラムチームは、以下の役割で構成されています。
・プロダクトオーナー(PO)
・スクラムマスター(SM)
・開発者
なお、スクラムチームは5~9名で構成されており、POとSMが1名ずつ、その他は開発者となります。それぞれの役割を解説しましょう。
3-1 プロダクトオーナー(PO)
プロダクトオーナーは、プロダクトの価値を最大化させるためにあらゆる責任を持つ役割です。例えば、プロダクトの改善に必要なタスクを一覧化した「プロダクトバックログ」の管理をするために以下のような責任を持ちます。
- プロダクトゴールを明確にして共有
- プロダクトバックログアイテム(プロダクトゴールの実現に必要な要素)の作成や共有
プロダクトオーナーは一人の人間が担当し、複数人で構成されるものではありません。
そのため、うまく機能させるには、プロダクトオーナーの決定をチーム内で尊重する必要があります。
また、顧客の要望はプロダクトバックログに記載されますが、実際に変更を加えるときにはプロダクトオーナーの同意が必要です。
3-2 スクラムマスター(SM)
スクラムマスターは、開発業務の進捗管理が主な役割です。スクラム開発はスクラムガイドにしたがって進められるため、開発チームがスクラムガイドを遵守しているかの確認をスクラムマスターがおこないます。
具体的には、以下の形で開発を支援します。
- 進捗を妨げる障害物の排除
- 質の高い成果物を作成できるような支援作業
- スクラムイベントが正しく機能するための管理
ほかにも、スクラムマスターの役割にはプロダクトオーナーの支援も含まれ、主な内容は以下のとおりです。
- プロダクトゴールの定義とプロダクトバックログの管理方法の検討
- スクラムチーム内への共有
- ステークホルダーとのコラボレーション促進
3-3 開発者
開発者は、各スプリントでプロダクトの開発を進めることが主な役割です。主に以下の責任を求められます。
- スプリントの計画作成
- 定義を遵守した開発
- スプリントゴールに向けた計画への適応
4.スクラム開発で発生するイベント
スクラム開発は、以下のような5つのイベントで構成されています。
- スプリント
- スプリントプランニング
- デイリースクラム
- スプリントレビュー
- スプリントレトロスペクティブ
それぞれのイベントを解説しましょう。
① スプリント
スプリントは1カ月以内の期間で構成され、プロダクトゴールの達成に必要な「スプリントプランニング」「デイリースクラム」「スプリントレビュー」「スプリントレトロスペクティブ」がおこなわれます。
スプリントでは、スプリントゴールの達成に大きな影響を与える変更をせず、必要に応じてプロダクトバックログをリファインメント(改良・改善)しながら進めていきます。スプリントの期間は1カ月に設定すると、短い期間で多くの学習サイクルを繰り返していけるため、PDCAサイクルを素早く回していけるでしょう。
② スプリントプランニング
スプリントプランニングは、スプリントで実施する作業計画を立てることです。主に、以下の手順に沿って進められます。
1.スプリントの価値を定義
まずは、プロダクトオーナーが今回のスプリントで高めるべきプロダクトの価値を提案します。続いて、ステークホルダーへ伝えるべきスプリントゴールをスクラムチーム全体で定義しなければなりません。
2.スプリントで実施すべき作業の洗い出し
開発者は定義されたスプリントの価値をもとに、今回のスプリントに含めるべきアイテムをプロダクトバックログから選択します。このとき、プロダクトバックログアイテムを修正するケースがあります。
スプリント内にどれだけのアイテムを含めるべきかの選択が難しいですが、過去のパフォーマンスや完成の定義を理解していけば徐々に精度の高いスプリントを計画できるでしょう。
3.作業の達成に向けた方法の策定
最後に、選択されたアイテムごとに、完成の定義を満たす成果物を作成するために必要な作業を洗い出します。多くの場合、アイテムを1日以内で完了できる小さなタスクに分解して策定していきます。開発者の裁量によって洗い出されるため、価値の高い成果物を作成する方法はスクラムチーム内で決めなければなりません。
スプリントに含めたプロダクトバックログアイテム、、スプリントゴールの達成に必要な成果物を作成するための計画をまとめて「スプリントバックログ」と呼びます。
③ デイリースクラム
デイリースクラムは毎日実施されるイベントで、スプリントゴールに向けた進捗状況を検査し、必要性に応じてスプリントバックログを修正することが目的です。
毎日15分を目安に実施され、プロダクトオーナーやスクラムマスターが全体の状況を検査し、開発者が1日の作業計画を共有します。デイリースクラムの実施により、担当者が抱える障害物を特定できるため、スプリントを円滑に進めていけるでしょう。
④ スプリントレビュー
スプリントレビューとは、スプリントの成果を検査して改善点を洗い出すことです。
検査では、スプリントで作成されたプロダクトをステークホルダーに提示し、プロダクトゴールに向けた進捗を話し合います。具体的には、このスプリントで達成したことや、それに伴う変化をスクラムチームとステークホルダーがレビューします。場合によってはプロダクトバックログの調整をするケースもあるでしょう。
スプリントレビューで重要なポイントは、成果物を提示するだけではなく、ディスカッションを重ねて次にやるべきことを明確にすることです。
⑤ スプリントレトロスペクティブ
スプリントレトロスペクティブとは、スプリントの最後に実施される振り返りの会議です。
スプリントレビューと違い、成果物にフォーカスした振り返りではなく、チームとしての対応や進め方に着目して振り返りを実施します。作業者、プロセス、ツール、完成の定義について、スプリントを通しての結果を検査します。
スプリント内でどのような問題が発生したのか、問題をどのように解決したのかを話し合い、次回以降に活かしていくことが目的です。スプリントは、スプリントレトロスペクティブをもって終了となります。
5.スクラム開発で必要な3つの成果物
スクラム開発では、3つの成果物が必要です。それぞれ解説していきます。
5-1 プロダクトバックログ
プロダクトバックログとは、プロダクトの改善に必要な作業を一覧にまとめたもので、主にスクラムチームが参考にする情報です。
スプリントプランニングを実施するときに、スプリント内で実施すべきタスクをプロダクトバックログから選択します。つまり、スプリントプランニングをする前にはプロダクトバックログを準備しておかなければなりません。
プロダクトバックログは、プロダクトの将来の状態を表した「プロダクトゴール」を最終的に成し遂げるものとしています。プロダクトゴールだけではなく、プロダクトゴールの達成に向けた作業も含まれています。
スクラムチームにとって、プロダクトゴールは長期的な目標です。次の目標を策定するときには、すでに立てている目標を達成もしくは放棄しなければなりません。
5-2 スプリントバックログ
スプリントバックログとは、「スプリントゴール」「スプリントで選択されたプロダクトバックログアイテム」「インクリメントの作成に向けた計画」で構成されたものです。主に、開発者が実施すべきタスクを洗い出したもので、スプリントゴールの達成に向けてリアルタイムに更新されます。
例えば、スプリントゴールの達成に向けて作業を進めるときに、スプリントバックログに含まれていない作業が発覚した場合には、プロダクトオーナーと交渉をしてスプリントバックログのスコープを変更します。
5-3 インクリメント
インクリメントとは、プロダクトゴールの達成に向けて必要となる、完成の定義に沿って作成された具体的な成果物です。
スプリントでは複数のインクリメントを作成し、スプリントレビューのときに提示して検査をします。場合によってはステークホルダーに提示するケースもあり、完成の定義を満たさない限りインクリメントは成果物としてみなされないため注意が必要です。
インクリメントは、プロダクトバックログアイテムが完成の定義を満たしたときに誕生するため、完成の定義を満たさないとリリースができず、スプリントレビューへの提示もできません。
まとめ
スクラム開発とは、アジャイル開発の一種で、少人数のチームで役割・担当者を割り振り、密にコミュニケーションを図りながら進めていく手法です。
短いサイクルを繰り返して開発を進めるため、仕様変更に柔軟に対応することができます。
また、役割が明確になるので効率的にタスクをこなせる、PDCAサイクルを回して徐々にスクラム開発自体の精度を向上させることも可能です。
本記事の内容を参考に、スクラム開発の概要を理解し、顧客の要望に寄り添ったプロダクトの開発にお役立てください。