ガントチャートで短期プロジェクトを整理

中級

6.7.11

ガントチャートで短期プロジェクトを整理

最終更新 2020-06-17 読了時間 1 分
まとめ
  • ガントチャートでチーム別タスクの開始・終了期間を横棒で一覧表示する。
  • ax.broken_barh で分割された期間バーを描き、マイルストーンを ax.axvline で重ねる。
  • 短期プロジェクトのスケジュール管理やリソース衝突の確認に使う。

複数チームのタスク期間を俯瞰するにはガントチャートが定番です。matplotlib.axes.Axes.broken_barh を使えば簡単に横棒で期間を描画できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import matplotlib.pyplot as plt

teams = ["企画", "開発", "QA", "CS"]
timeline = [
    [(1, 3), (5, 2)],
    [(2, 5), (8, 3)],
    [(4, 3), (8, 2)],
    [(3, 2), (7, 4)],
]
colors = ["#38bdf8", "#818cf8", "#f472b6", "#facc15"]

fig, ax = plt.subplots(figsize=(6.2, 3.8))
for idx, (team, segments) in enumerate(zip(teams, timeline)):
    for seg, color in zip(segments, colors):
        ax.broken_barh([seg], (idx - 0.35, 0.7), facecolors=color, alpha=0.85)

ax.set_ylim(-1, len(teams))
ax.set_xlim(0, 12)
ax.set_yticks(range(len(teams)), labels=teams)
ax.set_xticks(range(0, 13))
ax.set_xlabel("週")
ax.set_title("四半期リリース準備のガントチャート")
ax.grid(axis="x", alpha=0.2, linestyle="--", linewidth=0.8)
ax.set_axisbelow(True)

milestones = {"仕様確定": 3, "テスト完了": 9}
for label, week in milestones.items():
    ax.axvline(week, color="#475569", linestyle=":", linewidth=1.2)
    ax.text(week + 0.1, len(teams) - 0.4, label, rotation=90, va="top", fontsize=9)

fig.tight_layout()

plt.show()

matplotlib.axes.Axes.broken_barh を使えば簡単に横棒で期間を描画できますの図

読み方のポイント #

  • 横棒の長さでタスク期間、縦位置で担当チームが分かります。重なりはリソース衝突のサインです。
  • 節目週を縦線で入れておくと、マイルストーンと進捗差が確認しやすくなります。
  • 週単位より粒度を細かくしたい場合は、x 軸目盛を日付表示にしても有効です。

いつ使うか #

  • 適している場面: タスクの開始・終了時期と並行度を横棒で一覧したいとき。短期プロジェクトの進捗管理に便利です。
  • 不向きな場面: タスク間の依存関係やクリティカルパスは表現しにくいため、詳細なPM用途には不足します。
  • 代替手段: 本格的なプロジェクト管理には専用ツール(MS Project等)の方が依存関係も含めて管理できます。

よくある失敗パターン #

  • タスク数が多すぎて縦長: 100 以上のタスクを1枚のガントチャートに詰め込むと俯瞰できません。フェーズごとに分割するか、マイルストーンのみ表示してください。
  • 色の凡例が不明: タスクの色分けに意味を持たせているのに凡例がないと読者が混乱します。ステータスや担当者など色の意味を凡例で明記しましょう。