ストーリーポイントとは?見積もり方法とフィボナッチ数列の使い方
ストーリーポイントとは
ストーリーポイントは、アジャイル開発においてユーザーストーリー(作業項目)の相対的な規模を見積もるための単位です。「この機能の開発に何時間かかるか」ではなく、「この機能は別の機能と比べてどのくらいの大きさか」を数値で表します。
時間ベースの見積もりとの最大の違いは、ストーリーポイントが作業量・複雑さ・不確実性の3つの要素を総合的に反映する点です。
時間見積もりとの比較
| 項目 | 時間見積もり | ストーリーポイント |
|---|---|---|
| 単位 | 時間・日数 | 相対的なポイント |
| 基準 | 個人のスキルに依存 | チーム共通の基準 |
| 精度 | 見積もるほどズレが大きい | 相対比較で安定しやすい |
| 目的 | スケジュール策定 | 作業量の把握と優先度判断 |
| 再見積もり | 人が変わると再見積もり必要 | チームが安定していれば維持 |
なぜ相対見積もりが有効なのか
人間は「絶対的な量」を見積もるのが苦手ですが、「2つを比べてどちらが大きいか」は得意です。
たとえば、「この部屋の面積は何平方メートルか?」と聞かれると多くの人が間違えますが、「この部屋と隣の部屋、どちらが広いか?」なら正確に答えられます。
ストーリーポイントはこの人間の特性を活かした見積もり手法です。基準となるストーリーを1つ決め、他のストーリーを「基準の何倍くらいか」で判断します。
フィボナッチ数列を使う理由
ストーリーポイントの見積もりには、フィボナッチ数列(1, 2, 3, 5, 8, 13, 21...)がよく使われます。1, 2, 3, 4, 5...と連続した数字ではなく、間隔が広がっていく数列を使うのには明確な理由があります。
大きなタスクほど見積もりの精度が下がる
小さなタスク同士の違いは比較的正確に判断できます。「1ポイントと2ポイントの違い」は明確です。しかし、タスクが大きくなると「13ポイントと14ポイントの違い」を正確に区別することは困難です。
フィボナッチ数列は、この見積もり精度の低下を自然に反映しています。
1 → 2 → 3 → 5 → 8 → 13 → 21
+1 +1 +2 +3 +5 +8
数値が大きくなるほど間隔が広がるため、「13か21か」という粗い判断で十分になります。
よく使われるスケール
| ポイント | 規模の目安 | 例 |
|---|---|---|
| 1 | 最小。数行の変更で完了 | 定数の変更、ラベルの修正 |
| 2 | 小さい。明確で単純な作業 | バリデーションの追加 |
| 3 | やや小さい。少し考慮が必要 | 新しいAPIエンドポイントの追加 |
| 5 | 中程度。設計判断を含む | 新しいフォームの作成 |
| 8 | やや大きい。複数コンポーネントに影響 | 検索機能の実装 |
| 13 | 大きい。分割を検討すべきサイズ | 外部サービスとの連携機能 |
| 21 | 非常に大きい。分割が必要 | 認証システムの刷新 |
13以上のストーリーは、見積もりの不確実性が大きすぎるため、より小さなストーリーに分割することが推奨されます。
見積もりの進め方
ステップ1: 基準ストーリーを決める
チーム全員が理解できる「基準となるストーリー」を1つ選び、これを特定のポイント(通常は3や5)に設定します。
基準ストーリー: 「ユーザープロフィールに電話番号フィールドを追加する」= 3ポイント
この基準が全ての見積もりの「物差し」になります。
ステップ2: 相対比較で見積もる
新しいストーリーを見積もる際は、基準ストーリーと比較します。
「パスワードリセット機能の追加」は、基準(3ポイント)と比べて...
- メール送信の実装が必要
- トークン管理が必要
- UIが複数画面にまたがる
→ 基準の約2.5倍 → 8ポイント
ステップ3: プランニングポーカーで合意する
チーム全員が同時にポイントを提示し、大きく異なる場合は議論して合意に至ります。この手法をプランニングポーカーと呼びます。
- プロダクトオーナーがストーリーを説明する
- チームメンバーが質問して不明点を解消する
- 全員が同時にカードを出す
- 値が大きく異なる場合、最高値と最低値の人が理由を説明する
- 再度カードを出す
- 合意に至るまで繰り返す
最高値と最低値の差が2段階以内(例: 5と8)なら、議論して1つに決めます。3段階以上離れている場合(例: 3と13)は、ストーリーの理解にズレがある可能性が高く、まずストーリーの定義を明確にする必要があります。
ベロシティとスプリント計画
ベロシティとは
ベロシティは、チームが1スプリントで完了するストーリーポイントの合計値です。複数スプリントの平均値を取ることで、チームの処理能力を予測できます。
スプリント1: 完了 21ポイント
スプリント2: 完了 18ポイント
スプリント3: 完了 24ポイント
平均ベロシティ: (21 + 18 + 24) / 3 = 21ポイント
スプリント計画への活用
ベロシティを使って、次のスプリントに取り込むストーリー量を決定します。
平均ベロシティ: 21ポイント
次スプリントの候補:
ストーリーA: 5ポイント ← 採用(累計 5)
ストーリーB: 8ポイント ← 採用(累計 13)
ストーリーC: 5ポイント ← 採用(累計 18)
ストーリーD: 3ポイント ← 採用(累計 21)
ストーリーE: 5ポイント ← 見送り(累計 26 > 21)
ベロシティは安定するまでに通常3〜5スプリントかかります。初期のスプリントでは、見積もりの精度よりもチームの学習を優先してください。
よくある失敗パターンと対策
失敗1: ストーリーポイントを時間に換算する
「1ポイント = 4時間」のように時間に換算すると、ストーリーポイントのメリットが失われます。マネージャーが「20ポイント = 80時間 = 10営業日で完了するはず」と計算し始めると、チームにプレッシャーがかかり、見積もりが保守的になります。
対策: ストーリーポイントはチームの計画ツールであり、外部への報告には使わない。進捗報告にはベロシティの推移やバーンダウンチャートを使用する。
失敗2: 個人の能力で見積もりを変える
「Aさんなら3ポイント、Bさんなら5ポイント」という見積もりは避けるべきです。ストーリーポイントはチームとしての見積もりであり、誰が担当するかは別の判断です。
対策: 「チームの平均的なメンバーが取り組んだ場合」を基準にする。
失敗3: 見積もりに時間をかけすぎる
1つのストーリーの見積もりに10分以上かける必要はありません。プランニングポーカーで3回以上カードを出しても合意できない場合は、ストーリーの定義が曖昧な可能性が高いです。
対策: 合意できない場合は、ストーリーを分割するか、調査スパイク(技術調査用のタスク)を設定する。
失敗4: 全ストーリーを同じ詳細度で見積もる
直近のスプリントで着手するストーリーは詳細に見積もるべきですが、数スプリント先のストーリーは粗い見積もり(Tシャツサイズ: S/M/L/XL)で十分です。
対策: プロダクトバックログの上位20%を詳細に見積もり、残りは粗い見積もりにとどめる。
チームが成長するにつれて
ストーリーポイントの見積もり精度は、チームが一緒に働く期間が長くなるほど向上します。以下のプラクティスが効果的です。
- レトロスペクティブで振り返る: 完了したストーリーの実際の複雑さと見積もりを比較する
- 基準ストーリーを定期的に見直す: チームのスキル向上に合わせて基準を更新する
- 過去のストーリーをカタログ化する: 「あのストーリーは5ポイントだった」と参照できるようにする
まとめ
ストーリーポイントは、チームの見積もり精度を高め、スプリント計画を安定させるための強力なツールです。フィボナッチ数列による相対見積もりは、大きなタスクの不確実性を自然に反映し、プランニングポーカーによるチーム合意は、ストーリーの理解を深める効果があります。時間換算の誘惑を避け、チーム内部の計画ツールとして活用することが成功の鍵です。
