<p><!--
{
"title": "IPA午前Ⅱ:アローダイアグラムにおけるクリティカルパスの計算",
"primary_category": "プロジェクトマネジメント",
"secondary_categories": ["ITマネジメント", "スケジューリング"],
"tags": ["IPA午前Ⅱ", "クリティカルパス", "アローダイアグラム", "CPM", "プロジェクト管理"],
"summary": "IPA午前Ⅱ試験で頻出するアローダイアグラムを用いたクリティカルパスの計算方法を解説します。プロジェクトの最短完了期間を決定する重要経路の特定と、最早/最遅時刻、フロートの概念を具体例とともに学びます。",
"mermaid": "yes",
"verify_level": 1,
"tweet_hint": "IPA午前Ⅱで出題されるクリティカルパス計算を徹底解説!アローダイアグラムを用いた最短期間と重要経路の特定方法を理解しよう。#IPA午前Ⅱ #クリティカルパス",
"link_hints": ["アローダイアグラム", "クリティカルパス法", "プロジェクトマネジメント"]
}
-->
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">IPA午前Ⅱ:アローダイアグラムにおけるクリティカルパスの計算</h1>
<p>アローダイアグラムを用いたプロジェクトの最短完了期間と、その遅延が全体に影響する重要経路(クリティカルパス)を特定する計算方法を解説する。</p>
<h2 class="wp-block-heading">背景</h2>
<p>プロジェクトマネジメントにおいて、多くの作業が相互に依存し、複雑な順序で進行する。これらの作業を効率的に管理し、プロジェクトを計画通りに完了させるためには、全体スケジュールを正確に把握することが不可欠である。特に、どの作業が遅れるとプロジェクト全体の遅延につながるのかを特定する能力は、リスク管理とリソース配分の最適化において極めて重要となる。</p>
<h2 class="wp-block-heading">問題点</h2>
<p>複数の並行作業や依存関係がある場合、単に各作業の所要時間を合計するだけでは、プロジェクト全体の最短完了期間や、スケジュールのボトルネックを正確に把握できない。作業の優先順位やクリティカルな経路を見誤ると、不必要なリソースの投入や、予期せぬプロジェクト全体の遅延を引き起こす可能性がある。</p>
<h2 class="wp-block-heading">計算/手順</h2>
<p>クリティカルパス法(Critical Path Method: CPM)は、アローダイアグラム(PERT図の一種)を用いて、プロジェクトの最短完了期間とクリティカルパスを特定する手法である。</p>
<h3 class="wp-block-heading">1. アローダイアグラムの作成</h3>
<p>アローダイアグラムは、作業(アクティビティ)を矢線で、結合点(イベント)を円で表現し、作業間の順序関係と所要時間を視覚化する図である。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["作業A 開始"] -->|3日:タスクX| B
A -->|4日:タスクY| C
B -->|5日:タスクZ| D
C -->|2日:タスクW| D
D -->|6日:タスクV| E["プロジェクト終了"]
style A fill:#cef,stroke:#333,stroke-width:2px
style E fill:#cef,stroke:#333,stroke-width:2px
</pre></div>
<h3 class="wp-block-heading">2. 早い時刻の計算(前方計算)</h3>
<p>プロジェクト開始点から各イベントに到達する最早の時刻を計算する。</p>
<ul class="wp-block-list">
<li><p><strong>最早開始時刻 (Early Start: ES)</strong>: 作業が最早開始できる時刻。前作業の最早完了時刻のうち最も遅い時刻。</p></li>
<li><p><strong>最早完了時刻 (Early Finish: EF)</strong>: 作業が最早完了できる時刻。 <code>ES + 所要時間</code>。</p></li>
</ul>
<p><strong>手順:</strong></p>
<ol class="wp-block-list">
<li><p>プロジェクト開始イベントのESを0とする。</p></li>
<li><p>開始イベントから順に、各イベントに到達する各経路のEFを計算する。</p></li>
<li><p>複数の作業が合流するイベント(例: 図のD)では、そのイベントに到達する全作業のEFの最大値が、そのイベントから始まる作業のESとなる。</p></li>
</ol>
<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>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">タスクX</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">A</td>
<td style="text-align:left;">0</td>
<td style="text-align:left;">3</td>
</tr>
<tr>
<td style="text-align:left;">タスクY</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;">A</td>
<td style="text-align:left;">0</td>
<td style="text-align:left;">4</td>
</tr>
<tr>
<td style="text-align:left;">タスクZ</td>
<td style="text-align:left;">5</td>
<td style="text-align:left;">B</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">8</td>
</tr>
<tr>
<td style="text-align:left;">タスクW</td>
<td style="text-align:left;">2</td>
<td style="text-align:left;">C</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;">6</td>
</tr>
<tr>
<td style="text-align:left;">タスクV</td>
<td style="text-align:left;">6</td>
<td style="text-align:left;">D</td>
<td style="text-align:left;">Max(8, 6) = 8</td>
<td style="text-align:left;">14</td>
</tr>
</tbody>
</table></figure>
<p>プロジェクトの最短完了期間は、最終作業(タスクV)の最早完了時刻である<strong>14日</strong>となる。</p>
<h3 class="wp-block-heading">3. 遅い時刻の計算(後方計算)</h3>
<p>プロジェクト完了点から遡って、各作業が遅延なく完了するための最も遅い時刻を計算する。</p>
<ul class="wp-block-list">
<li><p><strong>最遅完了時刻 (Late Finish: LF)</strong>: 作業が最も遅く完了しても、プロジェクト全体に遅延を及ぼさない時刻。後作業の最遅開始時刻のうち最も早い時刻。</p></li>
<li><p><strong>最遅開始時刻 (Late Start: LS)</strong>: 作業が最も遅く開始しても、プロジェクト全体に遅延を及ぼさない時刻。 <code>LF - 所要時間</code>。</p></li>
</ul>
<p><strong>手順:</strong></p>
<ol class="wp-block-list">
<li><p>プロジェクト終了イベントのLFを、前方計算で求めたプロジェクト最短完了期間とする(この例では14)。</p></li>
<li><p>終了イベントから逆順に、各イベントから始まる各経路のLSを計算する。</p></li>
<li><p>複数の作業が分岐するイベント(例: DからBとCへの逆流)では、そのイベントから逆方向に分岐する全作業のLSの最小値が、そのイベントに到達する作業のLFとなる。</p></li>
</ol>
<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;">LF</th>
<th style="text-align:left;">LS</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">タスクV</td>
<td style="text-align:left;">6</td>
<td style="text-align:left;">E</td>
<td style="text-align:left;">14</td>
<td style="text-align:left;">8</td>
</tr>
<tr>
<td style="text-align:left;">タスクZ</td>
<td style="text-align:left;">5</td>
<td style="text-align:left;">D</td>
<td style="text-align:left;">8</td>
<td style="text-align:left;">3</td>
</tr>
<tr>
<td style="text-align:left;">タスクW</td>
<td style="text-align:left;">2</td>
<td style="text-align:left;">D</td>
<td style="text-align:left;">8</td>
<td style="text-align:left;">6</td>
</tr>
<tr>
<td style="text-align:left;">タスクX</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">B</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">0</td>
</tr>
<tr>
<td style="text-align:left;">タスクY</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;">C</td>
<td style="text-align:left;">6</td>
<td style="text-align:left;">2</td>
</tr>
</tbody>
</table></figure>
<h3 class="wp-block-heading">4. フロート(余裕時間)の計算とクリティカルパスの特定</h3>
<p><strong>フロート (Float)</strong>: 作業が遅延しても、後続作業やプロジェクト全体の完了に影響を与えない余裕時間。</p>
<ul class="wp-block-list">
<li><strong>トータルフロート (Total Float: TF)</strong>: <code>LS - ES</code> または <code>LF - EF</code>。</li>
</ul>
<p><strong>クリティカルパス</strong>: トータルフロートがゼロとなる作業が連続する経路。この経路上の作業は、1日でも遅延するとプロジェクト全体の完了が遅延する。</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;">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;">TF (LS – ES)</th>
<th style="text-align:left;">クリティカルパス</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">タスクX</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;">3</td>
<td style="text-align:left;">0</td>
<td style="text-align:left;">Yes</td>
</tr>
<tr>
<td style="text-align:left;">タスクY</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;">0</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;">2</td>
<td style="text-align:left;">6</td>
<td style="text-align:left;">2</td>
<td style="text-align:left;">No</td>
</tr>
<tr>
<td style="text-align:left;">タスクZ</td>
<td style="text-align:left;">5</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;">タスクW</td>
<td style="text-align:left;">2</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;">6</td>
<td style="text-align:left;">6</td>
<td style="text-align:left;">8</td>
<td style="text-align:left;">2</td>
<td style="text-align:left;">No</td>
</tr>
<tr>
<td style="text-align:left;">タスクV</td>
<td style="text-align:left;">6</td>
<td style="text-align:left;">8</td>
<td style="text-align:left;">14</td>
<td style="text-align:left;">8</td>
<td style="text-align:left;">14</td>
<td style="text-align:left;">0</td>
<td style="text-align:left;">Yes</td>
</tr>
</tbody>
</table></figure>
<p>上記の表から、タスクX、タスクZ、タスクVのトータルフロートが0である。
したがって、クリティカルパスは「<strong>タスクX → タスクZ → タスクV</strong>」の経路となり、プロジェクトの最短完了期間は<strong>14日</strong>である。</p>
<h2 class="wp-block-heading">要点</h2>
<ul class="wp-block-list">
<li><p>クリティカルパスは、プロジェクトの最短完了期間を決定する、フロートがゼロの最長経路である。</p></li>
<li><p>アローダイアグラムと前方計算(最早時刻)、後方計算(最遅時刻)を用いて特定する。</p></li>
<li><p>クリティカルパス上の作業は、わずかな遅延もプロジェクト全体の遅延に直結するため、厳密な管理が求められる。</p></li>
<li><p>フロートを持つ作業にはスケジュールの余裕があり、リソース調整の柔軟性がある。</p></li>
</ul>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証) です。
IPA午前Ⅱ:アローダイアグラムにおけるクリティカルパスの計算
アローダイアグラムを用いたプロジェクトの最短完了期間と、その遅延が全体に影響する重要経路(クリティカルパス)を特定する計算方法を解説する。
背景
プロジェクトマネジメントにおいて、多くの作業が相互に依存し、複雑な順序で進行する。これらの作業を効率的に管理し、プロジェクトを計画通りに完了させるためには、全体スケジュールを正確に把握することが不可欠である。特に、どの作業が遅れるとプロジェクト全体の遅延につながるのかを特定する能力は、リスク管理とリソース配分の最適化において極めて重要となる。
問題点
複数の並行作業や依存関係がある場合、単に各作業の所要時間を合計するだけでは、プロジェクト全体の最短完了期間や、スケジュールのボトルネックを正確に把握できない。作業の優先順位やクリティカルな経路を見誤ると、不必要なリソースの投入や、予期せぬプロジェクト全体の遅延を引き起こす可能性がある。
計算/手順
クリティカルパス法(Critical Path Method: CPM)は、アローダイアグラム(PERT図の一種)を用いて、プロジェクトの最短完了期間とクリティカルパスを特定する手法である。
1. アローダイアグラムの作成
アローダイアグラムは、作業(アクティビティ)を矢線で、結合点(イベント)を円で表現し、作業間の順序関係と所要時間を視覚化する図である。
graph TD
A["作業A 開始"] -->|3日:タスクX| B
A -->|4日:タスクY| C
B -->|5日:タスクZ| D
C -->|2日:タスクW| D
D -->|6日:タスクV| E["プロジェクト終了"]
style A fill:#cef,stroke:#333,stroke-width:2px
style E fill:#cef,stroke:#333,stroke-width:2px
2. 早い時刻の計算(前方計算)
プロジェクト開始点から各イベントに到達する最早の時刻を計算する。
手順:
プロジェクト開始イベントのESを0とする。
開始イベントから順に、各イベントに到達する各経路のEFを計算する。
複数の作業が合流するイベント(例: 図のD)では、そのイベントに到達する全作業のEFの最大値が、そのイベントから始まる作業のESとなる。
作業
所要時間 (日)
前作業
ES
EF
タスクX
3
A
0
3
タスクY
4
A
0
4
タスクZ
5
B
3
8
タスクW
2
C
4
6
タスクV
6
D
Max(8, 6) = 8
14
プロジェクトの最短完了期間は、最終作業(タスクV)の最早完了時刻である14日 となる。
3. 遅い時刻の計算(後方計算)
プロジェクト完了点から遡って、各作業が遅延なく完了するための最も遅い時刻を計算する。
手順:
プロジェクト終了イベントのLFを、前方計算で求めたプロジェクト最短完了期間とする(この例では14)。
終了イベントから逆順に、各イベントから始まる各経路のLSを計算する。
複数の作業が分岐するイベント(例: DからBとCへの逆流)では、そのイベントから逆方向に分岐する全作業のLSの最小値が、そのイベントに到達する作業のLFとなる。
作業
所要時間 (日)
後作業
LF
LS
タスクV
6
E
14
8
タスクZ
5
D
8
3
タスクW
2
D
8
6
タスクX
3
B
3
0
タスクY
4
C
6
2
4. フロート(余裕時間)の計算とクリティカルパスの特定
フロート (Float) : 作業が遅延しても、後続作業やプロジェクト全体の完了に影響を与えない余裕時間。
トータルフロート (Total Float: TF) : LS - ES または LF - EF。
クリティカルパス : トータルフロートがゼロとなる作業が連続する経路。この経路上の作業は、1日でも遅延するとプロジェクト全体の完了が遅延する。
作業
所要時間 (日)
ES
EF
LS
LF
TF (LS – ES)
クリティカルパス
タスクX
3
0
3
0
3
0
Yes
タスクY
4
0
4
2
6
2
No
タスクZ
5
3
8
3
8
0
Yes
タスクW
2
4
6
6
8
2
No
タスクV
6
8
14
8
14
0
Yes
上記の表から、タスクX、タスクZ、タスクVのトータルフロートが0である。
したがって、クリティカルパスは「タスクX → タスクZ → タスクV 」の経路となり、プロジェクトの最短完了期間は14日 である。
要点
クリティカルパスは、プロジェクトの最短完了期間を決定する、フロートがゼロの最長経路である。
アローダイアグラムと前方計算(最早時刻)、後方計算(最遅時刻)を用いて特定する。
クリティカルパス上の作業は、わずかな遅延もプロジェクト全体の遅延に直結するため、厳密な管理が求められる。
フロートを持つ作業にはスケジュールの余裕があり、リソース調整の柔軟性がある。
コメント