プロジェクトマネジメントガイド · スケジューリングと時間
クリティカルパス法(CPM):手順、例、計算式
クリティカルパス法(CPM)は、プロジェクト内で互いに依存するアクティビティの最長の連鎖を見つけるスケジューリング手法です。この連鎖が、プロジェクト全体を完了できる最短期間を決めます。本ガイドでは、計算式を説明し、9つのアクティビティの例を手計算でたどり、作業開始後にクリティカルパスをどう活用するかを紹介します。
要点
- クリティカルパスはプロジェクトネットワークを通る最長の経路であり、プロジェクトの最短所要期間を決めます。
- フォワードパスで最早開始日と最早終了日を、バックワードパスで最遅日を求め、その差がフロートになります。
- トータルフロートがゼロのアクティビティはクリティカルです。1つでも遅れると、その時間を取り戻さない限りプロジェクトの終了日がずれます。
- プロジェクトを短縮できるのはクリティカルなアクティビティを短縮した場合だけで、それも別の経路がクリティカルになるまでです。
- クリティカルパスは移動することがあるため、進捗を更新するたびに再計算しましょう。
クリティカルパス法とは?
なお、 クリティカルパス法(CPM) は、アクティビティ、所要期間、依存関係からプロジェクトのスケジュールを算出する方法です。開始から終了までの依存するアクティビティの最長の連なりを特定し、これを クリティカルパスと呼びます。この経路上のアクティビティはすべて順番に行う必要があるため、その合計の長さがプロジェクトの最短所要期間になります。
CPMは、単純なタスクリストでは得られない3つの情報を与えてくれます:
- 日付:プロジェクトを遅らせずに各アクティビティを開始・終了できる最も早い日と最も遅い日。
- フロート:終了日に影響を与えるまでに各アクティビティがどれだけ遅れてよいか(参照: フロートとスラック).
- 焦点:少しでも遅れると終了日がずれるアクティビティの短いリスト。これにより、マネジメントの注意をどこに向けるべきかがわかります。
この手法は1950年代後半、大規模な産業プロジェクトを計画するために、デュポン社のモーガン・R・ウォーカーとレミントンランド社のジェームズ・E・ケリー・ジュニアによって開発されました。3つの所要期間見積りを用いる近縁の手法PERTも、ほぼ同時期に米海軍向けに開発されています。現在ではほぼすべてのスケジューリングツールの内部で同じ計算が行われており、今も PMP資格 試験の中心的なトピックです。
CPMは、 プロジェクトのスケジューリングの中の手法の1つです。アクティビティとその論理関係がわかった段階で、「どれくらいかかり、何が終了日を左右するのか」に答えます。
CPMの主要用語と計算式
| 用語 | 略語 | 意味 |
|---|---|---|
| 所要期間 | D | アクティビティを完了するのに必要な作業時間 |
| 最早開始 | ES | すべての先行アクティビティが終わった後、アクティビティを開始できる最も早い時点 |
| 最早終了 | EF | 終了できる最も早い時点:ES + D |
| 最遅終了 | LF | プロジェクトを遅らせずに終了できる最も遅い時点 |
| 最遅開始 | LS | プロジェクトを遅らせずに開始できる最も遅い時点:LF − D |
| トータルフロート | TF | プロジェクトを遅らせずに遅延できる期間:LS − ES(またはLF − EF) |
| フリーフロート | FF | どの後続アクティビティも遅らせずに遅延できる期間:後続アクティビティのESの最小値 − EF |
| クリティカルパス | 通常のスケジュールで、アクティビティのトータルフロートがゼロである経路 | |
| ニアクリティカルパス | フロートがわずかしかなく、小さな遅れでクリティカルになりうる経路 |
以下の計算式は 0日目方式を使用しています。この方式ではプロジェクトは時点0から始まり、アクティビティの最早終了はそれが終わる時点を表します。多くの教科書やPMP試験で使われている方式です。もう一方の1日目方式については後述します。
- フォワードパス:ES = すべての先行アクティビティのEFの最大値(最初のアクティビティは0)、EF = ES + D。
- バックワードパス:LF = すべての後続アクティビティのLSの最小値(最後のアクティビティはプロジェクトの終了時点)、LS = LF − D。
- トータルフロート = LS − ES = LF − EF。
- フリーフロート = 後続アクティビティのESの最小値 − EF。
6ステップでクリティカルパスを見つける方法
1. アクティビティと所要期間を一覧にする
出発点は WBS(ワーク・ブレークダウン・ストラクチャー) を行い、すべてのアクティビティを、同じ単位(通常は稼働日)の所要期間見積りとともに一覧にします。マイルストーンは所要期間ゼロのアクティビティとして含めます。
2. 依存関係を特定する
各アクティビティについて、開始前に終わっていなければならないアクティビティを記録します。これらがそのアクティビティの 先行アクティビティと後続アクティビティです。ほとんどの関係は終了-開始型です。その他の種類については タスクの依存関係 のガイドで解説しています。
3. ネットワーク図を描く
各アクティビティを箱として描き(アクティビティ・オン・ノード、またはプレシデンス・ダイアグラム法)、依存関係に沿って矢印で箱をつなぎます。最初のアクティビティ以外はすべて先行アクティビティを持ち、最後のアクティビティ以外はすべて後続アクティビティを持つ必要があります。
4. フォワードパスを行う
左から右へ進めます。最初のアクティビティは0から開始します。それ以外の各アクティビティの最早開始は、先行アクティビティの最早終了のうち 最大 値です。すべての先行アクティビティが終わるまで開始できないからです。所要期間を足すと最早終了が求まります。ネットワーク内で最大の最早終了がプロジェクトの所要期間です。
5. バックワードパスを行う
右から左へ進めます。最後のアクティビティの最遅終了をプロジェクトの所要期間と同じに設定します。それ以外の各アクティビティの最遅終了は、後続アクティビティの最遅開始のうち 最小 値です。後続アクティビティのうち最も早いものに間に合うように終わらなければならないからです。所要期間を引くと最遅開始が求まります。
6. フロートを計算し、クリティカルパスを特定する
各アクティビティについてLSからESを引きます。トータルフロートがゼロのアクティビティがクリティカルであり、それらを開始から終了までつなぐとクリティカルパスになります。チーム全員が見られるように、 ガントチャート 上で強調表示しましょう。
クリティカルパス法の例
ある小規模チームが新しいWebサイトを立ち上げます。プロジェクトマネージャーは9つのアクティビティを、稼働日単位の所要期間とともに一覧にしました:
| アクティビティ | 説明 | 所要期間 | 先行アクティビティ |
|---|---|---|---|
| A | 要求事項に合意する | 3 | なし |
| B | ページを設計する | 5 | A |
| C | ホスティングを設定 | 2 | A |
| D | コンテンツを書く | 6 | A |
| E | フロントエンドを構築 | 7 | B |
| F | バックエンドを構築 | 6 | B, C |
| G | コンテンツを取り込む | 2 | D, E |
| H | テスト | 3 | F, G |
| I | 公開 | 1 | H |
ネットワーク内の経路
小規模なネットワークでは、すべての経路を列挙するとよい検算になります:
| パス | 計算 | 期間 |
|---|---|---|
| A-B-E-G-H-I | 3 + 5 + 7 + 2 + 3 + 1 | 21日 |
| A-B-F-H-I | 3 + 5 + 6 + 3 + 1 | 18日 |
| A-C-F-H-I | 3 + 2 + 6 + 3 + 1 | 15日 |
| A-D-G-H-I | 3 + 6 + 2 + 3 + 1 | 15日 |
最長の経路はA-B-E-G-H-Iの21日なので、これがクリティカルパスです。数百のアクティビティがある実際のプロジェクトではすべての経路を列挙できないため、フォワードパスとバックワードパスが重要になります。
フォワードパス
- Aは0に開始し、3に終了します。
- B、C、DはいずれもAの後に続くため、それぞれ3に開始します。Bは8、Cは5、Dは9に終了します。
- EはBの後に続きます:8に開始し、15に終了します。
- FはBとCの後に続きます。2つのうち遅いほう(Bの8)を待つ必要があるため、8に開始し、14に終了します。
- GはD(9)とE(15)の後に続くため、15に開始し、17に終了します。
- HはF(14)とG(17)の後に続くため、17に開始し、20に終了します。
- Iは20に開始し、21に終了します。プロジェクトの所要期間は21日です。
バックワードパス
- Iは21までに終了する必要があるため、20までに開始しなければなりません。Hは20までに終了し、17までに開始する必要があります。
- Gは17(Hの最遅開始)までに終了し、15までに開始する必要があります。Fも17までに終了すればよいので、開始は最も遅くて11です。
- Eは15(Gの最遅開始)までに終了し、8までに開始する必要があります。Dも15までに終了すればよいので、開始は最も遅くて9です。
- Cは11(Fの最遅開始)までに終了すればよいので、開始は最も遅くて9です。
- Bには後続アクティビティが2つあります:E(最遅開始8)とF(最遅開始11)です。小さいほうを採用するため、Bは8までに終了し、3までに開始する必要があります。
- Aには最遅開始が3、9、9の後続アクティビティが3つあります。3までに終了し、0までに開始する必要があります。
フロートとクリティカルパス
| アクティビティ | D | ES | EF | LS | LF | トータルフロート | フリーフロート |
|---|---|---|---|---|---|---|---|
| A | 3 | 0 | 3 | 0 | 3 | 0 | 0 |
| B | 5 | 3 | 8 | 3 | 8 | 0 | 0 |
| C | 2 | 3 | 5 | 9 | 11 | 6 | 3 |
| D | 6 | 3 | 9 | 9 | 15 | 6 | 6 |
| E | 7 | 8 | 15 | 8 | 15 | 0 | 0 |
| F | 6 | 8 | 14 | 11 | 17 | 3 | 3 |
| G | 2 | 15 | 17 | 15 | 17 | 0 | 0 |
| H | 3 | 17 | 20 | 17 | 20 | 0 | 0 |
| I | 1 | 20 | 21 | 20 | 21 | 0 | 0 |
アクティビティA、B、E、G、H、Iはトータルフロートがゼロで、クリティカルパスを構成します。注目すべき点が3つあります:
- Cのトータルフロートは6日ですが、フリーフロートは3日しかありません。 3日までは何にも影響を与えずに遅れることができます。それを超えるとFの開始が遅れ始め、Fのフロートを食いつぶしますが、6日すべてを使い切るまではプロジェクトは予定どおりに終了します。
- Fはニアクリティカルです。 フロートが3日しかないため、バックエンド構築が少し超過しただけで経路A-B-F-H-Iがクリティカルになります。
- Dのフロートはすべて自分だけのものです。 コンテンツ作成は他のどのアクティビティにも影響を与えずに最大6日遅れることができるため、必要に応じてクリティカルな作業に人員を貸し出す有力な候補になります。
6つのアクティビティのネットワークを使った同じ計算を、セルごとに フォワードパスとバックワードパス のガイドで紹介しています。また、無料の クリティカルパステンプレートもダウンロードできます。フロートを計算し、クリティカルなアクティビティに自動でフラグを付けてくれます。
0日目か1日目か:2つの計算方式
フォワードパスとバックワードパスには2通りの数え方があり、答えが1ずつ異なります。どちらも誤りではありませんが、混在させてはいけません。
| 0日目方式 | 1日目方式 | |
|---|---|---|
| 最初のアクティビティの開始 | ES = 0 | ES = 1 |
| 最早終了 | EF = ES + D | EF = ES + D − 1 |
| 次のアクティビティの開始 | ES = 先行アクティビティのEF | ES = 先行アクティビティのEF + 1 |
| 最遅開始 | LS = LF − D | LS = LF − D + 1 |
| 前のアクティビティの最遅終了 | LF = 後続アクティビティのLS | LF = 後続アクティビティのLS − 1 |
| トータルフロート | LS − ES | LS − ES(結果は同じ) |
0日目方式では、「3に終了」は3日目の終わりを意味します。1日目方式では、例のアクティビティAは1日目から3日目まで、Bは4日目から8日目まで、というように進み、カレンダーの読み方と一致します。フロートとクリティカルパスはどちらの方式でも同じです。試験の解答や同僚の数値がすべてのアクティビティで1日ずれている場合、たいていは方式の違いが原因です。
CPMにおける依存関係、ラグ、制約
基本的な手法では、すべての関係が間隔なしの終了-開始型であると仮定しています。実際のスケジュールはもっと多様で、パスの計算は次のように調整されます:
- ラグ は関係に待ち時間を加えます。2日のラグがある終了-開始型の関係では、後続アクティビティのESは先行アクティビティのEF + 2になります。 リード は負のラグで、作業を重複させることができます。参照: リードとラグ.
- 開始-開始(SS) の関係は、後続アクティビティの開始を先行アクティビティの開始に結び付けます。例:「開発開始の3日後にテストを開始する」。
- 終了-終了(FF) の関係は、2つの終了を結び付けます。例:「ビルドが終了したらドキュメント作成も終了する」。
- 日付制約 (「指定日に終了」や「指定日以降に開始」など)は、計算された日付より優先されます。スケジュールが自然に再計算されなくなるため、使用は控えめにしましょう。
- マイナスのフロート は、制約や必須の終了日が計算上の終了日より早い場合に発生します。負のフロートの量から、どれだけの時間を取り戻す必要があるかがわかります。
ほとんどのスケジューリングソフトウェアはこれらすべてを自動で処理します。クリティカルパスを手計算で確認するときは、まずラグと制約を確認しましょう。手計算がツールの結果と一致しない原因はたいていそこにあります。
CPM、PERT、クリティカルチェーンの比較
CPMは、2つの関連手法と一緒に教えられることがよくあります。それぞれ答える問いが少しずつ異なります。
| CPM | PERT | クリティカルチェーン | |
|---|---|---|---|
| 所要期間 | アクティビティごとに1つの見積り | 3つの見積り:(O + 4M + P) ÷ 6 | 余裕を含めない集中した見積りとバッファー |
| 主な問い | どのアクティビティが終了日を左右するか? | 終了日はどれくらい不確実か? | 資源の制約は終了日にどう影響するか? |
| 資源 | 利用可能であると仮定 | 利用可能であると仮定 | 資源の制約に合わせてスケジュールを組む |
| 主な用途 | 建設、エンジニアリング、計画型のプロジェクト全般 | 研究、新製品、不確実な作業 | マルチプロジェクト環境や資源が制約された環境 |
実務ではこれらをうまく組み合わせられます。PERTの見積りをCPM計算の所要期間として使い、その後 モンテカルロ・シミュレーション を実行して、終了日の見込みの幅を確認できます。
進行中のプロジェクトでクリティカルパスを活用する
計画段階でクリティカルパスを見つけることは、価値の半分にすぎません。実行中は次のことを行いましょう:
- 一定の周期で進捗を更新し、再計算する(通常は毎週)。実績日と残りの所要期間を記録し、ツールにパスを再計算させます。
- 経路が移動していないか確認する。 クリティカルでないアクティビティがフロートを超えて遅れると、その経路がクリティカルになります。クリティカルなアクティビティが早く終わると、別の経路がクリティカルになることがあります。
- ニアクリティカルパスに注意する。 クリティカルなアクティビティに加えて、フロートがたとえば5日以下のアクティビティも報告しましょう。例ではFにもクリティカルなアクティビティと同じくらいの注意が必要です。
- 複数のクリティカルパスに警戒する。 2つ以上の経路のフロートがゼロの場合、そのどれか1つが遅れてもプロジェクトが遅れるため、全体として終了が遅れるリスクが高くなります。
- 資源を確認する。 CPMは、論理上可能なときにはいつでも人員が対応できると仮定しています。過剰割り当てを解消するための 資源平準化 によって、クリティカルパスが長くなったり、新たなクリティカルパスが生じたりすることがあります。
クリティカルパスを短縮する方法
計算上の終了日がビジネス上の必要より遅い場合、主な選択肢は4つあります。資源を追加してクリティカルなアクティビティをクラッシングする、順番に計画していたアクティビティを重ねてファストトラッキングする、スコープを縮小する、または論理関係を変更する、です。トレードオフについては スケジュール短縮 と ファストトラッキングとクラッシング のガイドで解説しています。
短縮には限界があります。例では、フロントエンド構築(E)を7日から4日に短縮すると3日節約でき、プロジェクトは18日になります。Eをそれ以上短縮しても何も節約できません。経路A-B-F-H-I(18日)がクリティカルになるからです。変更のたびに必ず再計算し、新しいクリティカルパスがどこにあるかを確認しましょう。
クリティカルパス法の利点と限界
| 利点 | 限界 |
|---|---|
| どのアクティビティが終了日を決め、どこで遅れが問題になるかがわかる | 単一の見積りを使うため、実際より確実に見えることがある |
| フロートを計算するため、どこに柔軟性があるかがわかる | スケジュールを平準化しない限り、資源は無制限と仮定する |
| 期限やトレードオフの判断に論理的な根拠を与える | 信頼性を確保するには、完全で正確な依存関係が必要 |
| 進捗を更新するとすぐに遅れの影響が浮き彫りになる | 大規模なネットワークにはソフトウェアと保守担当者が必要 |
| 順序のある作業ならどの業界でも使える | スプリントごとにスコープが変わる反復性の高い作業ではあまり役に立たない |
所要期間が不確実な場合は、PERTの見積りやシミュレーションを加えましょう。資源負荷の大きいプロジェクトでは、スケジュールを平準化するか、 クリティカルチェーン・プロジェクトマネジメントを検討しましょう。アジャイルの作業では、個々のストーリーではなく、リリースやマイルストーンのレベルでクリティカルパスを使います。
クリティカルパスでよくある間違い
- 依存関係の欠落。 後続アクティビティのないアクティビティがあると計算が途中で終わり、本当のクリティカルパスが隠れてしまうことがあります。
- 日付の直接入力。 アクティビティをリンクせずに開始日を入力すると、パスの計算が機能しなくなります。
- 方式の混在。 フォワードパスに0日目方式、バックワードパスに1日目方式を使うと、フロートが1ずれます。
- カレンダーの無視。 論理関係が正しくても、週末、祝日、パートタイムの資源によって実際の日付は変わります。
- 一度計算したきりにすること。 クリティカルパスは毎週移動する可能性があります。計画段階の経路が2か月後には意味をなさないこともあります。
- フロートを誰もが使える予備時間として扱うこと。 トータルフロートは経路上で共有されています。あるアクティビティがそれを使うと、同じ経路上の後のアクティビティのフロートは少なくなります。
クリティカルパスのツールとテンプレート
小規模なネットワークならスプレッドシートが便利で、計算の理解にも役立ちます。当サイトの無料の クリティカルパステンプレート には、所要期間、先行アクティビティ、最早日・最遅日、トータルフロート、クリティカルフラグの列があります。また、 プロジェクトスケジュールテンプレート は、結果を日付と担当者に落とし込みたいときに役立ちます。
それより大きなものには、所要期間や依存関係が変わるたびにパスを自動で再計算するソフトウェアを使いましょう。依存関係に対応したガントチャートを備えたプロジェクト管理ツールのほとんどは、どのタスクが終了日を左右するかを表示できます。 Wrike(当サイトのランキング1位のツール)は、インタラクティブなガントチャートと依存関係で複数のプロジェクトを管理するチームに適しており、 Smartsheet はスプレッドシート形式を好む計画担当者に適しています。購入前に、必要なスケジューリング機能がどのプランに含まれているかを確認しましょう。
このトピックの無料テンプレート
よくある質問
プロジェクトマネジメントにおけるクリティカルパス法とは何ですか?
クリティカルパス法は、アクティビティ、所要期間、依存関係を使って、各アクティビティの最早日と最遅日を計算するスケジューリング手法です。依存するアクティビティの最長の連鎖であるクリティカルパスを特定し、これがプロジェクトの最短所要期間を決めます。
クリティカルパスはどのように計算しますか?
アクティビティ、所要期間、依存関係を一覧にし、フォワードパスで最早開始日と最早終了日を、バックワードパスで最遅開始日と最遅終了日を求めてから、トータルフロート(LS − ES)を計算します。トータルフロートがゼロのアクティビティがクリティカルパスを構成します。
クリティカルパスは最長の経路ですか、最短の経路ですか?
ネットワークを通る最長の経路です。その上のアクティビティは順番に行う必要があるため、最長の経路がプロジェクト全体を完了できる最短期間になります。
クリティカルパス法の手順は?
アクティビティを一覧にし、依存関係を特定し、ネットワーク図を描き、フォワードパスとバックワードパスを行い、フロートを計算して、フロートゼロのアクティビティをクリティカルパスとして特定します。
トータルフロートとフリーフロートの違いは何ですか?
トータルフロートは、プロジェクトの終了を遅らせずにアクティビティが遅れてよい期間です。フリーフロートは、どの後続アクティビティの最早開始も遅らせずに遅れてよい期間です。フリーフロートは常にトータルフロート以下です。
1つのプロジェクトにクリティカルパスが複数あることはありますか?
はい。2つ以上の経路が最長の所要期間を共有している場合、それらはすべてクリティカルです。どれか1つが遅れてもプロジェクトが遅れるため、スケジュールリスクが高まります。
プロジェクトの途中でクリティカルパスは変わりますか?
はい。クリティカルでないアクティビティがフロートを超えて遅れたり、クリティカルなアクティビティが早く終わったりすると、別の経路がクリティカルになることがあります。そのため、進捗を更新するたびに再計算すべきです。
マイナスのフロートとは何ですか?
負のフロートは、必須の終了日や制約が計算上の終了日より早い場合に発生します。その日付に間に合わせるために何日取り戻す必要があるかを示します。
CPMとPERTの違いは何ですか?
CPMは各アクティビティに単一の所要期間見積りを使い、論理関係とフロートに焦点を当てます。PERTは楽観値、最可能値、悲観値の見積りを使って不確実性を反映します。詳しくは PERTチャート ガイドをご覧ください。
クリティカルパス法を開発したのは誰ですか?
CPMは1950年代後半、大規模な産業プロジェクトを計画するために、デュポン社のモーガン・R・ウォーカーとレミントンランド社のジェームズ・E・ケリー・ジュニアによって開発されました。
ほぼクリティカルなパスとは何ですか?
フロートがわずかしかない経路です。小さな遅れでクリティカルになりうるため、クリティカルパスとほぼ同じくらい注意深く監視すべきです。
クリティカルパスを短縮するにはどうすればよいですか?
資源を追加してクリティカルなアクティビティをクラッシングする、アクティビティを重ねてファストトラッキングする、スコープを縮小する、または論理関係を変更します。プロジェクトが短くなるのはクリティカルなアクティビティを変更した場合だけで、それも別の経路がクリティカルになるまでです。
クリティカルパス法はアジャイルでも使われていますか?
はい。ただし通常はより上位のレベルで使われます。ハイブリッド型のプロジェクトでは、リリース、マイルストーン、チーム間の依存関係にCPMを使い、各チーム自体はスプリントで計画することがよくあります。