はじめに
こんにちは!この記事では、Google Colaboratory(以下、Colab)を使って、ソフトウェア開発プロジェクトのガントチャートをSVG形式で作成する方法をご紹介します。
ソフトウェア開発プロジェクトの管理において、フェーズやタスクの可視化は非常に重要です。今回は、以下の特徴を持つガントチャートの作成方法をご紹介します:
- SVG形式での出力(高品質な画像)
- 日本語フォントの適切な表示
- ソフトウェア開発フェーズに最適化されたデザイン
- Google Colab上で簡単に実行可能
環境準備
まずは必要なライブラリのインストールと基本設定を行います。
# 必要なライブラリのインポート
!apt-get -y install fonts-noto-cjk
import matplotlib.pyplot as plt
from matplotlib import font_manager
import matplotlib.patches as mpatches
import pandas as pd
# 日本語フォントの設定
font_path = '/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc'
font_prop = font_manager.FontProperties(fname=font_path, size=14, weight='bold')
# カラーパレットの定義(ソフトウェア開発フェーズ用)
planning_color = '#a3d9a5' # 企画フェーズ用
spec_color = '#87ceeb' # 仕様フェーズ用
design_color = '#f4c542' # 設計フェーズ用
dev_color = '#ff9999' # 開発フェーズ用
test_color = '#dda0dd' # テストフェーズ用
ガントチャートの基本構造
ソフトウェア開発プロジェクト向けのガントチャートは以下の要素で構成されています:
- タイムライン(X軸)
- 開発フェーズとタスク(Y軸)
- 進捗バー(フェーズごとに色分け)
- 凡例(各フェーズの説明)
実装コード
def create_software_gantt_chart(tasks, start_dates, end_dates, phases):
"""
ソフトウェア開発プロジェクト用のガントチャートを作成する関数
Parameters:
-----------
tasks : list
タスク名のリスト
start_dates : list
開始日のリスト(datetime形式)
end_dates : list
終了日のリスト(datetime形式)
phases : list
開発フェーズのリスト
"""
# フェーズごとの色を定義
color_dict = {
'企画': planning_color,
'仕様': spec_color,
'設計': design_color,
'開発': dev_color,
'テスト': test_color
}
# プロットの設定
fig, ax = plt.subplots(figsize=(15, 8))
ax.set_facecolor('#f7f7f7')
fig.patch.set_facecolor('#f7f7f7')
# Y軸の設定
ax.set_ylim(-1, len(tasks))
ax.set_yticks(range(len(tasks)))
ax.set_yticklabels(tasks, fontproperties=font_prop)
# X軸の設定(月表示)
ax.grid(True, axis='x', linestyle='--', alpha=0.7)
# ガントチャートの描画
for i, (start, end, phase) in enumerate(zip(start_dates, end_dates, phases)):
ax.barh(i, (end - start).days, left=start,
height=0.3, color=color_dict[phase], alpha=0.8)
# 凡例の作成
legend_elements = [mpatches.Patch(facecolor=color, label=phase)
for phase, color in color_dict.items()]
ax.legend(handles=legend_elements, prop=font_prop)
# タイトルの設定
ax.set_title('ソフトウェア開発プロジェクト工程表', fontproperties=font_prop, pad=20)
return fig
# 使用例(標準的なソフトウェア開発プロジェクトの場合)
tasks = [
'プロジェクト計画策定',
'要件定義',
'システム設計',
'データベース設計',
'フロントエンド開発',
'バックエンド開発',
'単体テスト',
'結合テスト',
'ユーザーテスト'
]
start_dates = [
pd.to_datetime('2024-04-01'),
pd.to_datetime('2024-04-15'),
pd.to_datetime('2024-05-01'),
pd.to_datetime('2024-05-01'),
pd.to_datetime('2024-05-15'),
pd.to_datetime('2024-05-15'),
pd.to_datetime('2024-06-15'),
pd.to_datetime('2024-07-01'),
pd.to_datetime('2024-07-15')
]
end_dates = [
pd.to_datetime('2024-04-14'),
pd.to_datetime('2024-04-30'),
pd.to_datetime('2024-05-14'),
pd.to_datetime('2024-05-14'),
pd.to_datetime('2024-07-14'),
pd.to_datetime('2024-07-14'),
pd.to_datetime('2024-06-30'),
pd.to_datetime('2024-07-14'),
pd.to_datetime('2024-07-31')
]
phases = [
'企画',
'仕様',
'設計',
'設計',
'開発',
'開発',
'テスト',
'テスト',
'テスト'
]
# ガントチャートの作成と保存
fig = create_software_gantt_chart(tasks, start_dates, end_dates, phases)
plt.savefig('software_gantt_2024.svg', format='svg', bbox_inches='tight', dpi=300)
plt.close()
カスタマイズのポイント
1. フェーズごとの色調整
開発フェーズに応じて視認性の高い配色を設定しています。各フェーズが一目で分かるよう、コントラストの高い色を選択しています。
2. タスクの粒度
タスクの粒度は以下のように調整可能です:
- 大きめ(フェーズレベル): 企画、設計、開発など
- 中程度(機能レベル): ユーザー認証、データベース、APIなど
- 詳細(タスクレベル): DB設計、API実装、単体テストなど
3. 期間の調整
figsize
パラメータを変更することで、長期プロジェクトや短期プロジェクトに対応できます。
出力結果の活用
生成されたSVGガントチャートは以下の場面で活用できます:
- プロジェクト計画書への添付
- チーム内での進捗共有
- スプリントプランニングでの使用
- 顧客向けプレゼンテーション
まとめ
Google Colabを使ったソフトウェア開発向けガントチャート作成の利点:
- プロジェクトの全体像を視覚的に把握可能
- フェーズごとの色分けで進捗状況が分かりやすい
- SVG形式で高品質な図が作成可能
- データの更新が容易