Part6ではスクラムの実践編をお届けする。スクラムはXPに比べてルールが少ないが,いったん決めたルールは必ず守るという厳格さに特徴がある。開発方針や実装技術を決める際には,スクラム・チームの意向が何よりも尊重される。こうした独特の考え方を理解することが,スクラムによるプロジェクト成功への近道だ。

 Part5ではスクラムの基本的な考え方や開発の流れを解説した。読者もお気付きだと思うが,Part3とPart4で紹介したXP(eXtreme Programming)と比べても,スクラムは非常にシンプルで,ルールや決まりごとが少ない。これは,開発の実働部隊であるスクラム・チームの自己責任と自主性を重視しているためであり,開発の進め方もチームのメンバーが自主的に決める。

 スクラムではルールが少なく自由度が高い一方で,いったん決めたルールに関しては厳格に運用することが求められる。こうしたシンプルさと厳格さを両立させることが,スクラムによるソフトウエア開発を成功させるカギである。

 そこでPart6では,スクラムのシンプルさに隠された意図や,スクラムを実際のシステム開発プロジェクトに適用する場合に心掛けるべき勘どころなどを解説する。

定義した要件を柔軟に変更

 Part5で説明したように,スクラムにおけるプロジェクトの構成要員は,プロジェクト・マネジャーに相当する「スクラム・マスター」,ユーザー側の代表者である「プロダクト・オーナー」,実働部隊である「スクラム・チーム」に大別される。プロジェクトを開始する際には,まずユーザーの要求や開発する機能をまとめたリストである「プロダクト・バックログ」を作成する。さらに,プロダクト・バックログに記載した個々の要求や機能(これらを以下では「項目」と呼ぶ)を実現するための具体的な作業(タスク)を列挙したリスト「スプリント・バックログ」を作成する。そしてスプリント・バックログの内容を,ひとまとまりの開発作業の単位である「スプリント」(期間は30日)を通して実装していく。以下では,この流れに沿って,実践のポイントを見ていこう。

 プロダクト・バックログを作成する作業に,冒頭で述べたスクラムの自由度と厳格さを見ることができる。自由度とは,プロジェクトの構成要員であるプロダクト・オーナーやスクラム・マスター,スクラム・チームが,プロジェクトの期間中,いつでも項目を追加,変更できることを指す。また,1つのスプリントを終えたら,開発しきれなかった機能や新たに追加された要求などを加えて,プロダクト・バックログの内容を更新する。

 一方の厳格さとは,「優先順位決定者はプロダクト・オーナーただ1人」と明確に規定していることだ。スクラム・マスターやスクラム・チームのメンバーはプロダクト・バックログの内容を追加することはできるが,開発の優先順位を決定できるのはプロダクト・オーナーだけである。決定者が複数いると,誰の言うことが正しいのか,何を優先すべきなのかが分からなくなり,プロジェクト自体の方向性があいまいになりがちだからだ。

 とは言え,プロダクト・オーナーだけで,開発の優先順位を判断できるわけではない。プロダクト・オーナーが優先順位の最終決定者であることは間違いないが,決定する過程では,スクラム・マスターやスクラム・チームが適宜意見を述べて,優先順位の決定を支援する必要がある。

複数の視点で優先度を決定

 ところで,プロダクト・バックログに記載する項目は,それぞれ立場が違う人たちが列挙したもので,1つひとつの粒度も異なる。それらの項目に,どうやって優先順位をつければよいのだろうか。

 基本的には,ユーザーのニーズが高いものほど,優先順位も高くなる。このほかに,優先順位を決定するための要素を,図1に示した。

図1●「プロダクト・バックログ」の優先順位を決定する要素
図1●「プロダクト・バックログ」の優先順位を決定する要素
原則として,ユーザーのニーズが高い項目ほど優先順位も高くするが,それ以外にもいくつかの要素を考慮する必要がある

 第1は,現在のスクラム・チームのメンバーの実力である。メンバーのスキルや経験から,検討対象の項目の難易度を判断する。2つ目は,技術的な難易度である。現在の技術/製品動向に照らして,どのくらい難しいか,あるいは先進的かを考慮する。

 3つ目は「項目間の依存関係」だ。これは検討対象の機能が,他の機能をどれくらい利用しているか,前提となる作業がどれくらいあるかを指す。他の多くの機能が利用する共通的な機能ほど,優先順位が高くなる。

 このほか,ユーザーにもたらされる利益や,内容自体の実現可能性も,当然ながら考慮する必要がある。感覚的でかまわないので,利益なら金額,実現可能性なら%と,できるだけ具体的に示すことが重要だ。利益と実現可能性を掛けた結果を基に,優先順位を決めることもある。