<h1 class="wp-block-heading">IPA午前Ⅱ:アローダイアグラムにおけるクリティカルパスの特定</h1>
<p>アローダイアグラムでプロジェクトの最短完了期間を決定するクリティカルパスを、EETとLETを計算して特定します。</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">計算/手順</h2>
<p>クリティカルパスは、プロジェクトの開始から終了までの最長経路であり、この経路上のアクティビティに余裕時間(スラック)は存在しません。クリティカルパスを特定するためには、以下の計算手順を踏みます。</p>
<h3 class="wp-block-heading">1. アローダイアグラムの理解</h3>
<p>アローダイアグラム(アクティビティ・オン・アロー:AOA)では、ノード(イベント)が特定の時点を表し、矢印(アクティビティ)が作業と所要期間を表します。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
N1["イベント1"] -->|アクティビティA("3日")| N2["イベント2"];
N1 -->|アクティビティB("4日")| N3["イベント3"];
N2 -->|アクティビティC("5日")| N4["イベント4"];
N3 -->|アクティビティD("2日")| N4["イベント4"];
N4 -->|アクティビティE("3日")| N5["イベント5"];
</pre></div>
<p>上記の図では、各アクティビティの所要日数が括弧内に示されています。</p>
<h3 class="wp-block-heading">2. EET(Early Event Time:最早イベント発生時刻)の計算</h3>
<p>EETは、各イベントが最も早く発生できる時刻を示します。プロジェクト開始イベントのEETは0です。
* <strong>フォワードパス計算</strong>:開始イベントから順に、各アクティビティの所要期間を加えていきます。複数のアクティビティが1つのイベントに流入する場合、最も遅い完了時刻をそのイベントのEETとします。</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;">期間</th>
<th style="text-align:left;">計算式</th>
<th style="text-align:left;">EET</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">N1</td>
<td style="text-align:left;">–</td>
<td style="text-align:left;">–</td>
<td style="text-align:left;">–</td>
<td style="text-align:left;">0</td>
<td style="text-align:left;">0</td>
</tr>
<tr>
<td style="text-align:left;">N2</td>
<td style="text-align:left;">N1</td>
<td style="text-align:left;">A</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">0 + 3</td>
<td style="text-align:left;">3</td>
</tr>
<tr>
<td style="text-align:left;">N3</td>
<td style="text-align:left;">N1</td>
<td style="text-align:left;">B</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;">0 + 4</td>
<td style="text-align:left;">4</td>
</tr>
<tr>
<td style="text-align:left;">N4</td>
<td style="text-align:left;">N2</td>
<td style="text-align:left;">C</td>
<td style="text-align:left;">5</td>
<td style="text-align:left;">max(EET(N2)+5, EET(N3)+2) = max(3+5, 4+2) = max(8, 6)</td>
<td style="text-align:left;">8</td>
</tr>
<tr>
<td style="text-align:left;">N4</td>
<td style="text-align:left;">N3</td>
<td style="text-align:left;">D</td>
<td style="text-align:left;">2</td>
<td style="text-align:left;"></td>
<td style="text-align:left;"></td>
</tr>
<tr>
<td style="text-align:left;">N5</td>
<td style="text-align:left;">N4</td>
<td style="text-align:left;">E</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">8 + 3</td>
<td style="text-align:left;">11</td>
</tr>
</tbody>
</table></figure>
<p>プロジェクト完了の最短期間は、最終イベントのEETである11日です。</p>
<h3 class="wp-block-heading">3. LET(Late Event Time:最遅イベント発生時刻)の計算</h3>
<p>LETは、各イベントが最も遅く発生できる時刻を示します。プロジェクト全体の完了期間を遅らせることなく許容される、イベントの最遅発生時刻です。最終イベントのLETは、そのEETと等しくなります。
* <strong>バックワードパス計算</strong>:最終イベントから逆算して、各アクティビティの所要期間を引いていきます。複数のアクティビティが1つのイベントから流出する場合、最も早い開始時刻をそのイベントのLETとします。</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;">期間</th>
<th style="text-align:left;">計算式</th>
<th style="text-align:left;">LET</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">N5</td>
<td style="text-align:left;">–</td>
<td style="text-align:left;">–</td>
<td style="text-align:left;">–</td>
<td style="text-align:left;">EET(N5) = 11</td>
<td style="text-align:left;">11</td>
</tr>
<tr>
<td style="text-align:left;">N4</td>
<td style="text-align:left;">N5</td>
<td style="text-align:left;">E</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">LET(N5) – 3 = 11 – 3</td>
<td style="text-align:left;">8</td>
</tr>
<tr>
<td style="text-align:left;">N3</td>
<td style="text-align:left;">N4</td>
<td style="text-align:left;">D</td>
<td style="text-align:left;">2</td>
<td style="text-align:left;">LET(N4) – 2 = 8 – 2</td>
<td style="text-align:left;">6</td>
</tr>
<tr>
<td style="text-align:left;">N2</td>
<td style="text-align:left;">N4</td>
<td style="text-align:left;">C</td>
<td style="text-align:left;">5</td>
<td style="text-align:left;">LET(N4) – 5 = 8 – 5</td>
<td style="text-align:left;">3</td>
</tr>
<tr>
<td style="text-align:left;">N1</td>
<td style="text-align:left;">N2</td>
<td style="text-align:left;">A</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">min(LET(N2)-3, LET(N3)-4) = min(3-3, 6-4) = min(0, 2)</td>
<td style="text-align:left;">0</td>
</tr>
<tr>
<td style="text-align:left;">N1</td>
<td style="text-align:left;">N3</td>
<td style="text-align:left;">B</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;"></td>
<td style="text-align:left;"></td>
</tr>
</tbody>
</table></figure>
<h3 class="wp-block-heading">4. スラック(余裕時間)の計算</h3>
<p>各イベントのスラックは「LET – EET」で計算されます。</p>
<figure class="wp-block-table"><table>
<thead>
<tr>
<th style="text-align:left;">イベント</th>
<th style="text-align:left;">EET</th>
<th style="text-align:left;">LET</th>
<th style="text-align:left;">スラック (LET – EET)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">N1</td>
<td style="text-align:left;">0</td>
<td style="text-align:left;">0</td>
<td style="text-align:left;">0</td>
</tr>
<tr>
<td style="text-align:left;">N2</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">0</td>
</tr>
<tr>
<td style="text-align:left;">N3</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;">6</td>
<td style="text-align:left;">2</td>
</tr>
<tr>
<td style="text-align:left;">N4</td>
<td style="text-align:left;">8</td>
<td style="text-align:left;">8</td>
<td style="text-align:left;">0</td>
</tr>
<tr>
<td style="text-align:left;">N5</td>
<td style="text-align:left;">11</td>
<td style="text-align:left;">11</td>
<td style="text-align:left;">0</td>
</tr>
</tbody>
</table></figure>
<h3 class="wp-block-heading">5. クリティカルパスの特定</h3>
<p>スラックが0のイベントをたどる経路がクリティカルパスです。</p>
<ul class="wp-block-list">
<li>N1 (スラック0) → N2 (スラック0) → N4 (スラック0) → N5 (スラック0)</li>
<li>この経路に対応するアクティビティは、A → C → E です。</li>
</ul>
<p>この経路上のアクティビティの所要期間の合計は 3 + 5 + 3 = 11日 となり、プロジェクト全体の最短完了期間と一致します。</p>
<h2 class="wp-block-heading">要点</h2>
<ul class="wp-block-list">
<li>クリティカルパスは、プロジェクトの最短完了期間を決定する最長経路です。</li>
<li>EET(最早イベント発生時刻)はフォワードパスで計算します。</li>
<li>LET(最遅イベント発生時刻)はバックワードパスで計算します。</li>
<li>イベントのスラック(余裕時間)が0の経路がクリティカルパスです。</li>
</ul>
IPA午前Ⅱ:アローダイアグラムにおけるクリティカルパスの特定
アローダイアグラムでプロジェクトの最短完了期間を決定するクリティカルパスを、EETとLETを計算して特定します。
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
背景
プロジェクトマネジメントにおいて、プロジェクトの完了までにかかる期間を正確に見積もり、遅延のリスクを管理することは極めて大切です。アローダイアグラムは、プロジェクト内のタスク(アクティビティ)の順序関係と所要期間を視覚的に表現する手法であり、プロジェクトのスケジュール計画に広く利用されています。この手法を用いることで、各タスク間の依存関係を明確にし、プロジェクト全体の進捗を把握できます。
問題点
複数のタスクが並行して進行し、相互に依存関係を持つ大規模なプロジェクトでは、どのタスクの遅延がプロジェクト全体の完了に影響を及ぼすのか、直感的に判断することが困難になります。プロジェクトの完了期間は、多数のタスク経路の中から最も時間のかかる経路によって決定されます。この最長経路を特定し、その経路上のタスクを重点的に管理しなければ、プロジェクト全体の遅延を防ぐことはできません。この最長経路がクリティカルパスです。
計算/手順
クリティカルパスは、プロジェクトの開始から終了までの最長経路であり、この経路上のアクティビティに余裕時間(スラック)は存在しません。クリティカルパスを特定するためには、以下の計算手順を踏みます。
1. アローダイアグラムの理解
アローダイアグラム(アクティビティ・オン・アロー:AOA)では、ノード(イベント)が特定の時点を表し、矢印(アクティビティ)が作業と所要期間を表します。
graph TD
N1["イベント1"] -->|アクティビティA("3日")| N2["イベント2"];
N1 -->|アクティビティB("4日")| N3["イベント3"];
N2 -->|アクティビティC("5日")| N4["イベント4"];
N3 -->|アクティビティD("2日")| N4["イベント4"];
N4 -->|アクティビティE("3日")| N5["イベント5"];
上記の図では、各アクティビティの所要日数が括弧内に示されています。
2. EET(Early Event Time:最早イベント発生時刻)の計算
EETは、各イベントが最も早く発生できる時刻を示します。プロジェクト開始イベントのEETは0です。
* フォワードパス計算:開始イベントから順に、各アクティビティの所要期間を加えていきます。複数のアクティビティが1つのイベントに流入する場合、最も遅い完了時刻をそのイベントのEETとします。
イベント |
前イベント |
アクティビティ |
期間 |
計算式 |
EET |
N1 |
– |
– |
– |
0 |
0 |
N2 |
N1 |
A |
3 |
0 + 3 |
3 |
N3 |
N1 |
B |
4 |
0 + 4 |
4 |
N4 |
N2 |
C |
5 |
max(EET(N2)+5, EET(N3)+2) = max(3+5, 4+2) = max(8, 6) |
8 |
N4 |
N3 |
D |
2 |
|
|
N5 |
N4 |
E |
3 |
8 + 3 |
11 |
プロジェクト完了の最短期間は、最終イベントのEETである11日です。
3. LET(Late Event Time:最遅イベント発生時刻)の計算
LETは、各イベントが最も遅く発生できる時刻を示します。プロジェクト全体の完了期間を遅らせることなく許容される、イベントの最遅発生時刻です。最終イベントのLETは、そのEETと等しくなります。
* バックワードパス計算:最終イベントから逆算して、各アクティビティの所要期間を引いていきます。複数のアクティビティが1つのイベントから流出する場合、最も早い開始時刻をそのイベントのLETとします。
イベント |
後イベント |
アクティビティ |
期間 |
計算式 |
LET |
N5 |
– |
– |
– |
EET(N5) = 11 |
11 |
N4 |
N5 |
E |
3 |
LET(N5) – 3 = 11 – 3 |
8 |
N3 |
N4 |
D |
2 |
LET(N4) – 2 = 8 – 2 |
6 |
N2 |
N4 |
C |
5 |
LET(N4) – 5 = 8 – 5 |
3 |
N1 |
N2 |
A |
3 |
min(LET(N2)-3, LET(N3)-4) = min(3-3, 6-4) = min(0, 2) |
0 |
N1 |
N3 |
B |
4 |
|
|
4. スラック(余裕時間)の計算
各イベントのスラックは「LET – EET」で計算されます。
イベント |
EET |
LET |
スラック (LET – EET) |
N1 |
0 |
0 |
0 |
N2 |
3 |
3 |
0 |
N3 |
4 |
6 |
2 |
N4 |
8 |
8 |
0 |
N5 |
11 |
11 |
0 |
5. クリティカルパスの特定
スラックが0のイベントをたどる経路がクリティカルパスです。
- N1 (スラック0) → N2 (スラック0) → N4 (スラック0) → N5 (スラック0)
- この経路に対応するアクティビティは、A → C → E です。
この経路上のアクティビティの所要期間の合計は 3 + 5 + 3 = 11日 となり、プロジェクト全体の最短完了期間と一致します。
要点
- クリティカルパスは、プロジェクトの最短完了期間を決定する最長経路です。
- EET(最早イベント発生時刻)はフォワードパスで計算します。
- LET(最遅イベント発生時刻)はバックワードパスで計算します。
- イベントのスラック(余裕時間)が0の経路がクリティカルパスです。
コメント