auto-project-management/DESIGN.md
柴田貴司 a892a3c87c Initial commit: Claude Code Gantt Chart Generator
- 対話型Ganttチャート自動生成システム
- Claude Code スキル定義 (/gantt, /gantt-update)
- Google Apps Script連携
- Todoist・Discord統合機能
- 完全なセットアップドキュメント

🤖 Generated with Claude Code
2026-01-01 17:24:17 +09:00

324 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 自動Ganttチャート生成システム 設計書
## 1. システム概要
Claude Codeを使った対話型プロジェクト管理システム。ユーザーとの対話を通じてプロジェクト情報を収集し、Google Apps Script (GAS)を使ってスプレッドシートに自動でGanttチャートを生成する。
## 2. システム構成
### 2.1 コンポーネント
1. **Claude Code対話システム**
- スラッシュコマンド: `/gantt`
- メタプロンプトファイル
- JSON生成機能
2. **データ連携層**
- Google Drive APIOAuth認証
- 自動アップロード機能
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": "タスクIDT001から自動連番",
"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が自動判定する項目と手動入力項目を明確に分離
- スプレッドシート上での手動更新を前提とした進捗管理