- 対話型Ganttチャート自動生成システム
- Claude Code スキル定義 (/gantt, /gantt-update)
- Google Apps Script連携
- Todoist・Discord統合機能
- 完全なセットアップドキュメント
🤖 Generated with Claude Code
324 lines
12 KiB
Markdown
324 lines
12 KiB
Markdown
# 自動Ganttチャート生成システム 設計書
|
||
|
||
## 1. システム概要
|
||
|
||
Claude Codeを使った対話型プロジェクト管理システム。ユーザーとの対話を通じてプロジェクト情報を収集し、Google Apps Script (GAS)を使ってスプレッドシートに自動でGanttチャートを生成する。
|
||
|
||
## 2. システム構成
|
||
|
||
### 2.1 コンポーネント
|
||
|
||
1. **Claude Code対話システム**
|
||
- スラッシュコマンド: `/gantt`
|
||
- メタプロンプトファイル
|
||
- JSON生成機能
|
||
|
||
2. **データ連携層**
|
||
- Google Drive API(OAuth認証)
|
||
- 自動アップロード機能
|
||
|
||
3. **GASバックエンド**
|
||
- ドライブ監視トリガー
|
||
- JSON読み込み・解析
|
||
- Ganttチャート生成エンジン
|
||
|
||
4. **スプレッドシート出力**
|
||
- プロジェクト一覧シート
|
||
- 各プロジェクトのGanttチャートシート
|
||
|
||
### 2.2 データフロー
|
||
|
||
```
|
||
1. ユーザー入力
|
||
└─> Claude Code対話
|
||
└─> JSON生成
|
||
└─> Google Drive APIで指定フォルダにアップロード
|
||
└─> GASがドライブ監視(自動トリガー)
|
||
└─> JSON読み込み・解析
|
||
└─> 指定スプレッドシートに新規シート追加
|
||
└─> Ganttチャート生成
|
||
```
|
||
|
||
## 3. データ仕様
|
||
|
||
### 3.1 JSONスキーマ(予定)
|
||
|
||
```json
|
||
{
|
||
"project_id": "プロジェクトID",
|
||
"project_name": "プロジェクト名",
|
||
"project_purpose": "目的(個人事業/HRteam)",
|
||
"project_type": "プロジェクトジャンル",
|
||
"project_deadline": "プロジェクト期日 (YYYY-MM-DD)",
|
||
"tasks": [
|
||
{
|
||
"task_id": "タスクID(T001から自動連番)",
|
||
"task_name": "タスク名",
|
||
"start_date": "開始日 (YYYY-MM-DD)",
|
||
"end_date": "終了日 (YYYY-MM-DD)",
|
||
"assignee": "担当者名",
|
||
"dependencies": ["前提タスクID"],
|
||
"progress": "進捗率 (0-100)",
|
||
"priority": "優先度",
|
||
"parent_task_id": "親タスクID (nullの場合は親タスク)",
|
||
"tags": ["タグ1", "タグ2"],
|
||
"estimated_hours": "工数見積もり(時間)",
|
||
"is_milestone": "マイルストーンフラグ (true/false)"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**注**: 最終的なスキーマはGASとの相性を考慮して調整
|
||
|
||
### 3.2 プロジェクトジャンル
|
||
|
||
1. 開発プロジェクト
|
||
2. マーケティング
|
||
3. イベント企画
|
||
4. 業務改善
|
||
5. 汎用プロジェクト
|
||
|
||
**注**: テンプレートは作成せず、ジャンル分け用の情報として使用
|
||
|
||
### 3.3 業務分類タグ(10種類)
|
||
|
||
| タグ名 | 説明 | 色 | カラーコード |
|
||
|--------|------|-----|-------------|
|
||
| **企画** | 構想・アイデア出し・要件定義 | 青 | #4285F4 |
|
||
| **設計** | 仕様書作成・アーキテクチャ設計 | 紫 | #9C27B0 |
|
||
| **開発** | コーディング・実装作業 | 緑 | #34A853 |
|
||
| **デザイン** | UI/UXデザイン・ビジュアル制作 | ピンク | #E91E63 |
|
||
| **テスト** | 動作確認・品質検証 | オレンジ | #FF9800 |
|
||
| **レビュー** | コードレビュー・成果物確認 | 黄色 | #FBBC04 |
|
||
| **資料作成** | ドキュメント・マニュアル作成 | 水色 | #00BCD4 |
|
||
| **調整** | 会議・調整・承認取得 | グレー | #9E9E9E |
|
||
| **運用** | デプロイ・保守・監視 | 茶色 | #795548 |
|
||
| **その他** | 上記に該当しない作業 | ライトグレー | #E0E0E0 |
|
||
|
||
**注**: タスクには複数タグを設定可能。Ganttチャート上でタグごとに色分けして視覚化(複数タグの場合は最初のタグの色を使用)
|
||
|
||
### 3.4 優先度表現(6段階)
|
||
|
||
- ★★★★★(最高優先度)
|
||
- ★★★★☆
|
||
- ★★★☆☆
|
||
- ★★☆☆☆
|
||
- ★☆☆☆☆
|
||
- ☆☆☆☆☆(最低優先度)
|
||
|
||
AIが自動判定する際は、タスクの重要性・緊急性・依存関係を考慮して設定
|
||
|
||
### 3.5 プロジェクトステータス(5段階)
|
||
|
||
- **未着手** - プロジェクト開始前
|
||
- **進行中** - 実行中
|
||
- **完了** - プロジェクト終了
|
||
- **保留** - 一時停止中
|
||
- **中止** - プロジェクト中止
|
||
|
||
初期値は「未着手」、スプレッドシート上で手動更新
|
||
|
||
## 4. 対話フロー設計
|
||
|
||
### 4.1 対話方式
|
||
|
||
- **基本方式**: 順次型(案A)とテンプレート型(案C)のハイブリッド
|
||
- **コミュニケーション**: 一問一答形式(必須)
|
||
- **段階的確認**: 各フェーズ完了時に確認を行う
|
||
|
||
### 4.2 対話の進行順序
|
||
|
||
```
|
||
1. プロジェクトID入力
|
||
↓
|
||
2. プロジェクト名入力
|
||
↓
|
||
3. 目的選択(個人事業/HRteam)
|
||
↓
|
||
4. プロジェクトジャンル選択(5種類から)
|
||
↓
|
||
5. プロジェクト概要説明
|
||
※何度も壁打ちして深掘り
|
||
↓
|
||
6. プロジェクト期日入力
|
||
↓
|
||
7. タスク分割
|
||
※何度も壁打ちして深掘り
|
||
【確認】「タスク分割完了しました。期日設定に進みますか?」
|
||
↓
|
||
8. 各タスクの期日設定
|
||
↓
|
||
9. 詳細設定(担当者・依存関係・タグ・工数など)
|
||
【確認】「すべて完了しました。JSON生成しますか?」
|
||
↓
|
||
10. JSON生成 → Google Driveに自動アップロード
|
||
- **JSONファイル名**: `プロジェクトID_プロジェクト名.json` → Google Driveにアップロード
|
||
- **対話履歴ファイル名**: `プロジェクトID_プロジェクト名.md` → ローカルの`/docs`ディレクトリに保存
|
||
```
|
||
|
||
### 4.3 自動判定項目
|
||
|
||
- **依存関係**: AIが対話内容から自動判定
|
||
- **工数見積もり**: AIが自動推定
|
||
- **優先度**: AIが自動判定
|
||
|
||
### 4.4 手動入力項目
|
||
|
||
- **担当者**: 自由入力
|
||
- **小タスクの完了状態**: スプレッドシート上のステータス列で手動更新
|
||
|
||
## 5. スプレッドシート仕様
|
||
|
||
### 5.1 シート構成
|
||
|
||
1. **プロジェクト一覧シート**
|
||
- プロジェクトID
|
||
- プロジェクト名
|
||
- プロジェクトジャンル
|
||
- 目的(個人事業/HRteam ※将来的に増える可能性あり)
|
||
- 作成日
|
||
- 期日(プロジェクト全体の終了予定日)
|
||
- ステータス
|
||
|
||
2. **全プロジェクトタスクシート**
|
||
- 全プロジェクトのタスクを統合表示
|
||
- **表示項目**: プロジェクト名 + 各プロジェクトシート左側の全項目
|
||
- プロジェクト名、タスクID、タスク名、開始日、終了日、進捗率、ステータス、担当者、優先度、タグ、工数
|
||
- **デフォルト並び順**: プロジェクトごとにまとめて表示
|
||
- **更新方法**(3種類実装):
|
||
1. 新規プロジェクト作成時に全タスクを自動追加
|
||
2. 各プロジェクトシートの変更を監視して自動同期(onEdit トリガー)
|
||
3. 手動更新ボタン(シート上部に配置)
|
||
- **機能**: スプレッドシートのフィルタ/並び替え機能で期日順・優先度順など自由に並び替え可能
|
||
|
||
3. **各プロジェクトのGanttチャートシート**
|
||
- シート名: `プロジェクトID_プロジェクト名`
|
||
- 上部: 基本情報(プロジェクトID、プロジェクト名、ジャンル等)
|
||
- メイン: Ganttチャート
|
||
|
||
### 5.2 Ganttチャートスタイル(標準構成)
|
||
|
||
**レイアウト:**
|
||
- 左側: タスクリスト(全項目表示)
|
||
- **列の並び順**: タスクID → タスク名 → 開始日 → 終了日 → 進捗率 → ステータス → [折りたたみ]担当者 → 優先度 → タグ → 工数
|
||
- **行の並び順**: タスクIDの昇順(T001 → T002 → T003...)
|
||
- **親子関係の表示**: 小タスクをインデント表示(親タスクの下に字下げ)
|
||
- **常に表示**: タスクID、タスク名、開始日、終了日、進捗率、ステータス
|
||
- **デフォルト折りたたみ**: 担当者、優先度、タグ、工数見積もり
|
||
- GASで列グループ化機能を使用して折りたたみ設定
|
||
- 右側: タイムライン(日付軸に沿った棒グラフ)
|
||
- **日付軸の単位**: 日単位
|
||
|
||
**視覚要素:**
|
||
1. タグによる色分け(業務種別の視覚化)
|
||
2. 週末のグレー背景(スケジュール感覚)
|
||
3. 進捗率は棒の塗りつぶし(例: 50%完了なら棒の半分を濃色)
|
||
4. 依存関係は灰色の実線矢印(#666666)で前提タスクからの関係を可視化
|
||
5. マイルストーンは赤色の◆マーク(#EA4335)+ テキストラベル付き
|
||
|
||
### 5.3 進捗管理
|
||
|
||
- **親タスク**: 配下の小タスクの完了状況から自動計算
|
||
- **小タスク**: ステータス列(ドロップダウン: 未着手/進行中/完了)を手動更新
|
||
- 親タスクの進捗率 = 完了した小タスク数 / 全小タスク数 × 100
|
||
- **計算ルール**: 「完了」のみカウント(「進行中」は0%扱い)
|
||
|
||
## 6. 技術実装
|
||
|
||
### 6.0 環境変数管理
|
||
|
||
- **Claude Code側**: `.env`ファイル(推奨)
|
||
- `GOOGLE_DRIVE_FOLDER_ID`: アップロード先フォルダID
|
||
- **GAS側**: スクリプトプロパティ
|
||
- `SPREADSHEET_ID`: 出力先スプレッドシートID
|
||
- `DISCORD_WEBHOOK_URL`: エラー通知用Discord Webhook URL
|
||
|
||
### 6.1 Google Drive連携
|
||
|
||
- **方式**: Google Drive API使用
|
||
- **認証**: OAuth認証(初回のみ設定)
|
||
- **アップロード先**: 指定フォルダ
|
||
- **指定方法**: 環境変数(`.env`)でフォルダIDを設定
|
||
|
||
### 6.2 GASトリガー
|
||
|
||
- **トリガータイプ**: ドライブ監視(ファイルアップロード検知)
|
||
- **実行内容**:
|
||
1. 新規JSONファイル検知
|
||
2. JSON読み込み・解析
|
||
3. 指定スプレッドシートに新規Ganttチャートシート追加
|
||
4. Ganttチャート生成
|
||
5. プロジェクト一覧シートに自動追加(プロジェクトID、プロジェクト名、目的、ジャンル、作成日、期日、ステータス)
|
||
6. 全プロジェクトタスクシートに全タスクを自動追加
|
||
|
||
### 6.3 スプレッドシート操作
|
||
|
||
- **対象**: 指定された1つのスプレッドシート
|
||
- **指定方法**: 環境変数でスプレッドシートURLまたはIDを設定
|
||
- **操作**: 新規シート追加(既存シートは保持)
|
||
- **命名規則**: `プロジェクトID_プロジェクト名`
|
||
|
||
## 7. 開発タスク
|
||
|
||
### 7.1 Phase 1: Claude Code側の実装
|
||
- [ ] メタプロンプトファイル作成
|
||
- [ ] スラッシュコマンド `/gantt` 実装
|
||
- [ ] JSON生成ロジック実装
|
||
- [ ] Google Drive API連携実装
|
||
|
||
### 7.2 Phase 2: GAS側の実装
|
||
- [ ] ドライブ監視トリガー設定
|
||
- [ ] JSON読み込み・解析ロジック
|
||
- [ ] スプレッドシート操作ロジック
|
||
- [ ] Ganttチャート生成エンジン実装
|
||
- [ ] 進捗率自動計算ロジック
|
||
- [ ] 全プロジェクトタスクシート機能
|
||
- 新規プロジェクト作成時の自動追加
|
||
- onEditトリガーによる自動同期
|
||
- 手動更新ボタン実装
|
||
- [ ] エラーハンドリング・Discord通知機能
|
||
- Discord Webhook URLは環境変数で設定
|
||
|
||
### 7.3 Phase 3: 統合とテスト
|
||
- [ ] エンドツーエンドテスト
|
||
- [ ] エラーハンドリング実装
|
||
- [ ] ドキュメント整備
|
||
|
||
## 10. 次のステップ
|
||
|
||
設計仕様が確定しました。次は以下の実装に進みます:
|
||
|
||
1. **メタプロンプトファイル作成** - 対話フローを実装
|
||
2. **スラッシュコマンド実装** - `/gantt`コマンドの作成
|
||
3. **JSON生成ロジック** - 対話情報からJSONを生成
|
||
4. **Google Drive API連携** - 自動アップロード機能
|
||
5. **GASスクリプト実装** - Ganttチャート生成エンジン
|
||
|
||
**ステータス**: 設計完了 ✓ (最終更新: 2025-12-17)
|
||
|
||
**主要機能まとめ:**
|
||
- 対話型プロジェクト作成(10ステップ)
|
||
- JSON自動生成 + Google Drive自動アップロード
|
||
- GAS自動トリガー + Ganttチャート生成
|
||
- プロジェクト一覧シート
|
||
- 全プロジェクトタスクシート(3種類の更新方法)
|
||
- 各プロジェクトGanttチャートシート
|
||
- Discord通知 + エラーハンドリング
|
||
|
||
## 8. 保留事項
|
||
|
||
### 8.1 全体管理シートの仕様
|
||
- プロジェクト一覧シートの詳細機能
|
||
- 複数プロジェクト間の依存関係管理
|
||
- リソース配分の可視化
|
||
- ダッシュボード機能
|
||
|
||
**→ 後で仕様を検討・実装**
|
||
|
||
## 9. 補足
|
||
|
||
- 対話は常に一問一答形式で進行
|
||
- 各フェーズで段階的確認を実施
|
||
- AIが自動判定する項目と手動入力項目を明確に分離
|
||
- スプレッドシート上での手動更新を前提とした進捗管理
|