<p><!--
{
"title": "アローダイアグラムにおけるクリティカルパスの計算",
"primary_category": "プロジェクトマネジメント",
"secondary_categories": [
"スケジュール管理",
"品質管理"
],
"tags": [
"IPA午前Ⅱ",
"クリティカルパス",
"アローダイアグラム",
"PMBOK",
"スケジュール分析"
],
"summary": "IPA午前Ⅱ試験で頻出する、アローダイアグラムを用いたクリティカルパスの計算方法について、背景、手順、具体的な計算例を解説します。",
"mermaid": "graph TD\n event1[イベント1: 開始 (EET: 0, LET: 0)]\n event2[イベント2 (EET: 2, LET: 2)]\n event3[イベント3 (EET: 5, LET: 7)]\n event4[イベント4 (EET: 6, LET: 6)]\n event5[イベント5 (EET: 12, LET: 12)]\n event6[イベント6: 完了 (EET: 14, LET: 14)]\n\n event1 -- タスクA (2日) --> event2\n event2 — タスクB (3日) –> event3\n event2 — タスクC (4日) –> event4\n event3 — タスクD (5日) –> event5\n event4 — タスクE (6日) –> event5\n event5 — タスクF (2日) –> event6\n\n style event1 fill:#e0ffe0,stroke:#333,stroke-width:2px\n style event2 fill:#e0ffe0,stroke:#333,stroke-width:2px\n style event3 fill:#fff0e0,stroke:#333,stroke-width:2px\n style event4 fill:#e0ffe0,stroke:#333,stroke-width:2px\n style event5 fill:#e0ffe0,stroke:#333,stroke-width:2px\n style event6 fill:#e0ffe0,stroke:#333,stroke-width:2px\n\n linkStyle 0 stroke:red,stroke-width:2px\n linkStyle 2 stroke:red,stroke-width:2px\n linkStyle 4 stroke:red,stroke-width:2px\n linkStyle 5 stroke:red,stroke-width:2px\n”,
“verify_level”: “Unverified”,
“tweet_hint”: “IPA午前Ⅱ対策!アローダイアグラムでのクリティカルパス計算を徹底解説。最短完了期間と遅延許容度を理解し、プロジェクト管理に役立てよう。 #IPA午前Ⅱ #プロジェクトマネジメント”,
“link_hints”: [
“https://www.pmi.org/pmbok-guide”,
“https://www.ipa.go.jp/shiken/kagoshiken.html”,
“https://www.pmaj.or.jp/”
]
}
–>
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">アローダイアグラムにおけるクリティカルパスの計算</h1>
<p>プロジェクトの最短完了期間を特定し、遅延が許されない経路をアローダイアグラムで導き出す計算手法を解説します。</p>
<h2 class="wp-block-heading">背景</h2>
<p>プロジェクトマネジメントにおいて、納期遵守は最も重要な課題の一つです。多数のアクティビティ(作業)が複雑な依存関係を持つ大規模プロジェクトでは、全体スケジュールを正確に把握し、どこに重点を置いて管理すべきかを明確にする必要があります。アローダイアグラム(Arrow Diagramming Method: ADM)は、アクティビティ間の順序関係を視覚的に表現し、プロジェクト全体のスケジュールを分析するための強力なツールとして利用されます[1]。特に、クリティカルパス法 (Critical Path Method: CPM) は、プロジェクトの最短完了期間を決定し、遅延がプロジェクト全体の遅延に直結する経路を特定するために不可欠な手法です[1]。</p>
<h2 class="wp-block-heading">問題点</h2>
<p>プロジェクトの進行中に、予期せぬトラブルや遅延が発生するリスクは常に存在します。どのアクティビティが遅れるとプロジェクト全体が遅延するのか、どのアクティビティには時間の余裕があるのかを事前に把握できなければ、適切なリスク管理やリソース配分を行うことができません。アローダイアグラムとクリティカルパス計算は、このような問題に対処し、効果的なスケジュール管理を可能にするための鍵となります。</p>
<h2 class="wp-block-heading">計算手順とクリティカルパスの特定</h2>
<p>アローダイアグラムを用いたクリティカルパスの計算は、主に以下の手順で進められます。</p>
<h3 class="wp-block-heading">1. 用語の定義</h3>
<ul class="wp-block-list">
<li><p><strong>イベント(結合点)</strong>: アクティビティの開始や完了を示す時点。ノード(円)で表現されます。</p></li>
<li><p><strong>アクティビティ(作業)</strong>: 特定の期間とリソースを必要とする作業。矢印で表現され、その長さや太さには意味がありませんが、通常、期間がラベルとして付与されます。</p></li>
<li><p><strong>最早開始時刻 (Earliest Start Time: ES)</strong> / <strong>最早終了時刻 (Earliest Finish Time: EF)</strong>: アクティビティが最も早く開始/終了できる時刻。</p></li>
<li><p><strong>最遅開始時刻 (Latest Start Time: LS)</strong> / <strong>最遅終了時刻 (Latest Finish Time: LF)</strong>: アクティビティが遅延してもプロジェクト全体の完了に影響を与えない最も遅い開始/終了時刻。</p></li>
<li><p><strong>最早イベント時刻 (Earliest Event Time: EET)</strong>: そのイベントが最も早く発生できる時刻。</p></li>
<li><p><strong>最遅イベント時刻 (Latest Event Time: LET)</strong>: そのイベントが遅延してもプロジェクト全体の完了に影響を与えない最も遅い発生時刻。</p></li>
<li><p><strong>フロート (Float/Slack)</strong>: アクティビティが遅延しても後続アクティビティやプロジェクト全体に影響を与えない許容時間。トータルフロート(Total Float)とフリーフロート(Free Float)があります。クリティカルパス上のアクティビティのトータルフロートはゼロです。</p></li>
</ul>
<h3 class="wp-block-heading">2. 計算手順</h3>
<p>クリティカルパスの計算は、順行計算(フォワードパス)と逆行計算(バックワードパス)の2段階で行われます[2]。</p>
<h4 class="wp-block-heading">(1) 順行計算(フォワードパス):最早イベント時刻 (EET) の算出</h4>
<p>プロジェクトの開始イベントから順に、各イベントの最早イベント時刻(EET)を計算します。</p>
<ul class="wp-block-list">
<li><p>開始イベントのEETは0とします。</p></li>
<li><p>あるイベントのEETは、そのイベントに先行する全てのアクティビティの「(先行イベントのEET + アクティビティ期間)」の中で最も大きい値となります。</p></li>
</ul>
<h4 class="wp-block-heading">(2) 逆行計算(バックワードパス):最遅イベント時刻 (LET) の算出</h4>
<p>プロジェクトの最終イベントから逆算して、各イベントの最遅イベント時刻(LET)を計算します。</p>
<ul class="wp-block-list">
<li><p>最終イベントのLETは、順行計算で求めたEETと同じとします(これがプロジェクトの最短完了期間)。</p></li>
<li><p>あるイベントのLETは、そのイベントを起点とする全てのアクティビティの「(後続イベントのLET – アクティビティ期間)」の中で最も小さい値となります。</p></li>
</ul>
<h4 class="wp-block-heading">(3) クリティカルパスの特定</h4>
<p>各アクティビティについて、フロートを計算し、フロートがゼロとなるアクティビティを結んだ経路がクリティカルパスとなります。</p>
<ul class="wp-block-list">
<li>アクティビティのトータルフロート = (後続イベントのLET – 先行イベントのEET) – アクティビティ期間</li>
</ul>
<h3 class="wp-block-heading">3. 具体的な計算例</h3>
<p>以下のプロジェクトにおけるアローダイアグラムを例に、クリティカルパスを求めます。
各イベントの括弧内は <code>(EET/LET)</code> を示します。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
event1["イベント1: 開始 (EET: 0, LET: 0)"]
event2["イベント2(\"EET: 2, LET: 2\")"]
event3["イベント3(\"EET: 5, LET: 7\")"]
event4["イベント4(\"EET: 6, LET: 6\")"]
event5["イベント5(\"EET: 12, LET: 12\")"]
event6["イベント6: 完了 (EET: 14, LET: 14)"]
event1 -- タスクA("2日") --> event2
event2 -- タスクB("3日") --> event3
event2 -- タスクC("4日") --> event4
event3 -- タスクD("5日") --> event5
event4 -- タスクE("6日") --> event5
event5 -- タスクF("2日") --> event6
style event1 fill:#e0ffe0,stroke:#333,stroke-width:2px
style event2 fill:#e0ffe0,stroke:#333,stroke-width:2px
style event3 fill:#fff0e0,stroke:#333,stroke-width:2px
style event4 fill:#e0ffe0,stroke:#333,stroke-width:2px
style event5 fill:#e0ffe0,stroke:#333,stroke-width:2px
style event6 fill:#e0ffe0,stroke:#333,stroke-width:2px
linkStyle 0 stroke:red,stroke-width:2px
linkStyle 2 stroke:red,stroke-width:2px
linkStyle 4 stroke:red,stroke-width:2px
linkStyle 5 stroke:red,stroke-width:2px
</pre></div>
<h4 class="wp-block-heading">(1) 順行計算(EETの算出)</h4>
<ul class="wp-block-list">
<li><p><strong>EET(イベント1)</strong> = 0日</p></li>
<li><p><strong>EET(イベント2)</strong> = EET(イベント1) + タスクA期間 = 0 + 2 = 2日</p></li>
<li><p><strong>EET(イベント3)</strong> = EET(イベント2) + タスクB期間 = 2 + 3 = 5日</p></li>
<li><p><strong>EET(イベント4)</strong> = EET(イベント2) + タスクC期間 = 2 + 4 = 6日</p></li>
<li><p><strong>EET(イベント5)</strong> = max(EET(イベント3) + タスクD期間, EET(イベント4) + タスクE期間)
= max(5 + 5, 6 + 6) = max(10, 12) = 12日</p></li>
<li><p><strong>EET(イベント6)</strong> = EET(イベント5) + タスクF期間 = 12 + 2 = 14日</p></li>
</ul>
<p>プロジェクトの最短完了期間は <strong>14日</strong> となります。</p>
<h4 class="wp-block-heading">(2) 逆行計算(LETの算出)</h4>
<ul class="wp-block-list">
<li><p><strong>LET(イベント6)</strong> = EET(イベント6) = 14日</p></li>
<li><p><strong>LET(イベント5)</strong> = LET(イベント6) – タスクF期間 = 14 – 2 = 12日</p></li>
<li><p><strong>LET(イベント4)</strong> = LET(イベント5) – タスクE期間 = 12 – 6 = 6日</p></li>
<li><p><strong>LET(イベント3)</strong> = LET(イベント5) – タスクD期間 = 12 – 5 = 7日</p></li>
<li><p><strong>LET(イベント2)</strong> = min(LET(イベント3) – タスクB期間, LET(イベント4) – タスクC期間)
= min(7 – 3, 6 – 4) = min(4, 2) = 2日</p></li>
<li><p><strong>LET(イベント1)</strong> = LET(イベント2) – タスクA期間 = 2 – 2 = 0日</p></li>
</ul>
<h4 class="wp-block-heading">(3) クリティカルパスの特定</h4>
<p>各アクティビティのトータルフロートを計算します。</p>
<ul class="wp-block-list">
<li><p><strong>タスクA</strong> (イベント1→2): (LET(イベント2) – EET(イベント1)) – 期間A = (2 – 0) – 2 = 0日</p></li>
<li><p><strong>タスクB</strong> (イベント2→3): (LET(イベント3) – EET(イベント2)) – 期間B = (7 – 2) – 3 = 2日</p></li>
<li><p><strong>タスクC</strong> (イベント2→4): (LET(イベント4) – EET(イベント2)) – 期間C = (6 – 2) – 4 = 0日</p></li>
<li><p><strong>タスクD</strong> (イベント3→5): (LET(イベント5) – EET(イベント3)) – 期間D = (12 – 5) – 5 = 2日</p></li>
<li><p><strong>タスクE</strong> (イベント4→5): (LET(イベント5) – EET(イベント4)) – 期間E = (12 – 6) – 6 = 0日</p></li>
<li><p><strong>タスクF</strong> (イベント5→6): (LET(イベント6) – EET(イベント5)) – 期間F = (14 – 12) – 2 = 0日</p></li>
</ul>
<p>トータルフロートがゼロのアクティビティは、タスクA、タスクC、タスクE、タスクFです。
したがって、クリティカルパスは <strong>「タスクA → タスクC → タスクE → タスクF」</strong> となり、この経路がプロジェクト全体の最短完了期間14日を決定します。図中の赤線がクリティカルパスを示しています。</p>
<h2 class="wp-block-heading">要点</h2>
<ul class="wp-block-list">
<li><p>アローダイアグラムは、プロジェクトの<strong>アクティビティ間の依存関係を視覚化</strong>します。</p></li>
<li><p>クリティカルパスは、<strong>プロジェクトの最短完了期間</strong>を決定する経路です。</p></li>
<li><p>クリティカルパス上のアクティビティは<strong>遅延が許されず</strong>、遅れるとプロジェクト全体が遅延します。</p></li>
<li><p>計算は<strong>順行計算(EET)と逆行計算(LET)</strong>の2段階で行われます。</p></li>
<li><p>フロートがゼロのアクティビティを連ねた経路がクリティカルパスです。</p></li>
</ul>
<hr/>
<h3 class="wp-block-heading">参考文献</h3>
<ul class="wp-block-list">
<li><p>[1] Project Management Institute (PMI). (2021). <em>A Guide to the Project Management Body of Knowledge (PMBOK® Guide)</em> – Seventh Edition. Project Management Institute.</p></li>
<li><p>[2] 情報処理推進機構 (IPA). (2024年5月10日更新). <em>情報処理技術者試験 各種過去問題</em>. <a href="https://www.ipa.go.jp/shiken/kagoshiken.html">https://www.ipa.go.jp/shiken/kagoshiken.html</a> (参照日: 2024年7月29日)</p></li>
<li><p>[3] 日本プロジェクトマネジメント協会 (PMAJ). (2023年11月15日公開). <em>PMBOKに関する情報</em>. <a href="https://www.pmaj.or.jp/">https://www.pmaj.or.jp/</a> (参照日: 2024年7月29日)</p></li>
</ul>
event2\n event2 — タスクB (3日) –> event3\n event2 — タスクC (4日) –> event4\n event3 — タスクD (5日) –> event5\n event4 — タスクE (6日) –> event5\n event5 — タスクF (2日) –> event6\n\n style event1 fill:#e0ffe0,stroke:#333,stroke-width:2px\n style event2 fill:#e0ffe0,stroke:#333,stroke-width:2px\n style event3 fill:#fff0e0,stroke:#333,stroke-width:2px\n style event4 fill:#e0ffe0,stroke:#333,stroke-width:2px\n style event5 fill:#e0ffe0,stroke:#333,stroke-width:2px\n style event6 fill:#e0ffe0,stroke:#333,stroke-width:2px\n\n linkStyle 0 stroke:red,stroke-width:2px\n linkStyle 2 stroke:red,stroke-width:2px\n linkStyle 4 stroke:red,stroke-width:2px\n linkStyle 5 stroke:red,stroke-width:2px\n”,
“verify_level”: “Unverified”,
“tweet_hint”: “IPA午前Ⅱ対策!アローダイアグラムでのクリティカルパス計算を徹底解説。最短完了期間と遅延許容度を理解し、プロジェクト管理に役立てよう。 #IPA午前Ⅱ #プロジェクトマネジメント”,
“link_hints”: [
“https://www.pmi.org/pmbok-guide”,
“https://www.ipa.go.jp/shiken/kagoshiken.html”,
“https://www.pmaj.or.jp/”
]
}
–>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
アローダイアグラムにおけるクリティカルパスの計算
プロジェクトの最短完了期間を特定し、遅延が許されない経路をアローダイアグラムで導き出す計算手法を解説します。
背景
プロジェクトマネジメントにおいて、納期遵守は最も重要な課題の一つです。多数のアクティビティ(作業)が複雑な依存関係を持つ大規模プロジェクトでは、全体スケジュールを正確に把握し、どこに重点を置いて管理すべきかを明確にする必要があります。アローダイアグラム(Arrow Diagramming Method: ADM)は、アクティビティ間の順序関係を視覚的に表現し、プロジェクト全体のスケジュールを分析するための強力なツールとして利用されます[1]。特に、クリティカルパス法 (Critical Path Method: CPM) は、プロジェクトの最短完了期間を決定し、遅延がプロジェクト全体の遅延に直結する経路を特定するために不可欠な手法です[1]。
問題点
プロジェクトの進行中に、予期せぬトラブルや遅延が発生するリスクは常に存在します。どのアクティビティが遅れるとプロジェクト全体が遅延するのか、どのアクティビティには時間の余裕があるのかを事前に把握できなければ、適切なリスク管理やリソース配分を行うことができません。アローダイアグラムとクリティカルパス計算は、このような問題に対処し、効果的なスケジュール管理を可能にするための鍵となります。
計算手順とクリティカルパスの特定
アローダイアグラムを用いたクリティカルパスの計算は、主に以下の手順で進められます。
1. 用語の定義
イベント(結合点): アクティビティの開始や完了を示す時点。ノード(円)で表現されます。
アクティビティ(作業): 特定の期間とリソースを必要とする作業。矢印で表現され、その長さや太さには意味がありませんが、通常、期間がラベルとして付与されます。
最早開始時刻 (Earliest Start Time: ES) / 最早終了時刻 (Earliest Finish Time: EF): アクティビティが最も早く開始/終了できる時刻。
最遅開始時刻 (Latest Start Time: LS) / 最遅終了時刻 (Latest Finish Time: LF): アクティビティが遅延してもプロジェクト全体の完了に影響を与えない最も遅い開始/終了時刻。
最早イベント時刻 (Earliest Event Time: EET): そのイベントが最も早く発生できる時刻。
最遅イベント時刻 (Latest Event Time: LET): そのイベントが遅延してもプロジェクト全体の完了に影響を与えない最も遅い発生時刻。
フロート (Float/Slack): アクティビティが遅延しても後続アクティビティやプロジェクト全体に影響を与えない許容時間。トータルフロート(Total Float)とフリーフロート(Free Float)があります。クリティカルパス上のアクティビティのトータルフロートはゼロです。
2. 計算手順
クリティカルパスの計算は、順行計算(フォワードパス)と逆行計算(バックワードパス)の2段階で行われます[2]。
(1) 順行計算(フォワードパス):最早イベント時刻 (EET) の算出
プロジェクトの開始イベントから順に、各イベントの最早イベント時刻(EET)を計算します。
(2) 逆行計算(バックワードパス):最遅イベント時刻 (LET) の算出
プロジェクトの最終イベントから逆算して、各イベントの最遅イベント時刻(LET)を計算します。
(3) クリティカルパスの特定
各アクティビティについて、フロートを計算し、フロートがゼロとなるアクティビティを結んだ経路がクリティカルパスとなります。
- アクティビティのトータルフロート = (後続イベントのLET – 先行イベントのEET) – アクティビティ期間
3. 具体的な計算例
以下のプロジェクトにおけるアローダイアグラムを例に、クリティカルパスを求めます。
各イベントの括弧内は (EET/LET)
を示します。
graph TD
event1["イベント1: 開始 (EET: 0, LET: 0)"]
event2["イベント2(\"EET: 2, LET: 2\")"]
event3["イベント3(\"EET: 5, LET: 7\")"]
event4["イベント4(\"EET: 6, LET: 6\")"]
event5["イベント5(\"EET: 12, LET: 12\")"]
event6["イベント6: 完了 (EET: 14, LET: 14)"]
event1 -- タスクA("2日") --> event2
event2 -- タスクB("3日") --> event3
event2 -- タスクC("4日") --> event4
event3 -- タスクD("5日") --> event5
event4 -- タスクE("6日") --> event5
event5 -- タスクF("2日") --> event6
style event1 fill:#e0ffe0,stroke:#333,stroke-width:2px
style event2 fill:#e0ffe0,stroke:#333,stroke-width:2px
style event3 fill:#fff0e0,stroke:#333,stroke-width:2px
style event4 fill:#e0ffe0,stroke:#333,stroke-width:2px
style event5 fill:#e0ffe0,stroke:#333,stroke-width:2px
style event6 fill:#e0ffe0,stroke:#333,stroke-width:2px
linkStyle 0 stroke:red,stroke-width:2px
linkStyle 2 stroke:red,stroke-width:2px
linkStyle 4 stroke:red,stroke-width:2px
linkStyle 5 stroke:red,stroke-width:2px
(1) 順行計算(EETの算出)
EET(イベント1) = 0日
EET(イベント2) = EET(イベント1) + タスクA期間 = 0 + 2 = 2日
EET(イベント3) = EET(イベント2) + タスクB期間 = 2 + 3 = 5日
EET(イベント4) = EET(イベント2) + タスクC期間 = 2 + 4 = 6日
EET(イベント5) = max(EET(イベント3) + タスクD期間, EET(イベント4) + タスクE期間)
= max(5 + 5, 6 + 6) = max(10, 12) = 12日
EET(イベント6) = EET(イベント5) + タスクF期間 = 12 + 2 = 14日
プロジェクトの最短完了期間は 14日 となります。
(2) 逆行計算(LETの算出)
LET(イベント6) = EET(イベント6) = 14日
LET(イベント5) = LET(イベント6) – タスクF期間 = 14 – 2 = 12日
LET(イベント4) = LET(イベント5) – タスクE期間 = 12 – 6 = 6日
LET(イベント3) = LET(イベント5) – タスクD期間 = 12 – 5 = 7日
LET(イベント2) = min(LET(イベント3) – タスクB期間, LET(イベント4) – タスクC期間)
= min(7 – 3, 6 – 4) = min(4, 2) = 2日
LET(イベント1) = LET(イベント2) – タスクA期間 = 2 – 2 = 0日
(3) クリティカルパスの特定
各アクティビティのトータルフロートを計算します。
タスクA (イベント1→2): (LET(イベント2) – EET(イベント1)) – 期間A = (2 – 0) – 2 = 0日
タスクB (イベント2→3): (LET(イベント3) – EET(イベント2)) – 期間B = (7 – 2) – 3 = 2日
タスクC (イベント2→4): (LET(イベント4) – EET(イベント2)) – 期間C = (6 – 2) – 4 = 0日
タスクD (イベント3→5): (LET(イベント5) – EET(イベント3)) – 期間D = (12 – 5) – 5 = 2日
タスクE (イベント4→5): (LET(イベント5) – EET(イベント4)) – 期間E = (12 – 6) – 6 = 0日
タスクF (イベント5→6): (LET(イベント6) – EET(イベント5)) – 期間F = (14 – 12) – 2 = 0日
トータルフロートがゼロのアクティビティは、タスクA、タスクC、タスクE、タスクFです。
したがって、クリティカルパスは 「タスクA → タスクC → タスクE → タスクF」 となり、この経路がプロジェクト全体の最短完了期間14日を決定します。図中の赤線がクリティカルパスを示しています。
要点
アローダイアグラムは、プロジェクトのアクティビティ間の依存関係を視覚化します。
クリティカルパスは、プロジェクトの最短完了期間を決定する経路です。
クリティカルパス上のアクティビティは遅延が許されず、遅れるとプロジェクト全体が遅延します。
計算は順行計算(EET)と逆行計算(LET)の2段階で行われます。
フロートがゼロのアクティビティを連ねた経路がクリティカルパスです。
参考文献
[1] Project Management Institute (PMI). (2021). A Guide to the Project Management Body of Knowledge (PMBOK® Guide) – Seventh Edition. Project Management Institute.
[2] 情報処理推進機構 (IPA). (2024年5月10日更新). 情報処理技術者試験 各種過去問題. https://www.ipa.go.jp/shiken/kagoshiken.html (参照日: 2024年7月29日)
[3] 日本プロジェクトマネジメント協会 (PMAJ). (2023年11月15日公開). PMBOKに関する情報. https://www.pmaj.or.jp/ (参照日: 2024年7月29日)
コメント