スプリントのバーンダウンと必要な日次ベロシティ
総ポイント80、完了32、残り6日なら、残る48ポイントを終えるには1日あたり8ストーリーポイントが必要です。チームの実際のペースと比べて判断できます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- ストーリーポイント合計
- 80
- 経過日数
- 4
- 残り日数
- 6
- 完了ポイント
- 32
- 残りポイント
- 48
- 必要な1日あたりのベロシティ
- 8
このバーンダウン計算ツールは、イテレーションの現状から、期限内の完了に必要な残り1日当たりのストーリーポイントを求めます。スプリント当初の総ポイント、経過日数、残日数、完了済みポイントを入力してください。未完了の作業量と必要な日次ベロシティが表示されるため、スプリント終了までにチームが現実的に達成できるペースかどうかを判断できます。
バーンダウンの現状を明確な日次目標に変換します
バーンダウンチャートは進行方向を示しますが、デイリーレビューで生じる「残作業を今後どの程度の速さで進める必要があるか」という問いに、常に直接答えるわけではありません。この計算ツールは、スプリントの総ストーリーポイントから完了済みポイントを差し引き、未完了分を残りの日数で割ります。
その結果は、残り1日当たりのストーリーポイントで表した、将来に向けた必要ベロシティです。残作業が多い一方で日数が少なければ、傾向線を目視で解釈しなくても、高い目標値が直ちに分かります。ポイントを完了できなかった日も含め、経過した日をすべて入力してください。
そうすることで、カレンダーの実態を正確に表せます。経過日数は状況確認のため結果に含まれますが、期限の計算には、チームに残された作業機会である残日数を使います。この数値は計画上のシグナルとして扱い、個人の生産性ノルマには使用しないでください。
必要ベロシティをデリバリーの状況と併せて評価します
必要な日次ベロシティは、期限までに残りの見積もりを消化するための算術上のペースです。チームが通常1日に完了するポイント、直近のスループット、進行中の作業、既知の障害と比較してください。目標が持続可能なペースを十分に下回る場合、スプリントは計算上まだ達成可能です。
大幅に上回る場合は、成果を不自然に増やすようメンバーへ圧力をかけるべきではありません。ブロック中の項目を解消できるか、価値ある成果を保ったままストーリーを分割できるか、プロダクト責任者とスコープを再調整すべきかを検討してください。結果がゼロなら、コミットしたポイントはすべて完了しており、追加のベロシティは不要です。
小数の結果も正常です。 これは残日数全体の平均であり、毎日ストーリーの一部分を完了させる指示ではありません。ストーリーポイントはチーム固有の相対見積もりなので、同じチームと同じ見積もり方法の実績だけを比較対象にしてください。
一貫した入力を使い、期限の境界を正しく扱います
すべての入力で単位を統一してください。総作業と完了作業には同じスプリント基準のストーリーポイントを使い、経過時間と残り時間には同じ日の定義を使います。通常は暦日ではなく、計画された稼働日です。
完了ポイントは、チームで共有する完了の定義に従って更新してください。途中の作業を数えると、提供可能な増分がないまま残見積もりだけが小さく見えます。完了ポイントが当初の総ポイントを超える入力は、指定したコミットメントに対する残作業を表さないため拒否されます。
負の値、有限でない数値、端数の日数も無効です。特に、残日数がゼロの場合はエラーになります。利用できる日がなければ、意味のある日次ペースを除算で求められないためです。
その時点では、無限または未定義の値を判断材料にせず、スプリントの結果を直接確認してください。
活用例
デイリースクラムを準備します
本日以降に必要なペースを計算し、具体的なデリバリーリスクの指標をチームの議論に提示できます。
スコープ調整を評価します
作業の削除や分割後に再計算し、改定したコミットメントが持続可能なペースに合うか確認できます。
よくある質問
必要な日次ベロシティとは何ですか?
残りのストーリーポイントを残日数で割った値です。指定したコミットメントを期限内に完了するため、1日平均で完了状態にする必要があるポイントを示します。
数式が残日数を使うのに、なぜ経過日数も必要ですか?
経過日数を結果に含めることで、スプリント全体の現状を保持し、入力した日程を確認できます。将来のペース自体は、まだ利用できる作業機会によって決まります。
残りの日がない場合はどうなりますか?
残作業をゼロ日へ配分しても意味のある日次ベロシティを得られないため、無効な入力としてエラーを返します。
完了ポイントが当初の総ポイントを超えてもよいですか?
いいえ。 このツールは指定された総コミットメントに対して残作業を測るため、その入力を拒否します。正式にスコープを追加した場合は、更新後の総ポイントを使用してください。
必要な日次ベロシティが高すぎる場合はどうしますか?
メンバーに無理に成果を増やさせるのではなく、止まっている項目を解消できるか、価値を保ったままストーリーを分割できるか、プロダクトオーナーと範囲を見直せるかを検討してください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/biz/burndown-remaining-estimate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"total_story_points":80,"days_elapsed":4,"days_remaining":6,"points_completed":32}'const res = await fetch("https://api.kit.forhosting.com/biz/burndown-remaining-estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"total_story_points": 80,
"days_elapsed": 4,
"days_remaining": 6,
"points_completed": 32
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/biz/burndown-remaining-estimate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"total_story_points": 80,
"days_elapsed": 4,
"days_remaining": 6,
"points_completed": 32
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/biz/burndown-remaining-estimate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"total_story_points":80,"days_elapsed":4,"days_remaining":6,"points_completed":32}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"total_story_points":80,"days_elapsed":4,"days_remaining":6,"points_completed":32}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/biz/burndown-remaining-estimate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"total_story_points": 80,
"days_elapsed": 4,
"days_remaining": 6,
"points_completed": 32
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "biz.burndown_remaining_estimate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
一貫した入力を使い、期限の境界を正しく扱います
自動処理では、APIが正規化した入力、残ポイント、必要ベロシティを安定したJSONオブジェクトで返します。1回の呼び出しは$0.002で、同じ決定的な計算をネットワークなしでブラウザー実行できます。
連携の活用例
スプリント報告に指標を追加します
決定的なAPI結果をダッシュボード、進捗報告、自動デリバリーリスク検査に組み込めます。
技術的な質問
APIリクエストの料金はいくらですか?
APIリクエスト1回の料金は$0.002です。ブラウザー版は同じ決定的なロジックを使用し、ローカルで実行できます。