見積もりとベロシティ
見積もりとは
見積もりは、開発にかかる作業量や期間を事前に予測する活動です。「いつできるのか」に答えるためには避けて通れませんが、ソフトウェア開発の見積もりは本質的に不確実で、正確に当てることはできないのが前提です。だからこそ「どう外れにくくするか」「外れたときどう修正するか」に工夫が集まっています。
ストーリーポイント — 時間ではなく相対値で測る
[[アジャイル開発]] では、作業を「何時間かかるか」ではなくストーリーポイントという相対値で見積もる方法が広く使われます。
- 基準となるタスクを決め、「あれの2倍くらい大変」のように相対的な大きさで数値を付ける
- 数値には 1, 2, 3, 5, 8, 13… のようなフィボナッチ数列をよく使う。大きい作業ほど精度が落ちることを、数値の間隔の粗さで表現している
- チームで見積もる際は、全員が同時に数値を出すプランニングポーカーという手法が定番。数値が割れたら理由を議論し、認識のズレを発見する
時間で見積もらない理由は、人によって作業速度が違い、割り込みなどで実時間がブレるためです。相対的な大きさなら人が違っても合意しやすくなります。
ベロシティ — チームの速度を実績から知る
ベロシティ(velocity)は、チームが1スプリントで完了できたストーリーポイントの合計です。[[スクラム]] のスプリントを数回まわすと「うちのチームは1スプリントで約20ポイント」という実績値が見えてきます。
残り 100 ポイント ÷ ベロシティ 20 ポイント/スプリント = 約5スプリントで完了見込み
予測を「勘」ではなく実績に基づかせられるのがベロシティの価値です。ただしベロシティはチーム固有の値であり、他チームとの比較や個人の評価に使うと、数字を盛るインセンティブが生まれて予測に使えなくなります。
初学者向けポイント
- [[ウォーターフォール開発]] では最初に全工程を積み上げ式で見積もりますが、アジャイルでは「直近は細かく、先は粗く」見積もり、進みながら精度を上げます
- 見積もりは約束ではなく予測です。見積もりを超えそうだと分かった時点で早く共有することが、隠して遅れるより何倍も価値があります
- タスクの分割が上手になると見積もりも上手になります。1つのチケット([[チケット管理]])を数日以内で終わる大きさに割るのが目安です
関連技術とのつながり
- [[スクラム]] — スプリント計画でストーリーポイントとベロシティを使う
- [[アジャイル開発]] — 相対見積もりの背景にある考え方
- [[チケット管理]] — 見積もり対象のタスクを管理する実務ツール
- [[ウォーターフォール開発]] — 対照的な積み上げ式見積もりを使う開発モデル
Q: ストーリーポイントの特徴として正しいのはどれ?
- [x] 基準タスクと比べた相対的な大きさで見積もる
- [ ] 作業にかかる正確な時間を分単位で表す
- [ ] 開発者の能力を採点した点数である
解説: ストーリーポイントは「あの作業の2倍くらい」という相対値で、人による作業速度の違いに影響されにくい見積もり方です。
Q: ベロシティとは何?
- [ ] プログラムの実行速度
- [x] チームが1スプリントで完了できたストーリーポイントの合計
- [ ] 開発者1人が1日に書けるコード行数
解説: ベロシティはスプリントごとの完了ポイントの実績値で、今後の予測の根拠になります。
Q: ベロシティの使い方として本文が注意を促しているのはどれ?
- [ ] 予測に使わず記録するだけにする
- [ ] スプリントごとに必ず2倍にする目標を課す
- [x] 他チームとの比較や個人の評価に使わない
解説: ベロシティはチーム固有の値です。比較や評価に使うと数字を盛る動機が生まれ、予測の道具として機能しなくなります。