- マネジメント
バッファの見積もりと取り方|プロジェクトバッファの計算式とCCPMの例
バッファとは、見積もりのぶれを吸収するために、計画にあらかじめ置いておく余裕の時間です。 置き方には「各作業に少しずつ上乗せする」と「最後に1つまとめて置く」の2通りがあり、CCPM(クリティカルチェーン・プロジェクトマネジメント)は後者の考え方です。
この記事は、余裕をどこに・いくつ置くかに絞って説明します。架空の8作業を使い、4通りの計算方法を同じ表で比べ、Pythonで検算した結果と、表計算ソフトにそのまま貼れるテンプレートを載せています。
確認環境:Python 3.11.15(計算の検算と乱数による試算)、LibreOffice Calc 24.2.7.2(表計算の数式の検算)、@mermaid-js/mermaid-cli 12.0.0 と Chromium(Mermaid の図の描画)。確認日は2026-10-06です。作業名と日数は架空の例です。
この記事の結論
- 各作業には上乗せしない。 余裕を抜いた見積もりの合計に対して、最後に1つプロジェクトバッファを置きます。
- 大きさは 半分法(余裕の合計÷2)か 二乗和平方根法(余裕の二乗の合計の平方根)で決めます。
- 8作業の例では、余裕を抜いた合計38日に対し、半分法は15.0日、二乗和平方根法は11.3日でした。各作業に余裕を含めた場合の30日より短く済みます。
- 作業数が少ない(4件以下)なら半分法、多い(10件以上)なら二乗和平方根法を基本にし、作業が同じ原因で一緒に遅れやすいときは大きいほうを選びます。
- 進行中は バッファ消費率と進捗率 を比べ、緑・黄・赤で判定します。
バッファ計算の早見表
| 方法 | 計算式 | 8作業の例でのバッファ | 完了までの日数 | 向いている場合 |
|---|---|---|---|---|
| A 一律20%上乗せ | 余裕を抜いた合計×0.2 | 7.6日 | 45.6日 | 余裕の大きさを作業ごとに出せないとき |
| B 半分法 | 余裕の合計÷2 | 15.0日 | 53.0日 | 作業数が少ない。作業が一緒に遅れやすい |
| C 二乗和平方根法 | √(各作業の余裕の二乗の合計) | 11.3日 | 49.3日 | 作業数が多い。作業ごとに独立にぶれる |
| D 三点見積もり(PERT) | 期待値の合計+2×標準偏差の合成 | 5.6日(土台は40.5日) | 46.1日 | 楽観値・最頻値・悲観値を出せるとき |
| 参考:各作業に余裕を含める | 余裕を含めた見積もりの合計 | 30日(各作業に分散) | 68日 | ― |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「バッファの見積もりと取り方|プロジェクトバッファの計算式とCCPMの例」
バッファを各作業に置かず、最後に1つ置く理由
各作業に余裕を含めると、合計はそのまま足し算で膨らみます。一方、すべての作業が同時に悲観的な結果になることは多くありません。早く終わる作業と遅れる作業が打ち消し合うので、余裕をまとめて持つほうが、同じ安心感を少ない日数で得られます。
もう1つの理由は使われ方です。作業ごとの余裕は、その作業の中で使い切られやすく、早く終わっても次の作業の開始が前倒しされにくい傾向があります。まとめて置けば、早く終わった分がそのまま残ります。
PMI の用語集(PMI Lexicon of Project Management Terms 5.0)は、クリティカルチェーン法を「限られた資源と不確実さに備えて、スケジュールの経路上にバッファを置けるようにするスケジュール手法」と説明しています。
| 置き方 | 合計の日数(8作業の例) | 早く終わった分 | 遅れが出たとき |
|---|---|---|---|
| 各作業に余裕を含める | 68日 | 作業の中で消えやすい | どの作業の余裕が残っているか見えにくい |
| 最後に1つ置く | 49.3〜53.0日 | バッファに残る | 消費率という1つの数字で見える |
例題:8作業で4通りのバッファを計算する
架空の「備品予約システム」の開発を、8つの作業が1本につながった流れとして計算します。各作業について3つの値を見積もります。
| 記号 | 意味 | 見積もり方 |
|---|---|---|
| O | 楽観値 | すべて順調に進んだ場合の日数 |
| M | 余裕を抜いた見積もり(最頻値) | 五分五分で終わると思う日数 |
| P | 余裕を含めた見積もり(悲観値) | ほぼ確実に終わると思う日数 |
| 作業 | O | M | P | 余裕(P−M) | 期待値E | 標準偏差 |
|---|---|---|---|---|---|---|
| T1 要件の確認 | 2 | 3 | 5 | 2 | 3.17 | 0.50 |
| T2 画面設計 | 3 | 5 | 8 | 3 | 5.17 | 0.83 |
| T3 テーブル設計 | 2 | 4 | 7 | 3 | 4.17 | 0.83 |
| T4 予約登録の開発 | 5 | 8 | 14 | 6 | 8.50 | 1.50 |
| T5 予約一覧の開発 | 3 | 5 | 9 | 4 | 5.33 | 1.00 |
| T6 通知メールの開発 | 2 | 3 | 6 | 3 | 3.33 | 0.67 |
| T7 結合テスト | 4 | 6 | 12 | 6 | 6.67 | 1.33 |
| T8 受入の支援 | 2 | 4 | 7 | 3 | 4.17 | 0.83 |
| 合計 | 23 | 38 | 68 | 30 | 40.50 | ― |
A 一律20%上乗せ
バッファ = 余裕を抜いた合計 × 0.2 = 38 × 0.2 = 7.6日
完了まで = 38 + 7.6 = 45.6日
計算は簡単ですが、作業ごとのぶれの大きさが反映されません。20%という割合の根拠も別に必要です。
B 半分法
各作業の余裕(P−M)を合計し、その半分をバッファにします。
バッファ = (2+3+3+6+4+3+6+3) ÷ 2 = 30 ÷ 2 = 15.0日
完了まで = 38 + 15.0 = 53.0日
C 二乗和平方根法
各作業の余裕を二乗して合計し、平方根を取ります。
バッファ = √(2² + 3² + 3² + 6² + 4² + 3² + 6² + 3²) = √128 = 11.3日
完了まで = 38 + 11.3 = 49.3日
余裕の大きい作業(T4 と T7 の6日)が結果を大きく左右します。128のうち72がこの2作業の分です。
D 三点見積もり(PERT)
作業ごとに期待値と標準偏差を出し、合計します。
期待値 E = (O + 4M + P) ÷ 6
標準偏差 = (P − O) ÷ 6
合計の標準偏差 = √(各作業の標準偏差の二乗の合計) = 2.79日
完了まで = 期待値の合計 + 2 × 合計の標準偏差 = 40.5 + 5.6 = 46.1日
D は土台が M の合計(38日)ではなく期待値の合計(40.5日)になる点が、B・C と違います。38日から見ると、上乗せは8.1日です。
Pythonで4通りを検算する
buffer.py:
import math
import random
# 作業, 楽観値O, 余裕を抜いた見積もりM, 余裕を含めた見積もりP(単位:日)
TASKS = [
("T1 要件の確認", 2, 3, 5),
("T2 画面設計", 3, 5, 8),
("T3 テーブル設計", 2, 4, 7),
("T4 予約登録の開発", 5, 8, 14),
("T5 予約一覧の開発", 3, 5, 9),
("T6 通知メールの開発", 2, 3, 6),
("T7 結合テスト", 4, 6, 12),
("T8 受入の支援", 2, 4, 7),
]
sum_m = sum(m for _, _, m, _ in TASKS)
sum_p = sum(p for _, _, _, p in TASKS)
margins = [p - m for _, _, m, p in TASKS]
print("作業 O M P 余裕(P-M) 期待値E 標準偏差")
for name, o, m, p in TASKS:
e = (o + 4 * m + p) / 6
sd = (p - o) / 6
print(f"{name:<14}{o:4}{m:4}{p:4}{p - m:8}{e:10.2f}{sd:9.2f}")
flat = sum_m * 0.2
half = sum(margins) / 2
rss = math.sqrt(sum(x * x for x in margins))
sum_e = sum((o + 4 * m + p) / 6 for _, o, m, p in TASKS)
sd_total = math.sqrt(sum(((p - o) / 6) ** 2 for _, o, m, p in TASKS))
print()
print(f"余裕を抜いた合計 ΣM = {sum_m}日 / 各作業に余裕を含めた合計 ΣP = {sum_p}日 / 余裕の合計 = {sum(margins)}日")
print()
print("方法 土台 バッファ 合計 ΣMに対する割合")
print(f"A 一律20%上乗せ {sum_m:5.1f} {flat:8.1f} {sum_m + flat:6.1f} {flat / sum_m:8.0%}")
print(f"B 半分法 {sum_m:5.1f} {half:8.1f} {sum_m + half:6.1f} {half / sum_m:8.0%}")
print(f"C 二乗和平方根法 {sum_m:5.1f} {rss:8.1f} {sum_m + rss:6.1f} {rss / sum_m:8.0%}")
print(f"D 三点見積もり(E+2σ) {sum_e:5.1f} {2 * sd_total:8.1f} {sum_e + 2 * sd_total:6.1f} {(sum_e + 2 * sd_total - sum_m) / sum_m:8.0%}")
print(f" (D の標準偏差の合成 σ = {sd_total:.2f}日、ΣM から見た上乗せ = {sum_e + 2 * sd_total - sum_m:.1f}日)")
print()
print("== 作業数を増やしたとき(1作業 M=5日・余裕3日で同じ大きさ) ==")
print("作業数 ΣM 半分法 二乗和平方根法 半分法/ΣM 二乗和/ΣM")
for n in (2, 4, 8, 16, 32, 64):
h = 3 * n / 2
r = math.sqrt(n * 9)
print(f"{n:5} {5 * n:5} {h:7.1f} {r:10.1f} {h / (5 * n):12.0%} {r / (5 * n):9.0%}")
print()
print("== 乱数で10万回試す(各作業は O〜P の三角分布、山は M) ==")
random.seed(20261006)
N = 100_000
def tri_inv(u, a, c, b):
fc = (c - a) / (b - a)
return a + math.sqrt(u * (b - a) * (c - a)) if u < fc else b - math.sqrt((1 - u) * (b - a) * (b - c))
def trial(shared):
u = random.random()
return sum(random.triangular(o, p, m) if not shared else tri_inv(u, o, m, p) for _, o, m, p in TASKS)
for label, shared in (("作業ごとに独立にぶれる", False), ("全作業が同じ向きにぶれる", True)):
xs = sorted(trial(shared) for _ in range(N))
print(f"[{label}] 平均 {sum(xs) / N:.1f}日 / 50%点 {xs[N // 2]:.1f}日 / 90%点 {xs[int(N * 0.9)]:.1f}日")
for name, total in (("ΣM(バッファなし)", sum_m), ("A 一律20%", sum_m + flat), ("B 半分法", sum_m + half),
("C 二乗和平方根法", sum_m + rss), ("D 三点見積もり", sum_e + 2 * sd_total), ("ΣP(各作業に余裕)", sum_p)):
ok = sum(x <= total for x in xs) / N
print(f" {name:<14} {total:5.1f}日以内に終わる割合 {ok:6.1%}")
実行結果(python3 buffer.py):
作業 O M P 余裕(P-M) 期待値E 標準偏差
T1 要件の確認 2 3 5 2 3.17 0.50
T2 画面設計 3 5 8 3 5.17 0.83
T3 テーブル設計 2 4 7 3 4.17 0.83
T4 予約登録の開発 5 8 14 6 8.50 1.50
T5 予約一覧の開発 3 5 9 4 5.33 1.00
T6 通知メールの開発 2 3 6 3 3.33 0.67
T7 結合テスト 4 6 12 6 6.67 1.33
T8 受入の支援 2 4 7 3 4.17 0.83
余裕を抜いた合計 ΣM = 38日 / 各作業に余裕を含めた合計 ΣP = 68日 / 余裕の合計 = 30日
方法 土台 バッファ 合計 ΣMに対する割合
A 一律20%上乗せ 38.0 7.6 45.6 20%
B 半分法 38.0 15.0 53.0 39%
C 二乗和平方根法 38.0 11.3 49.3 30%
D 三点見積もり(E+2σ) 40.5 5.6 46.1 21%
(D の標準偏差の合成 σ = 2.79日、ΣM から見た上乗せ = 8.1日)
== 作業数を増やしたとき(1作業 M=5日・余裕3日で同じ大きさ) ==
作業数 ΣM 半分法 二乗和平方根法 半分法/ΣM 二乗和/ΣM
2 10 3.0 4.2 30% 42%
4 20 6.0 6.0 30% 30%
8 40 12.0 8.5 30% 21%
16 80 24.0 12.0 30% 15%
32 160 48.0 17.0 30% 11%
64 320 96.0 24.0 30% 8%
== 乱数で10万回試す(各作業は O〜P の三角分布、山は M) ==
[作業ごとに独立にぶれる] 平均 43.0日 / 50%点 42.9日 / 90%点 47.6日
ΣM(バッファなし) 38.0日以内に終わる割合 7.3%
A 一律20% 45.6日以内に終わる割合 77.0%
B 半分法 53.0日以内に終わる割合 99.8%
C 二乗和平方根法 49.3日以内に終わる割合 95.9%
D 三点見積もり 46.1日以内に終わる割合 80.9%
ΣP(各作業に余裕) 68.0日以内に終わる割合 100.0%
[全作業が同じ向きにぶれる] 平均 43.0日 / 50%点 42.0日 / 90%点 56.4日
ΣM(バッファなし) 38.0日以内に終わる割合 33.7%
A 一律20% 45.6日以内に終わる割合 63.0%
B 半分法 53.0日以内に終わる割合 83.3%
C 二乗和平方根法 49.3日以内に終わる割合 74.3%
D 三点見積もり 46.1日以内に終わる割合 64.6%
ΣP(各作業に余裕) 68.0日以内に終わる割合 100.0%
結果の読み方
- 作業数を増やすと、半分法と二乗和平方根法の差が開きます。 同じ大きさの作業を並べた場合、4件で両者は同じ6.0日になり、それより多いと半分法のほうが大きくなります。64件では96.0日と24.0日で、4倍の差です。
- 半分法は、合計に対する割合が作業数によらず一定(この例では30%) です。作業数が多いと日数としては大きくなります。
- 二乗和平方根法は、作業数が増えるほど割合が下がります(8件で21%、64件で8%)。
- 乱数の試算では、作業が独立にぶれる場合、二乗和平方根法の49.3日以内に終わる割合は95.9%、半分法の53.0日では99.8% でした。
- 全作業が同じ向きにぶれる場合は、二乗和平方根法で74.3%、半分法で83.3% に下がりました。
半分法と二乗和平方根法の選び方
| 条件 | 選ぶもの | 理由 |
|---|---|---|
| 作業数が4件以下 | 半分法 | 二乗和平方根法のほうが大きく出る。計算も簡単 |
| 作業数が5〜10件ほど | 両方を計算して比べる | 差が小さい。迷ったら大きいほう |
| 作業数が10件を超える | 二乗和平方根法 | 半分法は日数が大きくなりやすい |
| 同じ人・同じ技術・同じ外部要因に全作業が依存する | 半分法、または二乗和平方根法に上乗せ | 一緒に遅れると打ち消し合いが働かない |
| 1つの作業の余裕が飛び抜けて大きい | 二乗和平方根法 | その作業のぶれが結果に反映される |
| 余裕(P−M)を作業ごとに出せない | 一律の割合 | 過去の計画との差から割合を決める |
| 楽観値も出せる | 三点見積もり | 期待値と幅の両方を示せる |
二乗和平方根法は「作業ごとのぶれが互いに独立」という前提で成り立ちます。仕様の確定が遅れて全作業が後ろにずれる、といった共通の原因があるときは、小さめに出ます。逆に半分法は作業数が多い計画で大きく出るので、両方を計算し、上の表で選ぶのが確実です。
合流バッファの置き場所(Mermaidのコード)
プロジェクトバッファのほかに、合流バッファがあります。いちばん長い作業の流れ(クリティカルチェーン)に、別の流れが合流する手前に置く余裕です。合流してくる側の遅れが、主の流れに伝わるのを防ぎます。
flowchart LR
S([開始]) --> T1[T1 要件の確認<br/>3日]
T1 --> T2[T2 画面設計<br/>5日]
T2 --> T3[T3 テーブル設計<br/>4日]
T3 --> T4[T4 予約登録の開発<br/>8日]
T4 --> T5[T5 予約一覧の開発<br/>5日]
T5 --> T6[T6 通知メールの開発<br/>3日]
T6 --> T7[T7 結合テスト<br/>6日]
T7 --> T8[T8 受入の支援<br/>4日]
T8 --> PB[[プロジェクトバッファ<br/>11.3日]]
PB --> E([完了の約束日])
S --> F1[F1 利用手引きの作成<br/>3日]
F1 --> F2[F2 操作説明の準備<br/>2日]
F2 --> FB[[合流バッファ<br/>2日]]
FB --> T8
F1・F2 の余裕を2日ずつとすると、合流バッファは半分法で (2+2)÷2=2.0日、二乗和平方根法で √8=2.8日です。図では2日を置いています。
| バッファ | 置く場所 | 守るもの | 個数 |
|---|---|---|---|
| プロジェクトバッファ | 最後の作業と完了の約束日の間 | 完了の約束日 | 1つ |
| 合流バッファ | 別の流れが主の流れに合流する手前 | 主の流れの開始時期 | 合流ごとに1つ |
合流バッファを置くと、合流してくる側の作業は「いちばん遅い開始日」より前に始めることになります。F1 は T8 の直前に終わればよいのではなく、T8 の開始より2日前に F2 が終わるように計画します。
バッファ消費率と進捗率の判定表(緑・黄・赤)
進行中は、次の2つの数字を比べます。
進捗率(%) = 完了した作業の日数(M) ÷ 余裕を抜いた合計 × 100
バッファ消費率(%)= バッファから使った日数 ÷ バッファの日数 × 100
進捗が進むほど、バッファを多く使っていても問題になりにくいので、しきい値は進捗率に合わせて上がる線にします。次の表は、黄の線を「10+0.6×進捗率」、赤の線を「30+0.6×進捗率」とした例です。線の位置はチームで決めてください。
| 進捗率 | 緑(消費率) | 黄(消費率) | 赤(消費率) |
|---|---|---|---|
| 0% | 10%以下 | 10%超〜30%以下 | 30%超 |
| 20% | 22%以下 | 22%超〜42%以下 | 42%超 |
| 40% | 34%以下 | 34%超〜54%以下 | 54%超 |
| 60% | 46%以下 | 46%超〜66%以下 | 66%超 |
| 80% | 58%以下 | 58%超〜78%以下 | 78%超 |
| 100% | 70%以下 | 70%超〜90%以下 | 90%超 |
| 判定 | 意味 | すること |
|---|---|---|
| 緑 | 進み具合に対して消費が少ない | そのまま進める |
| 黄 | 消費が進み具合を上回り始めた | 原因を調べ、取り戻す案を用意する(まだ実行しない) |
| 赤 | このままだと約束日に届かないおそれ | 用意した案を実行し、関係者に知らせる |
判定の例です(上の式を Python で計算した結果)。
| 進捗率 | 消費率 | 判定 |
|---|---|---|
| 25% | 40% | 黄 |
| 25% | 50% | 赤 |
| 50% | 44.2% | 黄 |
| 80% | 55% | 緑 |
| 80% | 60% | 黄 |
同じ消費率55〜60%でも、進捗率25%なら赤、80%なら緑〜黄です。消費率だけでなく、進捗率との組み合わせで見るのが要点です。
表計算に貼れる数式つきテンプレート
次のタブ区切りのテキストを、表計算ソフトの A1 セルに貼り付けます。O・M・P の値と、18行目(進捗率)・19行目(消費日数)を自分の計画に書き換えると、4通りのバッファと判定が出ます。作業の行を増やすときは、範囲(C2:C9 など)を合わせて広げます。
作業 楽観値O 余裕を抜いたM 余裕を含めたP 余裕 期待値E 標準偏差
T1 要件の確認 2 3 5 =D2-C2 =(B2+4*C2+D2)/6 =(D2-B2)/6
T2 画面設計 3 5 8 =D3-C3 =(B3+4*C3+D3)/6 =(D3-B3)/6
T3 テーブル設計 2 4 7 =D4-C4 =(B4+4*C4+D4)/6 =(D4-B4)/6
T4 予約登録の開発 5 8 14 =D5-C5 =(B5+4*C5+D5)/6 =(D5-B5)/6
T5 予約一覧の開発 3 5 9 =D6-C6 =(B6+4*C6+D6)/6 =(D6-B6)/6
T6 通知メールの開発 2 3 6 =D7-C7 =(B7+4*C7+D7)/6 =(D7-B7)/6
T7 結合テスト 4 6 12 =D8-C8 =(B8+4*C8+D8)/6 =(D8-B8)/6
T8 受入の支援 2 4 7 =D9-C9 =(B9+4*C9+D9)/6 =(D9-B9)/6
余裕を抜いた合計 =SUM(C2:C9)
A 一律20%のバッファ =B11*0.2
B 半分法のバッファ =SUM(E2:E9)/2
C 二乗和平方根法のバッファ =SQRT(SUMSQ(E2:E9))
D 三点見積もりの合計 =SUM(F2:F9)+2*SQRT(SUMSQ(G2:G9))
採用するバッファ =B14
完了までの日数 =B11+B16
進捗率(%) 50
バッファの消費日数 5
バッファ消費率(%) =B19/B16*100
判定 =IF(B20>30+0.6*B18,"赤",IF(B20>10+0.6*B18,"黄","緑"))
LibreOffice Calc で開いて計算させた結果です(B列)。Pythonの結果と一致しました。
| 行 | 項目 | 計算結果 |
|---|---|---|
| 11 | 余裕を抜いた合計 | 38 |
| 12 | A 一律20%のバッファ | 7.6 |
| 13 | B 半分法のバッファ | 15 |
| 14 | C 二乗和平方根法のバッファ | 11.3137084989848 |
| 15 | D 三点見積もりの合計 | 46.0876848714134 |
| 16 | 採用するバッファ | 11.3137084989848 |
| 17 | 完了までの日数 | 49.3137084989848 |
| 20 | バッファ消費率(%) | 44.1941738241592 |
| 21 | 判定 | 黄 |
使っている関数は SUM・SUMSQ・SQRT・IF の4つです。16行目の =B14 を =B13 に変えると、半分法のバッファで判定します。
バッファ・予備費・マネジメント予備・フロートの違い
| 言葉 | 何に対する余裕か | 誰が使うか | 計画のどこにあるか |
|---|---|---|---|
| バッファ(プロジェクトバッファ) | 見積もりのぶれ(時間) | チーム。消費率を見ながら使う | 最後の作業の後に1つ |
| 合流バッファ | 合流してくる流れの遅れ(時間) | チーム | 合流の手前 |
| 予備費(コンティンジェンシー予備) | 洗い出したリスクへの備え(時間または費用) | プロジェクトの責任者 | 基準となる計画の中 |
| マネジメント予備 | 予見していなかった作業への備え(時間または費用) | 経営層などの承認で使う | 基準となる計画の外 |
| フロート(余裕時間) | 作業を遅らせても全体が遅れない幅 | 計算で決まる。置くものではない | クリティカルパス以外の作業 |
予備費・マネジメント予備・フロートの説明は、PMI の用語集の定義に沿っています。用語集では、コンティンジェンシー予備を「対応策を決めた既知のリスクのために、スケジュールまたはコストの基準の中に割り当てる時間や資金」、マネジメント予備を「基準とは別に経営層が確保し、範囲内の予見していなかった作業のために使う時間や資金」、トータルフロートを「プロジェクトの終了日を遅らせずに作業を遅らせられる時間」としています。
どれを使うかの判断基準
| 条件 | 使うもの |
|---|---|
| 見積もりそのもののぶれに備えたい | プロジェクトバッファ |
| 「この部品の納品が遅れるかもしれない」など、名前のつくリスクに備えたい | 予備費(リスクごとに根拠を書く) |
| 何が起きるか分からないことに備えたい | マネジメント予備(承認の手順を決める) |
| ある作業をどこまで遅らせてよいか知りたい | フロートを計算する |
フロートは「計算したら出てくる余裕」、バッファは「意図して置く余裕」です。フロートのある作業は、放っておくとクリティカルチェーンに合流する時点で余裕を使い切ることがあるので、合流バッファとして明示します。
バッファの取り方の手順
| 手順 | すること |
|---|---|
| 1 | 作業ごとに M(五分五分)と P(ほぼ確実)を見積もる。できれば O も出す |
| 2 | 計画は M で組む。作業ごとの余裕(P−M)は別の列に書く |
| 3 | いちばん長い流れを決め、余裕の合計と二乗和平方根を計算する |
| 4 | 判断基準の表で方法を選び、最後にプロジェクトバッファを置く |
| 5 | 合流する流れの手前に合流バッファを置く |
| 6 | 完了の約束日は「M の合計+バッファ」で伝える。作業ごとの期限は約束にしない |
| 7 | 週に1回、進捗率と消費率を記録して判定する |
手順6が大切です。作業ごとの M は五分五分の値なので、半分は超えます。超えた分はバッファから使う前提であることを、最初にチームと関係者に伝えておきます。
確かめて分かったこと
- 余裕を抜いた合計(38日)ちょうどで終わる割合は、試算で7.3% でした。試算では M をいちばん起こりやすい値として扱っており、どの作業も遅れる側の幅のほうが広いため、合計が M の合計に収まることはまれです。バッファなしの計画は成り立ちにくいことが数字で分かります。
- 半分法と二乗和平方根法が同じ値になるのは、同じ大きさの作業が4件のときでした。4件より少ないと二乗和平方根法のほうが大きく(2件で4.2日と3.0日)、多いと半分法のほうが大きくなります。
- 一律20%(45.6日)は、独立にぶれる場合で77.0% でした。8作業の例では、20%は半分法・二乗和平方根法より小さい値です。
- 三点見積もりの「期待値+2×標準偏差」(46.1日)は80.9% でした。期待値の式は山を M に寄せて計算するため、ここで使った三角分布の平均(43.0日)より期待値の合計(40.5日)が小さく出ます。
- 全作業が同じ向きにぶれると、二乗和平方根法は95.9%から74.3%に下がりました。 共通の原因がある計画では、半分法(83.3%)でも足りない場合があります。
- 二乗和平方根法は、余裕の大きい作業に強く引っ張られます。 8作業のうち T4 と T7 の2作業だけで、二乗和128のうち72(56%)を占めました。この2作業の見積もりを丁寧に行うと、バッファの精度が上がります。
よくある質問
Q. プロジェクトバッファとは何ですか? A. 余裕を抜いた見積もりで組んだ計画の最後に、1つだけ置く余裕の時間です。作業ごとのぶれをまとめて吸収し、完了の約束日を守る役割を持ちます。
Q. バッファは何パーセント取ればよいですか? A. 決まった割合はなく、作業ごとの余裕から計算します。8作業の例では、余裕を抜いた合計に対して二乗和平方根法で30%、半分法で39%でした。
Q. 半分法と二乗和平方根法の違いは何ですか? A. 半分法は余裕の合計の半分、二乗和平方根法は余裕の二乗の合計の平方根です。作業数が多いほど半分法のほうが大きくなります。
Q. バッファとフロートの違いは何ですか? A. バッファは意図して計画に置く余裕で、フロートは作業のつながりから計算で出てくる余裕です。フロートはクリティカルパス上の作業では0になります。
Q. バッファが足りなくなりそうなときはどうしますか? A. 判定が黄になった時点で、取り戻す案を用意します。赤になったら案を実行し、完了の約束日への影響を関係者に知らせます。
まとめ
- バッファは各作業に上乗せせず、余裕を抜いた見積もりの合計に対して最後に1つ置く。
- 半分法=余裕の合計÷2、二乗和平方根法=√(余裕の二乗の合計)。
- 作業数が少ないなら半分法、多いなら二乗和平方根法。 一緒に遅れやすい計画は大きいほうを選ぶ。
- 合流バッファは、別の流れが主の流れに合流する手前に置く。
- 進行中は、バッファ消費率と進捗率を比べて緑・黄・赤で判定する。
- 予備費は名前のつくリスクへの備え、マネジメント予備は予見していないことへの備え、フロートは計算で出る余裕。
参考・出典
- PMI「PMI Lexicon of Project Management Terms」Version 5.0(2026年1月更新、確認日 2026-10-06)https://www.pmi.org/-/media/pmi/documents/registered/pdf/pmbok-standards/pmi-lexicon-pm-terms.pdf
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「バッファの見積もりと取り方|プロジェクトバッファの計算式とCCPMの例」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。