- マネジメント
スプリントプランニングの進め方|アジェンダとスプリントゴール例
スプリントプランニングとは、スプリントの最初に、スクラムチーム全員でそのスプリントの作業を計画するイベントです。 スクラムガイド2020は、扱うトピックを「なぜこのスプリントに価値があるのか(Why)」「このスプリントで何ができるのか(What)」「選んだ作業をどう成し遂げるのか(How)」の3つとしています。
この記事は当日の進行手順に絞り、分単位のアジェンダ、スプリントゴールの例10組、スプリントバックログのテンプレート、取り込み量を決める計算を示します。題材は架空の会議室予約アプリです。
確認環境:Ubuntu 24.04、Python 3.11(キャパシティと取り込み量の計算を実行)。イベントの定義はスクラムガイド2020(scrumguides.org)を今回開いて確認しました。
スプリントプランニングの早見表
| 知りたいこと | 答え |
|---|---|
| いつ行うか | スプリントの最初 |
| 参加者 | スクラムチーム全員(プロダクトオーナー、スクラムマスター、開発者)。助言のためにほかの人を招いてもよい |
| 長さの上限 | 1か月スプリントで最大8時間。短いスプリントでは、たいていもっと短い |
| よく使われる目安 | 2週間スプリントで4時間以内、1週間スプリントで2時間以内(上限を期間に比例させた値) |
| トピック1(Why) | プロダクトオーナーが価値の高め方を提案し、全員でスプリントゴールを決める |
| トピック2(What) | 開発者がプロダクトオーナーと話し合い、プロダクトバックログから項目を選ぶ |
| トピック3(How) | 開発者が、選んだ項目を完成させるための作業を計画する。1日以内の作業に分けることが多い |
| 持ち込むもの | 並べ替え済みのプロダクトバックログ、直近のベロシティ、今回のキャパシティ、完成の定義 |
| 終わったときにあるもの | スプリントバックログ(スプリントゴール+選んだ項目+届けるための計画) |
| ゴールを決める期限 | スプリントプランニングが終わるまでに確定させる |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「スプリントプランニングの進め方|アジェンダとスプリントゴール例」
始める前にそろえるもの
当日の時間は、準備でほぼ決まります。前日までに次の5つを確かめます。
| そろえるもの | 用意する人 | 確かめること |
|---|---|---|
| プロダクトバックログ | プロダクトオーナー | 上位の項目に受け入れ基準と見積もりがあり、1スプリントで完成できる大きさになっている |
| スプリントゴールの案 | プロダクトオーナー | 1文で言える案を1〜2つ持ってくる。決めるのは当日、全員で |
| 直近のベロシティ | スクラムマスターまたは開発者 | 直近3スプリントの、完成したポイント |
| 今回のキャパシティ | 開発者 | 休暇、祝日、ほかの用事で使えない日 |
| 完成の定義 | スクラムチーム | 変更があれば共有しておく |
Why・What・Howに沿ったアジェンダ
長さの目安は、ガイドの上限(1か月で8時間)を期間に比例させたものです。ガイドが定めているのは上限と3つのトピックで、分単位の配分はよく使われる進め方の一例です。
2週間スプリント(240分)
| 時間 | トピック | 内容 | 進める人 | 出てくるもの |
|---|---|---|---|---|
| 0〜10分 | 準備 | 前回のレビューと振り返りの要点、今回のキャパシティの確認 | スクラムマスター | 使える人日 |
| 10〜30分 | Why | プロダクトオーナーが、今回高めたい価値とゴールの案を話す | プロダクトオーナー | ゴールの案 |
| 30〜50分 | Why | 質問と話し合い。ゴールを1文にまとめる | 全員 | スプリントゴール(仮) |
| 50〜60分 | 休憩 | ― | ― | ― |
| 60〜100分 | What | ゴールに効く項目を上から順に確認し、受け入れ基準を読み合わせる | プロダクトオーナー、開発者 | 候補の項目 |
| 100〜130分 | What | ベロシティとキャパシティに照らして取り込む量を決める | 開発者 | 選んだ項目 |
| 130〜140分 | 休憩 | ― | ― | ― |
| 140〜210分 | How | 項目ごとにタスクへ分け、時間を見積もる。最初の数日分を優先する | 開発者 | タスクの一覧 |
| 210〜225分 | How | タスクの合計とキャパシティを比べ、多ければ項目を戻す | 開発者、プロダクトオーナー | 調整後の項目 |
| 225〜240分 | まとめ | ゴールを確定し、全員で読み上げる。気がかりを出し切る | スクラムマスター | スプリントバックログ |
1週間スプリント(120分)
| 時間 | トピック | 内容 | 進める人 | 出てくるもの |
|---|---|---|---|---|
| 0〜5分 | 準備 | 今回のキャパシティの確認 | スクラムマスター | 使える人日 |
| 5〜25分 | Why | ゴールの案の説明と話し合い。1文にまとめる | プロダクトオーナー、全員 | スプリントゴール(仮) |
| 25〜55分 | What | 上位の項目を確認し、取り込む量を決める | プロダクトオーナー、開発者 | 選んだ項目 |
| 55〜60分 | 休憩 | ― | ― | ― |
| 60〜105分 | How | タスクへ分け、時間を見積もる | 開発者 | タスクの一覧 |
| 105〜115分 | How | 合計とキャパシティを比べて調整する | 開発者、プロダクトオーナー | 調整後の項目 |
| 115〜120分 | まとめ | ゴールを確定して読み上げる | スクラムマスター | スプリントバックログ |
タブ区切りです(2週間スプリント用)。
開始(分) 終了(分) トピック 内容 進める人 出てくるもの
0 10 準備 前回の要点と今回のキャパシティの確認 スクラムマスター 使える人日
10 30 Why 今回高めたい価値とゴールの案の説明 プロダクトオーナー ゴールの案
30 50 Why 話し合い。ゴールを1文にまとめる 全員 スプリントゴール(仮)
50 60 休憩
60 100 What 上位の項目と受け入れ基準の読み合わせ プロダクトオーナー、開発者 候補の項目
100 130 What 取り込む量を決める 開発者 選んだ項目
130 140 休憩
140 210 How タスクへ分けて時間を見積もる 開発者 タスクの一覧
210 225 How 合計とキャパシティを比べて調整する 開発者、プロダクトオーナー 調整後の項目
225 240 まとめ ゴールを確定して読み上げる スクラムマスター スプリントバックログ
Whyから始めるのが要点です。項目を先に選んでからゴールを書くと、ゴールが「選んだ項目の一覧の言い換え」になりやすく、スプリント中の判断のよりどころになりません。
スプリントゴールの良い例・直したい例(10組)
スプリントゴールは、そのスプリントのただ1つの目的です。ガイドは、ゴールが一貫性と集中を生み、チームが別々の取り組みに分かれず一緒に働くことを促すとしています。次の4点を満たすと使いやすくなります。
- 1文で言える
- 利用者や事業にとっての変化が書いてある
- スプリントレビューで、達成できたかを確かめられる
- 項目の一部を入れ替えても成り立つ(実現の方法に余地がある)
| No. | 直したい例 | 良い例 | 直したところ |
|---|---|---|---|
| 1 | PB-07・PB-08・PB-16を完了する | 予約したあとの変更と確認を、利用者が自分だけで済ませられる | IDの列挙を、利用者にとっての変化に |
| 2 | 予約機能を改善する | 空き検索から予約確定までを3画面以内で終えられる | 「改善」を、確かめられる状態に |
| 3 | できるだけ多くの項目を終わらせる | 使われない予約枠が、開始15分後に自動で空きに戻る | 量の目標を、1つの成果に |
| 4 | カレンダー表示を実装する | 1週間の空き状況を1画面で見て、そのまま予約へ進める | 作るものを、できるようになることに |
| 5 | 通知・絞り込み・スマートフォン対応を進める | 席を離れていても、スマートフォンだけで予約を完了できる | 3つの並列を、1つの目的に |
| 6 | テストコードを増やす | 予約の確定と取り消しを自動テストで守り、安心して変更できる | 手段を、得られる状態に |
| 7 | 不具合を直す | 重複予約に関する問い合わせの原因3件を解消する | 範囲と件数をはっきりと |
| 8 | 管理画面を作る | 管理者が、開発者に頼まずに会議室を追加・変更できる | 画面名を、だれが何をできるかに |
| 9 | 繰り返し予約の調査をする | 繰り返し予約で一部が埋まっている場合の扱いを決め、次回に着手できる | 調査を、決まることに |
| 10 | 性能を上げる | 空き検索の結果が、会議室50室でも1秒以内に表示される | 「上げる」を、数値のある状態に |
穴埋めの型も置いておきます。
このスプリントでは、[だれ]が[何をできる/どういう状態になる]ようにする。
達成は[スプリントレビューで見せるもの・測る値]で確かめる。
スプリント中に作業が見込みと違ってきたら、開発者はプロダクトオーナーと話し合い、ゴールに影響を与えない形でスプリントバックログの範囲を調整します。ゴールが項目の列挙だと、この調整ができなくなります。
取り込む量を決める:キャパシティとベロシティの計算(Python)
Whatで「どこまで選ぶか」を決める材料は2つです。ガイドも、過去の成果、今回のキャパシティ、完成の定義を理解するほど、開発者は予測に自信を持てるとしています。
- ベロシティ:直近のスプリントで完成したポイント。項目を選ぶ上限の目安にする
- キャパシティ:今回使える時間。タスクに分けたあとの検算に使う
キャパシティは次の式で出します。集中係数は、1日のうち割り込みや連絡を除いてスプリントの作業に充てられる割合で、ここでは例として0.7を置いています。
作業に使える時間 =(人数 × 日数 − 休暇の人日)× 1日の時間 × 集中係数 − イベント時間 × 人数
取り込みの目安(ポイント)= 直近3回の平均ベロシティ ×(今回の人日 ÷ いつもの人日)
# sprint_capacity.py キャパシティと直近ベロシティから、スプリントに取り込む量を決める
import statistics
def capacity_hours(members, days, leave_days, hours_per_day, focus, event_hours):
"""(人数×日数−休暇)×1日の時間×集中係数 − イベント時間×人数"""
person_days = members * days - leave_days
gross = person_days * hours_per_day * focus
events = event_hours * members
return person_days, gross, events, gross - events
# スプリントのイベントに使う時間(1人あたり、時間)
EVENTS_2W = {"プランニング": 4.0, "デイリースクラム": 0.25 * 9, "レビュー": 2.0,
"レトロスペクティブ": 1.5, "リファインメント": 4.0}
EVENTS_1W = {"プランニング": 2.0, "デイリースクラム": 0.25 * 4, "レビュー": 1.0,
"レトロスペクティブ": 0.75, "リファインメント": 2.0}
velocities = [21, 18, 25, 19, 23, 20] # 直近6スプリント(2週間、休暇なし=50人日)
recent3 = statistics.mean(velocities[-3:])
normal_person_days = 5 * 10
print("== 2週間スプリント(開発者5人・10日・休暇3人日)==")
pd, gross, ev, net = capacity_hours(5, 10, 3, 8, 0.7, sum(EVENTS_2W.values()))
print(f"人日 {pd} / 集中係数を掛けた時間 {gross:.1f}h / イベント {ev:.2f}h / 作業に使える時間 {net:.2f}h")
limit = recent3 * pd / normal_person_days
print(f"直近3回の平均ベロシティ {recent3:.1f} × ({pd} ÷ {normal_person_days}) = 取り込みの目安 {limit:.1f} ポイント")
# 並び順どおりのプロダクトバックログ(ID, ポイント, タスクに分けた見積もり時間)
ordered = [("PB-07", 5, 45), ("PB-08", 3, 28), ("PB-16", 3, 26), ("PB-11", 8, 70),
("PB-09", 8, 72), ("PB-13", 5, 44)]
points = hours = 0
print("ID ポイント 累計ポイント 時間 累計時間 判定")
for id_, p, h in ordered:
ok = points + p <= limit and hours + h <= net
if ok:
points += p
hours += h
print(f"{id_} {p:>6} {points if ok else points + p:>10} {h:>6} {hours if ok else hours + h:>7} "
f"{'取り込む' if ok else '次回以降'}")
print(f"取り込み {points} ポイント / {hours}h(作業に使える時間の {hours / net:.0%})")
print()
print("== 1週間スプリント(開発者4人・5日・休暇1人日)==")
pd, gross, ev, net = capacity_hours(4, 5, 1, 8, 0.7, sum(EVENTS_1W.values()))
print(f"人日 {pd} / 集中係数を掛けた時間 {gross:.1f}h / イベント {ev:.2f}h / 作業に使える時間 {net:.2f}h")
v1 = statistics.mean([9, 11, 10])
print(f"直近3回の平均ベロシティ {v1:.1f} × ({pd} ÷ 20) = 取り込みの目安 {v1 * pd / 20:.1f} ポイント")
実行結果です。
== 2週間スプリント(開発者5人・10日・休暇3人日)==
人日 47 / 集中係数を掛けた時間 263.2h / イベント 68.75h / 作業に使える時間 194.45h
直近3回の平均ベロシティ 20.7 × (47 ÷ 50) = 取り込みの目安 19.4 ポイント
ID ポイント 累計ポイント 時間 累計時間 判定
PB-07 5 5 45 45 取り込む
PB-08 3 8 28 73 取り込む
PB-16 3 11 26 99 取り込む
PB-11 8 19 70 169 取り込む
PB-09 8 27 72 241 次回以降
PB-13 5 24 44 213 次回以降
取り込み 19 ポイント / 169h(作業に使える時間の 87%)
== 1週間スプリント(開発者4人・5日・休暇1人日)==
人日 19 / 集中係数を掛けた時間 106.4h / イベント 27.00h / 作業に使える時間 79.40h
直近3回の平均ベロシティ 10.0 × (19 ÷ 20) = 取り込みの目安 9.5 ポイント
読み方は次のとおりです。
- 2週間スプリントでは、休暇が3人日あるため、目安は20.7から19.4ポイントに下がります。
- 上から順に入れると、4件で19ポイントになります。5件目のPB-09(8ポイント)を足すと27ポイント・241時間となり、ポイントの目安も時間も超えるので次回以降に回します。
- 6件目のPB-13(5ポイント)も24ポイント・213時間で収まりません。小さい項目を飛ばして詰め込むより、ゴールに効くかどうかで判断します。
- 取り込んだ4件のタスクは合計169時間で、使える時間の87%です。残りの1割強は、見積もりのずれと割り込みへの備えとして空けておきます。
- イベントの時間は1人あたり13.75時間(2週間)で、5人では68.75時間になります。式から引き忘れると、その分だけ多く取り込んでしまいます。
1週間スプリントの例では、1人日の休暇で目安が10.0から9.5ポイントになりました。期間が短いほど、1日の休みの影響が大きく出ます。
スプリントバックログのテンプレート(タブ区切り)
スプリントバックログは、スプリントゴール(Why)、選んだ項目(What)、届けるための計画(How)の3つでできています。開発者による、開発者のための計画で、スプリント中も学んだことに合わせて更新します。
1行目にゴールを書き、その下に項目とタスクを並べます。
スプリント S-07(10/5〜10/16)
スプリントゴール 予約したあとの変更と確認を、利用者が自分だけで済ませられる
項目ID 項目 ポイント タスク 担当 見積もり(h) 残り(h) 状態
PB-07 予約の時刻を変更する 5 変更画面を作る 12 12 未着手
PB-07 予約の時刻を変更する 5 変更の処理を作る(空き確認を含む) 14 14 未着手
PB-07 予約の時刻を変更する 5 埋まっている枠を選べない表示にする 7 7 未着手
PB-07 予約の時刻を変更する 5 自動テストとレビュー 12 12 未着手
PB-08 開始10分前に通知を受け取る 3 通知の送信処理を作る 12 12 未着手
PB-08 開始10分前に通知を受け取る 3 取り消し済みを対象から外す 6 6 未着手
PB-08 開始10分前に通知を受け取る 3 メール文面と自動テスト 10 10 未着手
PB-16 定員と設備で絞り込む 3 絞り込み条件の画面を作る 10 10 未着手
PB-16 定員と設備で絞り込む 3 検索処理に条件を足す 8 8 未着手
PB-16 定員と設備で絞り込む 3 自動テストとレビュー 8 8 未着手
PB-11 カレンダー表示で空きを見る 8 週表示の画面を作る 28 28 未着手
PB-11 カレンダー表示で空きを見る 8 週単位で空きを返す処理を作る 18 18 未着手
PB-11 カレンダー表示で空きを見る 8 マスから予約へ進む導線を作る 10 10 未着手
PB-11 カレンダー表示で空きを見る 8 自動テストとレビュー 14 14 未着手
タスクの見積もりは、PB-07が45時間、PB-08が28時間、PB-16が26時間、PB-11が70時間で、合計169時間です。上の計算の値と一致します。
| 列 | 使い方 |
|---|---|
| 担当 | プランニングでは空欄でよい。着手するときに本人が入れる |
| 見積もり(h) | Howで付けた時間。あとから書き換えない |
| 残り(h) | 毎日更新する。合計がバーンダウンチャートの元データになる |
| 状態 | 未着手/作業中/レビュー中/完了 |
タスクは1日以内で終わる大きさにすると、デイリースクラムで進み具合が見えます。全部を当日に分け切る必要はなく、最初の数日分が分かれていれば始められます。
当日つまずきやすい点と直し方
| 起きること | 直し方 |
|---|---|
| 項目の説明と質問で時間を使い切る | リファインメントで受け入れ基準と見積もりを済ませておく |
| ゴールが最後まで決まらない | プロダクトオーナーが案を持ってくる。Whyを最初に置く |
| プロダクトオーナーが量を決めてしまう | 何をどれだけ選ぶかは開発者が決める。プロダクトオーナーは価値と順番を説明する |
| ベロシティより多く取り込む | 直近3回の平均を上限の目安にし、休暇の分を割り引く |
| Howが時間切れで省かれる | アジェンダで時間を確保する。最初の数日分を優先して分ける |
| タスクの合計が使える時間を超える | 項目を1つ戻し、ゴールが成り立つかを確かめる |
| 途中で項目を足すよう頼まれる | ゴールに影響するかで判断し、プロダクトオーナーと開発者で話し合う |
よくある質問
Q. スプリントプランニングとリファインメントの違いは何ですか? A. リファインメントは、先のスプリントに向けて項目を分割・詳細化・見積もりする継続的な活動です。スプリントプランニングは、今回のスプリントのゴールと項目、作業の計画を決めるイベントです。リファインメントが済んでいるほど、プランニングは短く終わります。
Q. 第1部・第2部に分けるやり方とは違うのですか? A. スクラムガイド2020が挙げるトピックは、Why・What・Howの3つです。第1部(Why・What)と第2部(How)のように2つに分けて運営しても、3つのトピックを扱っていれば同じ内容になります。
Q. スプリントゴールは途中で変えられますか? A. ゴールを危うくする変更はスプリント中に行いません。変えるのは項目やタスクの範囲で、ゴールはそのままにします。ゴールが意味を持たなくなった場合は、プロダクトオーナーがスプリントを中止できます。
Q. 取り込んだ項目が終わらなかったらどうしますか? A. 完成の定義を満たさなかった項目はプロダクトバックログに戻し、プロダクトオーナーが順番を見直します。ベロシティには数えません。次のプランニングで、あらためて選ぶかどうかを決めます。
まとめ
- スプリントプランニングは、Why・What・Howの3つのトピックを順に扱います。
- 長さは1か月で最大8時間。2週間なら4時間以内、1週間なら2時間以内が目安です。
- スプリントゴールは1文で、利用者にとっての変化を書きます。項目のIDの列挙にしません。
- 取り込む量は直近3回の平均ベロシティを目安にし、休暇の分を割り引きます。
- タスクに分けたら、キャパシティ(イベント時間を引いた値)で検算します。
- スプリントバックログはゴール・選んだ項目・計画の3つをそろえ、毎日更新します。
参考
- スクラムガイド2020(Ken Schwaber、Jeff Sutherland): https://scrumguides.org/scrum-guide.html
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「スプリントプランニングの進め方|アジェンダとスプリントゴール例」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。