クリティカルパスとは、依存関係でつながったタスクの最も長い連鎖で、最も早い終了日を決めるものです。ガントチャートの具体例で見つけ方を学びましょう。
クリティカルパスとは、プロジェクトの中で依存関係によってつながったタスクの最も長い連鎖のことで、その長さがプロジェクトを終えられる最も早い日を決めます。この連鎖上のタスクが遅れると、プロジェクト全体も同じだけ遅れます。この連鎖に含まれないタスクにはフロート(スラックとも呼ばれます)があります。フロートとは、終了日を動かさずにタスクが遅れてもよい時間のことです。
このガイドでは、小さな Web サイトの公開を例に、タスクの一覧からガントチャートまで順を追って説明します。すべての数字をご自身で確かめられます。
クリティカルパス、クリティカルタスク、フロート
- クリティカルパス:開始から終了までの、依存し合うタスクの連鎖のうち、合計期間が最も大きいものです。その長さが、プロジェクトを完了できる最短の時間になります。
- クリティカルタスク:その連鎖上にあるタスクです。フロートは 0 です。
- フロート(スラック):プロジェクトの終了を遅らせずに、タスクを遅らせることができる時間です。
- ニアクリティカルタスク:フロートがわずかしかないタスクです。少し遅れるだけでクリティカルになることがあります。
クリティカルパスは変わることがあります。ニアクリティカルタスクの遅れ、新しい依存関係、新しい見積もりによって、別の連鎖が最も長くなることがあるからです。
クリティカルパスはどうやって見つけますか?
- 終了までに必要なタスクを一覧にします。
- 各タスクの期間を見積もります(単位は稼働日)。
- 依存関係を加えます。各タスクが何を待つ必要があるかを決めます。
- フォワードパス(前進計算):開始から順に、各タスクの最早開始(ES)と最早終了(EF)を計算します。
- バックワードパス(後退計算):終了から逆順に、終了日を守れる各タスクの最遅開始(LS)と最遅終了(LF)を計算します。
- フロート:各タスクについて LS − ES を計算します。フロートが 0 のタスクがクリティカルで、それらをつなげたものがクリティカルパスです。
以下の例では、終了-開始のリンクだけを使います。つまり、タスクは先行タスクが終わった時点で開始します。開始-開始、終了-終了、開始-終了のリンクや、ラグ(リンクに加える待ち時間)を使うと計算は変わりますが、考え方は同じです。それぞれのリンクについては、依存関係の種類のガイドで説明しています。
具体例:小さな Web サイトを公開する
小さなチームが、近所のパン屋さんの Web サイトを公開しようとしています。以下は 7 つのタスクと、それぞれにかかる稼働日数、そしてそれぞれが何を待つかを示したものです。
| タスク | 期間 | 先行タスク |
|---|---|---|
| A · サイトの計画 | 2 日 | なし |
| B · コンテンツの執筆 | 6 日 | A |
| C · ページのデザイン | 4 日 | A |
| D · ページの構築 | 5 日 | C |
| E · ホスティングとドメインの設定 | 2 日 | A |
| F · コンテンツの投入とテスト | 3 日 | B、D、E |
| G · 公開 | 1 日 | F |
日数は定規の目盛りのように、プロジェクトの開始時点を 0 として数えます。2 から 8 までのタスクは、2 日目が終わった時点で始まり、8 日目の終わりに終わるので、期間は 6 日です。
フォワードパス:最早開始と最早終了
最初のタスクから最後のタスクへと進みます。タスクの最早終了は、最早開始に期間を足した値です。タスクは先行タスクがすべて終わってからでないと開始できないので、最早開始は先行タスクの最早終了のうち最も大きい値になります。
- A は 0 から 2 です。
- B、C、E は A だけを待つので、いずれも 2 に開始できます。B は 8、C は 6、E は 4 に終了します。
- D は C を待つので、6 から 11 です。
- F は B(8)、D(11)、E(4)を待ちます。そのうち最後に終わるものを待つ必要があるので、11 から 14 です。
- G は 14 から 15 です。
このプロジェクトには 15 稼働日、つまり稼働日で 3 週間が必要です。
バックワードパス:最遅開始と最遅終了
今度は終了を 15 に保ったまま、最後のタスクから最初のタスクへとさかのぼります。タスクの最遅開始は、最遅終了から期間を引いた値です。タスクは、後続タスクのどれかが開始しなければならない時点までに終わっている必要があるので、最遅終了は後続タスクの最遅開始のうち最も小さい値になります。
- G は 15 までに終わる必要があるので、14 までに開始しなければなりません。
- F は 14 までに終わる必要があるので、11 までに開始しなければなりません。
- B、D、E の後続タスクは F だけなので、いずれも 11 までに終わる必要があります。D は 6 まで、B は 5 まで、E は 9 までに開始しなければなりません。
- C は、D が開始しなければならない 6 までに終わる必要があるので、2 までに開始しなければなりません。
- A は B(5)、C(2)、E(9)の前にあります。3 つのうち最も小さい 2 までに終わる必要があるので、0 までに開始しなければなりません。
フロートとクリティカルパス
フロートは 2 つのパスの差、つまり最遅開始から最早開始を引いた値です。最遅終了から最早終了を引いても同じ数になります。
| タスク | ES | EF | LS | LF | フロート | クリティカル |
|---|---|---|---|---|---|---|
| A · サイトの計画 | 0 | 2 | 0 | 2 | 0 | はい |
| B · コンテンツの執筆 | 2 | 8 | 5 | 11 | 3 | いいえ |
| C · ページのデザイン | 2 | 6 | 2 | 6 | 0 | はい |
| D · ページの構築 | 6 | 11 | 6 | 11 | 0 | はい |
| E · ホスティングとドメインの設定 | 2 | 4 | 9 | 11 | 7 | いいえ |
| F · コンテンツの投入とテスト | 11 | 14 | 11 | 14 | 0 | はい |
| G · 公開 | 14 | 15 | 14 | 15 | 0 | はい |
フロートが 0 のタスクをつなぐと、クリティカルパス A → C → D → F → G になります。期間を合計すると 2 + 4 + 5 + 3 + 1 = 15 日で、プロジェクトの期間と一致します。ほかの連鎖はもっと短く、A → B → F → G は 12 日、A → E → F → G は 8 日です。これが 3 日と 7 日のフロートの出どころです。
ガントチャート上のクリティカルパス
ガントチャートでは、クリティカルパスは開始から終了まですき間なく続くバーの連鎖として表れます。クリティカルなバーはどれも、直前のバーが終わるちょうどその位置から始まります。
淡い延長部分が長いほど、そのタスクには遅れる余地があります。赤いバーには余地がありません。赤いバーが 1 日延びると、その後のすべてのバーと公開日が右へずれます。
タスクが遅れるとどうなりますか?
クリティカルタスクが 2 日遅れた場合。デザイン(C)に 4 日ではなく 6 日かかり、8 に終了します。構築(D)は 8 になるまで開始できずに 13 に終了し、コンテンツの投入とテスト(F)は 13 から 16 になり、公開の終了は 15 ではなく 17 になります。プロジェクトは、デザインが遅れたのとちょうど同じ 2 日だけずれます。
フロートのあるタスクが、フロートの範囲内で遅れた場合。執筆(B)に 6 日ではなく 8 日かかり、10 に終了します。コンテンツの投入とテスト(F)は、11 に終わる構築を待たなければならないことに変わりはないので、ほかには何も動かず、公開は変わらず 15 に終わります。B は 3 日のフロートのうち 2 日を使い、残りは 1 日です。
フロートはバッファであって、自由に使える空き時間ではありません。もし執筆の遅れが 4 日だったら、3 日のフロートをすべて使い切ったうえで公開を 1 日遅らせ、終了は 16 になります。クリティカルパスも変わり、A → B → F → G が最も長い連鎖になります。
| 変更 | 公開の終了 | 終了のずれ |
|---|---|---|
| なし(上記の計画) | 15 | 0 日 |
| デザイン(C)が 2 日延びる | 17 | 2 日 |
| 執筆(B)が 2 日延びる | 15 | 0 日 |
| 執筆(B)が 4 日延びる | 16 | 1 日 |
これこそがクリティカルパスの役割です。どの遅れが終了日を動かし、どの遅れなら計画の中で吸収できるかを教えてくれます。
トータルフロート、フリーフロート、マイナスのフロート
- トータルフロート(総余裕)は、プロジェクトの終了を遅らせずにタスクが遅れてもよい時間です。上の表の数字がこれにあたります。
- フリーフロート(自由余裕)は、次のタスクの最早開始を遅らせずにタスクが遅れてもよい時間です。この例では、B と E はどちらも F にしかつながっていないため、両者は同じ値になります。フロートを持つ複数のタスクが同じ連鎖上にある場合、あるタスクが使ったフロートは、その後に続くタスクのフロートから差し引かれます。
- マイナスのフロート(負のフロート)は、現在の前提のままでは計画が求められた期日に間に合わないことを意味します。使える時間ではなく、範囲、順序、期間、または期日を見直すべきだという警告です。
フロートの読み方と守り方については、フロートとスラックのガイドで詳しく説明しています。
クリティカルパスを使うときのよくある間違い
- 依存関係の抜けや不合理なつながり。最初のタスク以外のすべてのタスクには先行タスクが、最後のタスク以外のすべてのタスクには後続タスクが必要です。抜けがあると、本当の最長の連鎖が見えなくなります。
- サマリータスクを作業そのもののようにリンクする。代わりに、その中にあるタスクどうしをリンクします。
- 期間の見積もりが、実は希望の日付になっている。計算の確かさは、見積もりの確かさ以上にはなりません。
- カレンダーを無視する。週末、祝日、パートタイムのメンバーによって、実際の日付は変わります。
- メンバーの稼働能力を無視する。同じ人が 2 つのタスクを同時に担当しなければならないなら、実際のスケジュールは計算よりも長くなります。
- 「クリティカル」を「重要」と同じ意味で扱う。フロート 0 は計算の結果であり、優先度はビジネス上の判断です。優先度の高いタスクにフロートがあることもあれば、誰も気にかけていない技術的なタスクがクリティカルなこともあります。
- 一度計算して終わりにする。作業の進み具合に合わせて残りの期間を更新し、普段のリズムでパスを見直します。数か月かかるプロジェクトなら毎週、公開の直前なら毎日が目安です。
クリティカルパス法と PERT の比較
タスクごとに 1 つの期間で妥当に見積もることができ、作業の順序が主な課題であれば、クリティカルパス法(CPM)を使います。期間の不確実性を明示的に扱う必要があるなら、PERT 型の三点見積もり(楽観値、最可能値、悲観値)を使います。多くのチームは両者を組み合わせ、不確実なタスクには三点見積もりを使ったうえで、依存関係のネットワークからパスを求めます。
| 観点 | CPM | PERT 型の見積もり |
|---|---|---|
| 主な焦点 | 依存し合う作業の順序 | 期間の不確実性 |
| 期間の入力 | タスクごとに 1 つの見積もり | 楽観値、最可能値、悲観値 |
| 主な出力 | クリティカルパスとニアクリティカルパス | 期待される期間とそのばらつき |
| 主なリスク | 弱いロジックから生まれる見せかけの精度 | 当て推量の幅に対する過信 |
2 つの図の比較については、PERT 図とガントチャートのガイドをご覧ください。
GanttFather ではクリティカルパスをどのように表示しますか?
GanttFather では、ガントビューとリストビューにクリティカルパスの表示を切り替えるスイッチがあります。オンにすると、どのタスクが終了日を決めているかがわかります。タスクは終了-開始、開始-開始、終了-終了、開始-終了のいずれでもリンクでき、ラグも設定できるので、上の例やご自身の計画を、実際の作業の流れどおりにモデル化できます。
GanttFather にはベースライン機能がないため、現在の計画を保存しておいた元の計画と比較することはできません。所有するプロジェクト 1 件までは無料で、編集者 2 名と無制限の無料閲覧者を利用できます。
GanttFather でご自身のクリティカルパスを描いてみましょう
よくある質問
クリティカルパスは常に最も長い経路ですか?
はい。ただし、タスクの数ではなく時間で測ります。依存関係のネットワークを通る連鎖のうち、合計期間が最も大きいものがクリティカルパスです。固定された日付やカレンダーが結果に影響することがあるので、計画が何を稼働時間として数えているかを確認してください。
1 つのプロジェクトにクリティカルパスが複数あることはありますか?
はい。2 本以上の連鎖が、最も長い期間で並ぶことがあります。そのどれが遅れても終了がずれるため、計画が遅れを吸収できる余地は小さくなります。
クリティカルパスは限られたリソースを考慮しますか?
それだけでは考慮しません。古典的な計算は期間と依存関係だけを使い、どのタスクも先行タスクが終わればすぐに開始できると仮定します。同じ人や設備が同時に 2 つのタスクで必要になる場合は、リソース平準化などの稼働能力のチェックが必要で、その結果スケジュールが長くなることがあります。
クリティカルパスとクリティカルチェーンの違いは何ですか?
クリティカルチェーン法は、1997 年にエリヤフ・ゴールドラットが提唱した手法です。クリティカルパスを出発点としながら限られたリソースも考慮し、個々のタスクに含まれていた安全余裕を、連鎖の最後に置く共有バッファへ移します。一方、クリティカルパス法はリソースが利用できると仮定し、フロートは計算の結果どおりの場所に残します。
クリティカルパス法を開発したのは誰ですか?
1950 年代後半に、レミントン・ランド社のジェームズ・E・ケリー・ジュニアと、デュポン社のモーガン・R・ウォーカーが開発しました。PERT はこれとは別に、期間が不確実な研究開発作業のスケジュールを立てるため、米国海軍向けに開発されました。



