# 自動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が自動判定する項目と手動入力項目を明確に分離 - スプレッドシート上での手動更新を前提とした進捗管理