ストーリーポイントとは、バックログ項目の大きさを「基準にした項目の何倍か」で表す相対的な見積もりの単位です。 時間や人日ではなく、複雑さ・不確実性・作業量をまとめて1つの数にします。

この記事では、チームでそのまま使える基準表、基準ストーリーの決め方、プランニングポーカーの進行台本、ベロシティを使った予測の計算(Pythonの出力つき)を示します。題材は架空の会議室予約アプリです。

確認環境:Ubuntu 24.04、Python 3.11(ベロシティの予測計算を実行)。スクラムガイド2020(scrumguides.org)を今回開いて確認したところ、ストーリーポイント・ベロシティ・プランニングポーカーという語は載っていません。ガイドが定めているのは「作業をする開発者が大きさを決める」ことで、この記事の内容はその上でよく使われるやり方です。

ストーリーポイントの早見表

知りたいこと 答え
何を表すか 項目の相対的な大きさ(複雑さ・不確実性・作業量の合計)
使う数 1・2・3・5・8・13(フィボナッチ数列)。13を超えたら分割する
なぜ飛び飛びの数か 大きいものほど見立ての幅が広がるため、細かい差を議論しないで済む
だれが付けるか 作業をする開発者の全員
いつ付けるか リファインメント。スプリントプランニングまでに済ませる
どう付けるか 基準ストーリーと比べ、プランニングポーカーで同時に出す
何に使うか ベロシティ(1スプリントで完成したポイントの合計)と合わせて、取り込む量と見通しを決める
時間との違い 人によって変わらない。だれが担当しても同じ数になる
避けたい使い方 時間への固定換算、個人の評価、チーム間の比較

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「ストーリーポイントの見積もり方|基準表とプランニングポーカー手順」

ポイントの基準表(1・2・3・5・8・13)

3つの観点のうち、いちばん大きく当てはまる行を選びます。複雑さは2相当でも、不確実性が5相当なら5です。

ポイント 複雑さ 不確実性 作業量 会議室予約アプリでの例
1 変更は1か所。判断の分かれ目がない やることが全部わかっている 文言・設定値の変更程度 予約完了画面の文言を直す
2 既存の処理に1つ足す 似た作業をしたことがある 画面か処理のどちらか1つ よく使う部屋をお気に入りにする
3 画面と処理の両方に手が入る。条件分岐が少し 不明点は質問1〜2回で解ける 画面1つ+処理1つ+テスト 予約を取り消す(基準ストーリー)
5 条件分岐が複数。ほかの機能と関わる 進めながら決めることが1つある 画面2つ前後、または処理が複数 予約の時刻を変更する
8 複数の機能にまたがる。データの持ち方に手が入る 初めて使う仕組みが1つある 画面・処理・データのすべて 備品を会議室と一緒に予約する
13 全体の設計に影響する やってみないとわからない点が複数ある 1スプリントの大半を使う 毎週の定例を繰り返し予約する
13超 ― ― ― 分割するか、調査の項目を先に切り出す

タブ区切りです。例の列を自分たちのプロダクトの項目に書き換えて使います。

ポイント    複雑さ 不確実性    作業量 自分たちの例
1   変更は1か所。判断の分かれ目がない   やることが全部わかっている   文言・設定値の変更程度 
2   既存の処理に1つ足す  似た作業をしたことがある    画面か処理のどちらか1つ    
3   画面と処理の両方に手が入る。条件分岐が少し   不明点は質問1〜2回で解ける  画面1つ+処理1つ+テスト   
5   条件分岐が複数。ほかの機能と関わる   進めながら決めることが1つある 画面2つ前後、または処理が複数 
8   複数の機能にまたがる。データの持ち方に手が入る 初めて使う仕組みが1つある   画面・処理・データのすべて   
13  全体の設計に影響する  やってみないとわからない点が複数ある  1スプリントの大半を使う    

ポイントには、実装だけでなく完成の定義を満たすまでの作業すべて(テスト、レビュー、ドキュメントの更新など)を含めます。

基準ストーリーの決め方(記入例つき)

基準表の言葉だけでは人によって受け取り方がずれます。全員が中身を知っている項目を「これが3」と決めて、ものさしにします。

  1. 完成済み、または内容がよくわかっている項目を5〜8件選ぶ
  2. 小さい順に左から並べる(数字はまだ付けない)
  3. 真ん中あたりの、全員が作業を思い描ける項目を「3」にする
  4. その半分くらいを「1〜2」、2倍弱を「5」、3倍弱を「8」と置いていく
  5. 各ポイントに1件ずつ基準ストーリーを決め、表に残す

記入例です。

ポイント 基準ストーリー この数にした理由
1 予約完了画面の文言を直す 変更は1か所で、確かめるのは表示だけ
2 よく使う部屋をお気に入りにする 登録と表示順の変更。似た一覧の処理がすでにある
3 予約を取り消す 画面のボタン、取り消しの処理、枠を空きに戻す確認の3つ
5 予約の時刻を変更する 取り消しの2倍弱。変更先の空き確認と、埋まっているときの表示が加わる
8 備品を会議室と一緒に予約する 予約のデータに備品を持たせる変更があり、備品側の空き確認も要る
13 毎週の定例を繰り返し予約する 一部の回が埋まっている場合の扱いが決まっておらず、影響範囲が広い

基準ストーリーは、ベロシティが落ち着くまで入れ替えないのがこつです。ものさしが変わると、過去のベロシティと比べられなくなります。

プランニングポーカーの手順と進行台本

プランニングポーカーは、全員が同時に数字を出して、差が出たところを話し合う見積もりの進め方です。先に出た数字に引っ張られるのを防げます。

手順 すること 目安の時間
1 プロダクトオーナーが項目と受け入れ基準を読み上げる 1分
2 開発者が質問する 2分
3 各自がカードを選び、伏せて置く 30秒
4 合図で同時に開く ―
5 いちばん大きい数と小さい数を出した人が理由を話す 2分
6 もう一度同時に出す。そろったら決定 1分
7 3ラウンドでそろわなければ、大きいほうを採るか、調査を切り出す ―

オンラインでは、チャット欄に数字を入力しておき、合図で同時に送信すれば同じことができます。

進行台本:PB-07「予約の時刻を変更する」

登場するのは、進行役(スクラムマスター)、プロダクトオーナー(PO)、開発者A・B・C・Dです。

ラウンド1

  • 進行役「次はPB-07です。POから説明をお願いします」
  • PO「予約済みの会議の時刻を変更できるようにします。受け入れ基準は、空いている枠へ変更できること、埋まっている枠は選べないことの2つです」
  • 開発者B「部屋の変更も含みますか」
  • PO「今回は時刻だけです。部屋の変更は別の項目にします」
  • 進行役「ほかに質問がなければ、カードを選んでください。……せーの」
  • (A:3、B:5、C:5、D:8)
  • 進行役「3と8に分かれました。まずDさん、8の理由を教えてください」
  • 開発者D「変更の確定と同時に、ほかの人が同じ枠を取る場合があります。重複を防ぐ仕組みに手を入れると見ました」
  • 進行役「Aさん、3の理由はどうでしょう」
  • 開発者A「取り消しと新規予約を続けて呼べば済むと考えました。基準の『予約を取り消す』とあまり変わらない印象です」

ラウンド2

  • 開発者C「重複を防ぐ処理は、予約の確定で使っているものをそのまま呼べます。新しく作るのは変更画面と、埋まっている枠を選べなくする表示です」
  • 開発者D「それなら8ではないですね」
  • 開発者A「取り消してから予約する方式だと、途中で止まったときに予約が消えます。1つの処理にまとめる分、3より大きいです」
  • 進行役「では、もう一度お願いします。……せーの」
  • (A:5、B:5、C:5、D:5)
  • 進行役「5でそろいました。Cさんの話した前提を、項目のメモに残しておきます」

そろわない場合のラウンド3

  • 進行役「5と8に分かれたままです。違いはどこにありそうですか」
  • 開発者D「通知メールの差し替えが入るかどうかです」
  • PO「通知は別の項目(PB-08)で扱うので、ここには含めません」
  • 進行役「範囲がはっきりしました。もう一度出して、それでも分かれたら大きいほうにします」

台本のとおり、数字の差は、前提や範囲の受け取り方の差であることがほとんどです。差が出たら、まず「何を含めて考えたか」を聞きます。

時間見積もりとの違い(比較表)

観点 ストーリーポイント 時間(時間・人日)見積もり
単位 基準ストーリーとの比 時間、人日
人による違い 出ない。だれが担当しても同じ数 出る。経験によって変わる
付ける人 開発者の全員で合意 担当者または見積もり担当
付ける対象 バックログ項目(利用者に届く単位) タスク(作業の単位)
細かさ 1・2・3・5・8・13の6段階 0.5時間や1人日の刻み
日程への変換 ベロシティで割ってスプリント数にする 稼働時間で割って日数にする
見直しのきっかけ 項目の範囲が変わったとき 作業が進むたび
向いている用途 数スプリント先までの見通し、取り込む量の判断 スプリント内のタスク計画、契約上の工数の提示

両方を使い分けるチームも多くあります。項目はポイントで、スプリントに取り込んだあとのタスクは時間で見積もると、見通しと日々の計画の両方が持てます。

ベロシティから完了までのスプリント数を予測する(Python)

ベロシティは、1スプリントで完成した項目のポイントの合計です。途中まで進んだ項目は0として数えます。1つの平均値ではなく、範囲で予測します。

# velocity_forecast.py  ベロシティの平均と範囲から、残りを終えるスプリント数を予測する
import math
import statistics

velocities = [21, 18, 25, 19, 23, 20]   # 直近6スプリントで完成したポイント
remaining = 160                         # 並べ終えたバックログの残りポイント
sprint_weeks = 2

avg = statistics.mean(velocities)
sd = statistics.stdev(velocities)
low3 = statistics.mean(sorted(velocities)[:3])    # 少なかった3回の平均
high3 = statistics.mean(sorted(velocities)[-3:])  # 多かった3回の平均
recent3 = statistics.mean(velocities[-3:])

print(f"平均 {avg:.1f} / 最小 {min(velocities)} / 最大 {max(velocities)} / 標準偏差 {sd:.1f}")
print(f"直近3回の平均 {recent3:.1f}")
print()
print("見方              ベロシティ  スプリント数  週数")
for label, v in (("慎重(下位3回の平均)", low3), ("標準(6回の平均)", avg), ("順調(上位3回の平均)", high3)):
    n = math.ceil(remaining / v)
    print(f"{label:<14} {v:>6.1f} {n:>10} {n * sprint_weeks:>8}")

print()
print("残りポイントが増えた場合(標準のベロシティで計算)")
for extra in (0, 10, 20, 30):
    n = math.ceil((remaining + extra) / avg)
    print(f"  残り {remaining + extra:>3} ポイント → {n} スプリント")

実行結果です。

平均 21.0 / 最小 18 / 最大 25 / 標準偏差 2.6
直近3回の平均 20.7

見方              ベロシティ  スプリント数  週数
慎重(下位3回の平均)      19.0          9       18
標準(6回の平均)        21.0          8       16
順調(上位3回の平均)      23.0          7       14

残りポイントが増えた場合(標準のベロシティで計算)
  残り 160 ポイント → 8 スプリント
  残り 170 ポイント → 9 スプリント
  残り 180 ポイント → 9 スプリント
  残り 190 ポイント → 10 スプリント

読み方は次のとおりです。

  • 残り160ポイントは、7〜9スプリント(14〜18週)で終わる見込みです。関係者には「8スプリント前後、遅くとも9」と範囲で伝えます。
  • 残りが10ポイント増えると、標準の見方で8から9スプリントに変わります。項目の追加が見通しにどう響くかを、同じ計算ですぐ示せます。
  • 直近3回の平均(20.7)は全体の平均(21.0)とほぼ同じで、ベロシティは落ち着いています。差が大きいときは、直近の値を優先します。
  • 最初の3スプリントほどはベロシティが揺れます。その間は範囲を広めに取ります。

避けたい使い方と、代わりのやり方

避けたい使い方 起きること 代わりのやり方
1ポイント=4時間のように固定で換算する ポイントが時間の言い換えになり、相対で見る利点が消える 日程はベロシティで割って出す。時間が要るのはタスクの段階で見積もる
個人ごとの完成ポイントを評価に使う 見積もりが大きめになり、助け合いが減る ベロシティはチームの計画のためだけに使う
チーム同士でベロシティを比べる 基準ストーリーが違うので、数の大小に意味がない 各チームの中での推移だけを見る
ベロシティを目標にして上げようとする ポイントが膨らみ、予測に使えなくなる 目標はスプリントゴールに置く
途中まで進んだ項目のポイントを部分的に数える ベロシティが実際より高く出る 完成した項目だけ数える。大きい項目は分割する
進行役やプロダクトオーナーが数字を決める 作業する人の見立てと離れる 開発者が付ける。ほかの人は質問に答える役に回る
終わったあとで数字を付け直す 見積もりの傾向がわからなくなる 付け直さず、ずれた理由を振り返りで話す
不具合の修正にも毎回ポイントを付けるかで揺れる スプリントごとに数え方が変わる 付ける・付けないをチームで決めて固定する

よくある質問

Q. なぜフィボナッチ数列を使うのですか? A. 数が大きいほど間隔が広がるからです。大きな項目ほど見立ての幅も大きいので、「6か7か」のような細かい議論を省けます。1・2・4・8のような倍々の数や、S・M・LのTシャツサイズでも、相対で比べるという考え方は同じです。

Q. 新しいチームで、ベロシティがまだありません。どう計画しますか? A. 最初のスプリントは、開発者が「これなら完成できる」と見立てた量を取り込みます。2〜3スプリント続けると、平均と範囲が使えるようになります。

Q. 0や0.5、20や40のカードは使いますか? A. 市販のカードには入っていることがあります。この記事の基準表では、扱いを単純にするため1〜13の6段階にしています。13を超える項目は、数字を付けるより先に分割します。

Q. メンバーが入れ替わったら、ポイントは付け直しますか? A. 付け直しません。ポイントは項目の大きさなので変わらず、変わるのはベロシティです。次の数スプリントのベロシティを見て、見通しを更新します。

まとめ

  • ストーリーポイントは、基準ストーリーとの比で表す相対的な大きさです。
  • 1・2・3・5・8・13の基準表を作り、複雑さ・不確実性・作業量のいちばん大きい行で決めます。
  • 各ポイントに基準ストーリーを1件ずつ決めて、ものさしを固定します。
  • プランニングポーカーでは同時に出し、最大と最小の理由を聞きます。差の多くは前提の違いです。
  • 見通しはベロシティの範囲で出します。例では残り160ポイントが7〜9スプリントでした。
  • 時間への固定換算、個人の評価、チーム間の比較には使いません。

参考

  • スクラムガイド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期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?