<p><!--
{
"title": "クリティカルパス法(CPM)の解説とIPA午前Ⅱ対策",
"primary_category": "プロジェクト管理",
"secondary_categories": [
"スケジュール管理",
"品質管理"
],
"tags": [
"クリティカルパス",
"CPM",
"プロジェクトマネジメント",
"IPA午前Ⅱ",
"ネットワーク図",
"フロート"
],
"summary": "プロジェクト管理におけるクリティカルパス法(CPM)の概念、計算手順、重要性を解説します。Mermaidでネットワーク図と計算例を示し、IPA午前Ⅱ試験で問われるポイントを説明します。",
"mermaid": "graph TD\n start[プロジェクト開始] --> A(タスクA: 3日)\n A –> B(タスクB: 4日)\n A –> C(タスクC: 5日)\n B –> D(タスクD: 2日)\n C –> D(タスクD: 2日)\n D –> end[プロジェクト終了]”,
“verify_level”: “draft”,
“tweet_hint”: “IPA午前Ⅱ対策!クリティカルパス法をMermaid図解で徹底解説。プロジェクト管理の要点を掴もう。 #IPA午前Ⅱ
#CPM ”,
“link_hints”: []
}
–></p>
<h1 class="wp-block-heading">クリティカルパス法(CPM)の解説とIPA午前Ⅱ対策</h1>
<p>クリティカルパス法は、プロジェクトの最短完了期間と、その期間に直接影響を与える重要タスクの経路を特定するスケジュール管理手法です。</p>
<p>本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h2 class="wp-block-heading">背景</h2>
<p>現代のプロジェクト管理では、複雑なタスク間の依存関係や限られたリソースの中で、納期を厳守することが求められます。プロジェクトが大規模化・複雑化するにつれて、計画通りに進めるための精密なスケジュール管理が不可欠となります。</p>
<h2 class="wp-block-heading">問題点</h2>
<p>プロジェクトの進行において、どのタスクの遅延がプロジェクト全体の遅延に直結するのか、また、プロジェクトを最短で完了させるためにどのタスクにリソースを集中すべきか、直感的に判断することは困難です。このような不確実性が、プロジェクトのスケジュール遅延リスクを高める要因となります。</p>
<h2 class="wp-block-heading">クリティカルパス法(CPM)による解決と計算手順</h2>
<p>クリティカルパス法(Critical Path Method: CPM)は、プロジェクトの全アクティビティをネットワーク図で表現し、最早開始時刻・最早終了時刻・最遅開始時刻・最遅終了時刻を計算することで、プロジェクト全体の所要期間と、その期間に直接影響を与える「クリティカルパス」を特定する手法です[1]。クリティカルパス上のアクティビティは、一切の遅延が許されず、遅れるとプロジェクト全体の完了が遅れます。</p>
<p>具体的な計算手順は以下の通りです。</p>
<h3 class="wp-block-heading">1. ネットワーク図の作成</h3>
<p>プロジェクトを構成する個々のアクティビティ(タスク)をノードとし、タスク間の先行関係を矢印(エッジ)で結んでネットワーク図を作成します。アクティビティの期間も明記します。</p>
<p>例えば、以下のようなプロジェクトを考えます。</p>
<ul class="wp-block-list">
<li><p>タスクA: 期間3日、先行タスクなし</p></li>
<li><p>タスクB: 期間4日、先行タスクA</p></li>
<li><p>タスクC: 期間5日、先行タスクA</p></li>
<li><p>タスクD: 期間2日、先行タスクB, C</p></li>
</ul>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
subgraph プロジェクトタスク
A["タスクA: 期間3日"]
B["タスクB: 期間4日"]
C["タスクC: 期間5日"]
D["タスクD: 期間2日"]
end
Start("(プロジェクト開始")) --> |完了後| A
A --> |完了後| B
A --> |完了後| C
B --> |完了後| D
C --> |完了後| D
D --> End("(プロジェクト終了"))
</pre></div>
<h3 class="wp-block-heading">2. 早最開始時刻(ES)と最早終了時刻(EF)の計算(フォワードパス)</h3>
<p>プロジェクト開始から順に、各アクティビティが最も早く開始できる時刻(ES: Earliest Start)と、最も早く完了できる時刻(EF: Earliest Finish)を計算します。</p>
<ul class="wp-block-list">
<li><p><strong>ES</strong>: 先行する全アクティビティのEFの最大値</p></li>
<li><p><strong>EF</strong>: ES + アクティビティ期間</p></li>
</ul>
<h3 class="wp-block-heading">3. 最遅終了時刻(LF)と最遅開始時刻(LS)の計算(バックワードパス)</h3>
<p>プロジェクト完了時刻から逆順に、各アクティビティが最も遅く終了してもプロジェクト全体に影響を与えない時刻(LF: Latest Finish)と、最も遅く開始してもプロジェクト全体に影響を与えない時刻(LS: Latest Start)を計算します。</p>
<ul class="wp-block-list">
<li><p><strong>LF</strong>: 後続する全アクティビティのLSの最小値</p></li>
<li><p><strong>LS</strong>: LF – アクティビティ期間</p></li>
<li><p>最終アクティビティのLFは、プロジェクトの最早完了時刻(フォワードパスで求めた最終EF)とします。</p></li>
</ul>
<h3 class="wp-block-heading">4. フロート(余裕時間)の計算</h3>
<p>各アクティビティのフロート(Float)は、そのアクティビティが遅れてもプロジェクト全体の完了時期に影響を与えない余裕時間を示します。</p>
<ul class="wp-block-list">
<li><strong>フロート</strong>: LS – ES または LF – EF</li>
</ul>
<h3 class="wp-block-heading">5. クリティカルパスの特定</h3>
<p>フロートがゼロとなるアクティビティが連なる経路がクリティカルパスです。クリティカルパス上のアクティビティが一つでも遅延すると、プロジェクト全体の完了が遅延します。</p>
<p>上記例題における計算結果は以下の通りです。</p>
<figure class="wp-block-table"><table>
<thead>
<tr>
<th style="text-align:left;">アクティビティ</th>
<th style="text-align:left;">期間 (日)</th>
<th style="text-align:left;">先行タスク</th>
<th style="text-align:left;">ES (最早開始)</th>
<th style="text-align:left;">EF (最早終了)</th>
<th style="text-align:left;">LS (最遅開始)</th>
<th style="text-align:left;">LF (最遅終了)</th>
<th style="text-align:left;">フロート (日)</th>
<th style="text-align:left;">クリティカルパス</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">A</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">なし</td>
<td style="text-align:left;">0</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">0</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">0</td>
<td style="text-align:left;">Yes</td>
</tr>
<tr>
<td style="text-align:left;">B</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;">A</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">7</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;">8</td>
<td style="text-align:left;">1</td>
<td style="text-align:left;">No</td>
</tr>
<tr>
<td style="text-align:left;">C</td>
<td style="text-align:left;">5</td>
<td style="text-align:left;">A</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">8</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">8</td>
<td style="text-align:left;">0</td>
<td style="text-align:left;">Yes</td>
</tr>
<tr>
<td style="text-align:left;">D</td>
<td style="text-align:left;">2</td>
<td style="text-align:left;">B, C</td>
<td style="text-align:left;">8</td>
<td style="text-align:left;">10</td>
<td style="text-align:left;">8</td>
<td style="text-align:left;">10</td>
<td style="text-align:left;">0</td>
<td style="text-align:left;">Yes</td>
</tr>
</tbody>
</table></figure>
<p>この計算結果から、プロジェクト全体の完了期間は10日であり、タスクA、C、Dがクリティカルパス上にあることがわかります。</p>
<p>クリティカルパスを視覚化したネットワーク図(強調表示):</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
subgraph プロジェクトタスク
A["タスクA: 期間3日"]
B["タスクB: 期間4日"]
C["タスクC: 期間5日"]
D["タスクD: 期間2日"]
end
Start("(プロジェクト開始")) --> |完了後| A
A --> |完了後| B
A --> |完了後| C
B --> |完了後| D
C --> |完了後| D
D --> End("(プロジェクト終了"))
style A fill:#FFE0B2,stroke:#FB8C00,stroke-width:2px /* Critical */
style B fill:#E0F2F7,stroke:#26C6DA,stroke-width:2px /* Non-Critical */
style C fill:#FFE0B2,stroke:#FB8C00,stroke-width:2px /* Critical */
style D fill:#FFE0B2,stroke:#FB8C00,stroke-width:2px /* Critical */
linkStyle 1 stroke-width:3px,stroke:red; /* A->B */
linkStyle 2 stroke-width:3px,stroke:red; /* A->C */
linkStyle 3 stroke-width:3px,stroke:red; /* B->D */
linkStyle 4 stroke-width:3px,stroke:red; /* C->D */
</pre></div>
<p><strong>注</strong>: 上図の強調表示は、視覚的にクリティカルパス(A -> C -> D)を示すためのものであり、Mermaidの<code>linkStyle</code>ではすべてのエッジが赤く表示されています。実際のクリティカルパスは、タスクA、C、Dを通過する経路です。タスクBはクリティカルパス外です。</p>
<h2 class="wp-block-heading">要点</h2>
<ul class="wp-block-list">
<li><p><strong>プロジェクト期間の特定</strong>: クリティカルパス法により、プロジェクトの最短完了期間が明確になります。上記の例では10日間です。</p></li>
<li><p><strong>重要タスクの識別</strong>: フロートがゼロのアクティビティがクリティカルパス上にあり、これらのタスクの遅延はプロジェクト全体の遅延に直結するため、優先的に管理する必要があります。</p></li>
<li><p><strong>リソース配分の最適化</strong>: クリティカルパス上のタスクにリソースを重点的に配分することで、効率的なプロジェクト推進が可能です。</p></li>
<li><p><strong>IPA午前Ⅱ試験対策</strong>: 試験では、与えられたタスク情報からネットワーク図を作成し、フォワードパス・バックワードパスの計算を通じて、プロジェクトの最短期間やクリティカルパス、各タスクのフロートを正確に算出する能力が問われます。</p></li>
</ul>
<p><strong>参考文献</strong>
[1] PMI. PMBOK Guide Glossary. (2024年7月30日アクセス). <a href="https://www.pmbok-guide.jp/pmbok_guide_7th/glossary.html">https://www.pmbok-guide.jp/pmbok_guide_7th/glossary.html</a></p>
A(タスクA: 3日)\n A –> B(タスクB: 4日)\n A –> C(タスクC: 5日)\n B –> D(タスクD: 2日)\n C –> D(タスクD: 2日)\n D –> end[プロジェクト終了]”,
“verify_level”: “draft”,
“tweet_hint”: “IPA午前Ⅱ対策!クリティカルパス法をMermaid図解で徹底解説。プロジェクト管理の要点を掴もう。 #IPA午前Ⅱ #CPM ”,
“link_hints”: []
}
–>
クリティカルパス法(CPM)の解説とIPA午前Ⅱ対策
クリティカルパス法は、プロジェクトの最短完了期間と、その期間に直接影響を与える重要タスクの経路を特定するスケジュール管理手法です。
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証) です。
背景
現代のプロジェクト管理では、複雑なタスク間の依存関係や限られたリソースの中で、納期を厳守することが求められます。プロジェクトが大規模化・複雑化するにつれて、計画通りに進めるための精密なスケジュール管理が不可欠となります。
問題点
プロジェクトの進行において、どのタスクの遅延がプロジェクト全体の遅延に直結するのか、また、プロジェクトを最短で完了させるためにどのタスクにリソースを集中すべきか、直感的に判断することは困難です。このような不確実性が、プロジェクトのスケジュール遅延リスクを高める要因となります。
クリティカルパス法(CPM)による解決と計算手順
クリティカルパス法(Critical Path Method: CPM)は、プロジェクトの全アクティビティをネットワーク図で表現し、最早開始時刻・最早終了時刻・最遅開始時刻・最遅終了時刻を計算することで、プロジェクト全体の所要期間と、その期間に直接影響を与える「クリティカルパス」を特定する手法です[1]。クリティカルパス上のアクティビティは、一切の遅延が許されず、遅れるとプロジェクト全体の完了が遅れます。
具体的な計算手順は以下の通りです。
1. ネットワーク図の作成
プロジェクトを構成する個々のアクティビティ(タスク)をノードとし、タスク間の先行関係を矢印(エッジ)で結んでネットワーク図を作成します。アクティビティの期間も明記します。
例えば、以下のようなプロジェクトを考えます。
タスクA: 期間3日、先行タスクなし
タスクB: 期間4日、先行タスクA
タスクC: 期間5日、先行タスクA
タスクD: 期間2日、先行タスクB, C
graph TD
subgraph プロジェクトタスク
A["タスクA: 期間3日"]
B["タスクB: 期間4日"]
C["タスクC: 期間5日"]
D["タスクD: 期間2日"]
end
Start("(プロジェクト開始")) --> |完了後| A
A --> |完了後| B
A --> |完了後| C
B --> |完了後| D
C --> |完了後| D
D --> End("(プロジェクト終了"))
2. 早最開始時刻(ES)と最早終了時刻(EF)の計算(フォワードパス)
プロジェクト開始から順に、各アクティビティが最も早く開始できる時刻(ES: Earliest Start)と、最も早く完了できる時刻(EF: Earliest Finish)を計算します。
ES : 先行する全アクティビティのEFの最大値
EF : ES + アクティビティ期間
3. 最遅終了時刻(LF)と最遅開始時刻(LS)の計算(バックワードパス)
プロジェクト完了時刻から逆順に、各アクティビティが最も遅く終了してもプロジェクト全体に影響を与えない時刻(LF: Latest Finish)と、最も遅く開始してもプロジェクト全体に影響を与えない時刻(LS: Latest Start)を計算します。
4. フロート(余裕時間)の計算
各アクティビティのフロート(Float)は、そのアクティビティが遅れてもプロジェクト全体の完了時期に影響を与えない余裕時間を示します。
フロート : LS – ES または LF – EF
5. クリティカルパスの特定
フロートがゼロとなるアクティビティが連なる経路がクリティカルパスです。クリティカルパス上のアクティビティが一つでも遅延すると、プロジェクト全体の完了が遅延します。
上記例題における計算結果は以下の通りです。
アクティビティ
期間 (日)
先行タスク
ES (最早開始)
EF (最早終了)
LS (最遅開始)
LF (最遅終了)
フロート (日)
クリティカルパス
A
3
なし
0
3
0
3
0
Yes
B
4
A
3
7
4
8
1
No
C
5
A
3
8
3
8
0
Yes
D
2
B, C
8
10
8
10
0
Yes
この計算結果から、プロジェクト全体の完了期間は10日であり、タスクA、C、Dがクリティカルパス上にあることがわかります。
クリティカルパスを視覚化したネットワーク図(強調表示):
graph TD
subgraph プロジェクトタスク
A["タスクA: 期間3日"]
B["タスクB: 期間4日"]
C["タスクC: 期間5日"]
D["タスクD: 期間2日"]
end
Start("(プロジェクト開始")) --> |完了後| A
A --> |完了後| B
A --> |完了後| C
B --> |完了後| D
C --> |完了後| D
D --> End("(プロジェクト終了"))
style A fill:#FFE0B2,stroke:#FB8C00,stroke-width:2px /* Critical */
style B fill:#E0F2F7,stroke:#26C6DA,stroke-width:2px /* Non-Critical */
style C fill:#FFE0B2,stroke:#FB8C00,stroke-width:2px /* Critical */
style D fill:#FFE0B2,stroke:#FB8C00,stroke-width:2px /* Critical */
linkStyle 1 stroke-width:3px,stroke:red; /* A->B */
linkStyle 2 stroke-width:3px,stroke:red; /* A->C */
linkStyle 3 stroke-width:3px,stroke:red; /* B->D */
linkStyle 4 stroke-width:3px,stroke:red; /* C->D */
注 : 上図の強調表示は、視覚的にクリティカルパス(A -> C -> D)を示すためのものであり、MermaidのlinkStyleではすべてのエッジが赤く表示されています。実際のクリティカルパスは、タスクA、C、Dを通過する経路です。タスクBはクリティカルパス外です。
要点
プロジェクト期間の特定 : クリティカルパス法により、プロジェクトの最短完了期間が明確になります。上記の例では10日間です。
重要タスクの識別 : フロートがゼロのアクティビティがクリティカルパス上にあり、これらのタスクの遅延はプロジェクト全体の遅延に直結するため、優先的に管理する必要があります。
リソース配分の最適化 : クリティカルパス上のタスクにリソースを重点的に配分することで、効率的なプロジェクト推進が可能です。
IPA午前Ⅱ試験対策 : 試験では、与えられたタスク情報からネットワーク図を作成し、フォワードパス・バックワードパスの計算を通じて、プロジェクトの最短期間やクリティカルパス、各タスクのフロートを正確に算出する能力が問われます。
参考文献
[1] PMI. PMBOK Guide Glossary. (2024年7月30日アクセス). https://www.pmbok-guide.jp/pmbok_guide_7th/glossary.html
コメント