# 複数チームのプロジェクト計画
## 定義
複数チームのプロジェクト計画とは、単一チームを前提にしたリリース計画・イテレーション計画づくりに対して、複数の少人数チーム(アジャイルチームは典型的に7〜10名)が1つのプロジェクトに関わる際に追加で必要になる調整の技法群を指す。原本は次の4つを挙げる。(1)共有できる見積り基準の確立、(2)早い段階でのユーザーストーリーの詳細化、(3)先を見越した計画づくり(移動する先読み範囲)、(4)合流バッファを取り入れた計画。すべてのプロジェクトに全テクニックが必要なわけではなく、サブチーム数とチーム間連携の頻度・密度に応じて、(1)から順に必要最小限だけ段階的に導入すればよいとされる。(Source: [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 18 複数チーム編成プロジェクトの計画づくり]] p.215)
- **共有できる見積り基準の確立**: 見積り単位(ストーリーポイントか理想日か)を各チームに個別に選ばせると、同じストーリーをあるチームが20ポイント、別のチームが100ポイントと見積もるような事態が起こり、プロジェクト全体の期間見積りが困難になる。これを避けるため、プロジェクト開始時点で全チームが集まって見積り単位を1つに統一し、チーム間で見積りが近くなるよう基準となるストーリー群を作る。確立の方法は2通りある。1つ目はチームが過去に同じプロジェクトで働いたことがある場合に使える方法で、過去のユーザーストーリーの中から1理想日相当・2理想日相当…に該当するものを2〜3件ずつ選び認識を合わせる(20ストーリー程度で基準として十分)。2つ目は次のリリース対象のストーリーからさまざまな大きさのものを選び、プロジェクトチーム全員(難しければ各チームの代表)で協力して見積もる。基準が確立できたら、各チームはその基準と比較する「対比で見積もる」方法で個別にストーリーを見積もっていける。(Source: [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 18 複数チーム編成プロジェクトの計画づくり]] §1)
- **早い段階でのユーザーストーリーの詳細化**: 単一チームならイテレーション内で曖昧な要求を動作するソフトウェアへ変換できるが、複数チームでは事前にストーリーの内容を検討しておいたほうがチーム間の作業調整に役立つ。最も有用な準備作業は、次回以降のイテレーションで開発予定のストーリーについてプロダクトオーナーの満足条件をはっきりさせることである。(Source: [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 18 複数チーム編成プロジェクトの計画づくり]] §2)
- **先を見越した計画づくり(移動する先読み範囲, rolling lookahead window)**: リリース計画・イテレーション計画が常に未来の数イテレーション分の詳細だけを保つように保守する考え方。イテレーションが完了するたびにその詳細を計画から取り除くため、計画は常に未来の一定範囲だけを詳細に示す「移動する」窓になる(ラウファーの言う「未来の垣間見」)。まずユーザーストーリーをイテレーションとチームに割り振り、チーム間の重要な依存関係を洗い出したうえで、依存関係のあるイテレーションをまたいだ作業の引き継ぎは、イテレーションの最中よりも完了時点でおこなうほうが安全とされる。複数チーム間の連携が必要な場合、リリース計画は2〜3イテレーションごとに更新する必要がある。(Source: [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 18 複数チーム編成プロジェクトの計画づくり]] §3)
- **合流バッファを取り入れた計画(feeding buffer)**: 「移動する先読み範囲」による計画で対応できない、複雑・頻繁なチーム間の相互依存が残る場合の技法。まず依存関係そのものを減らせないか(担当チームの交換、成果物の部分受け取りでの着手可否)を検討し、それでも解消できない重要な依存関係にだけ、提供側チームの作業に合流バッファを追加する。合流バッファの大きさは、依存関係の対象ストーリー数が少ないため17章の二乗和平方根法ではなく、依存関係の原因となるストーリーの大きさの一定割合(目安は50%)で決めることが多い。1イテレーションを超える長さの合流バッファが有効に機能することは稀である。(Source: [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 18 複数チーム編成プロジェクトの計画づくり]] §4, §4-1, §4-2)
## 横断的知見
- 13章「リリース計画づくりの基本」の標準手順は単一チームを前提とし、リリース計画の更新頻度を「ベロシティが安定していれば4〜6週間は公式更新不要」とし、詳細化の粒度についても「最初の3イテレーション程度だけ事前にフィーチャを割り振り、残りはひとまとめにする」折衷案を示すにとどまる(13章§1-6, §2)。18章はこれを複数チーム前提に拡張し、更新頻度をより短い「2〜3イテレーションごと」に狭め、詳細化の対象をチーム間依存関係の整理に絞った「移動する先読み範囲」という明示的な名前を持つ技法として定式化している。13章の折衷案が暗黙に持っていた「事前詳細化と情報の鮮度のトレードオフ」を、18章はチーム数が増えるほど更新頻度を上げる必要があるという形で具体化したと読める。(Source: [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 13 リリース計画づくりの基本]] §1-6, §2, [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 18 複数チーム編成プロジェクトの計画づくり]] §3)
- 17章のスケジュールバッファと18章の合流バッファは、どちらも見積り誤差を吸収する「バッファ」だが、算出方法の前提が異なる。17章の二乗和平方根法は個々のストーリーの見積り誤差が統計的にならされることを利用する手法であり、最低でも10件以上のユーザーストーリーがあることを前提とする。18章の合流バッファは、チーム間の依存関係が生じるのは通常ごく一部のストーリー・フィーチャに限られるため、二乗和平方根法を使うにはサンプル数が不足することが多く、依存対象ストーリーの大きさの一定割合(目安50%)という別の算出方法を採用している。同じ「バッファ」という語でも、対象とする不確実性の粒度(プロジェクト全体 対 個別の依存関係)によって算出方法を使い分けている点が18章で明示されている。(Source: [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 17 不確実性に備えるバッファの計画]], [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 18 複数チーム編成プロジェクトの計画づくり]] §4-2)
- SwimStatsは13章・7章・16章を通じて一貫してプログラマ・データベース管理者・テスターの3名からなる単一チームの例題として使われ、13章のリリース計画は8ストーリー・合計41ストーリーポイントに収まっていた。18章は同じSwimStatsを2チーム編成に拡張し、開発当初のユーザーストーリー一覧(表18.1、7ストーリー・合計110ストーリーポイント)を新たに示す。同一の教材を単一チーム版と複数チーム版の両方で使い分けることで、プロジェクト規模の違いが計画づくりに要求する技法(13章の標準6ステップのみ 対 18章の4つの追加テクニック)の差を具体的に対比させている。(Source: [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 13 リリース計画づくりの基本]] §3, [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 18 複数チーム編成プロジェクトの計画づくり]] §3, 表18.1)
## 未解決の問い
- 移動する先読み範囲の更新頻度(2〜3イテレーションごと)は、チーム数が3以上に増えた場合にどう変わるか。原本は2チームの例のみを示し、3チーム以上での依存関係整理の具体例を示していない。
- 合流バッファのサイズ目安である「ストーリーの大きさの50%」は、どのような条件下で妥当と判断できるかの定量的根拠が原本では明示されていない。最終的な大きさをチームがどう判断すべきかも「チームが判断する」以上には述べられていない。
- 共有できる見積り基準を確立する2つの方法(過去ストーリーとの比較/新規ストーリーの協働見積り)のうち、どちらを選ぶべきかの判断基準は「チームが過去に同じプロジェクトで働いたことがあるか」以外に原本で示されているか。
- 複数チーム編成プロジェクトにおいて、19章「リリース計画のモニタリング」で扱うモニタリング手法はチーム間の依存関係の遅延をどう検知するか。18章はモニタリングの技法自体には触れていない。
## 関連
- concept: [[リリース計画づくり]] / [[プロジェクトバッファ]]
- 実体: [[SwimStats]]
- 書籍: [[wiki/entities/アジャイルな見積りと計画づくり|アジャイルな見積りと計画づくり]]
- source: [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 18 複数チーム編成プロジェクトの計画づくり]] / [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 13 リリース計画づくりの基本]] / [[@2009__Mynavi__アジャイルな見積りと計画づくり - Chapter 17 不確実性に備えるバッファの計画]]
## 出典
- Mike Cohn 著, 安井力・角谷信太郎 監訳, 『アジャイルな見積りと計画づくり』, マイナビ, 2009, 13章・17章・18章.