├── .gitignore ├── README.md ├── setup_config.sh └── setup_workspace_simple.sh /.gitignore: -------------------------------------------------------------------------------- 1 | # SpecStory explanation file 2 | .specstory 3 | # SpecStory explanation file 4 | .specstory/.what-is-this.md 5 | 6 | # macOS用の.gitignore 7 | 8 | # macOSシステムファイル 9 | .DS_Store 10 | .DS_Store? 11 | ._* 12 | .Spotlight-V100 13 | .Trashes 14 | Icon? 15 | ehthumbs.db 16 | Thumbs.db 17 | 18 | # 個別フォルダ内のDSストアも明示的に除外 19 | **/.DS_Store 20 | 21 | # Cursor関連ファイル 22 | .cursorindexingignore 23 | 24 | # エディタ関連ファイル 25 | .vscode/ 26 | 27 | # その他の一般的な除外ファイル 28 | *.log 29 | *.tmp 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 俺の考えた最強のAIPMシステム with Cursor Agent 2 | ## PMBOK × Lean UX × Agile ― 総合PMフレームワーク支援Rulesセット 利用ガイド 3 | 4 | このドキュメントは、PMBOK標準、Lean UX、およびアジャイル手法を融合したプロジェクト管理システムの使い方を説明するものです。 5 | 6 | **対象読者**: プロジェクト責任者 / PO / スクラムマスター / UX デザイナー / PMO ― 「ドキュメントも実装もユーザー価値も、すべて1本のレールで回したい」人たち 7 | 8 | ## 1. システム概要 9 | 10 | このシステムは、プロジェクト管理における文書作成から確定・アーカイブまでの流れを自動化し、LLM(大規模言語モデル)の支援を受けながらプロジェクトを効率的に進めるためのものです。 11 | 12 | ### 主な特徴 13 | 14 | - **PMBOK × Lean UX × Agileハイブリッド**: 上流工程はPMBOK準拠の文書管理、中流にLean UXの発見と検証、実装フェーズはアジャイル手法を採用 15 | - **フォルダ構造の分離**: `Flow`(ドラフト)→ `Stock`(確定版)→ `Archived`(完了プロジェクト) 16 | - **自動文書生成**: 質問応答による文書ドラフト作成 17 | - **自動同期**: 「確定反映」コマンドによるFlowからStockへの文書移動 18 | - **LLM活用**: 各フェーズで適切な質問と文書テンプレートを提供 19 | 20 | ### 成し遂げたいこと 21 | 22 | 1. **"正しい課題"にフォーカス**: Lean UX & デザイン思考のDiscovery → 仮説検証をPMBOKの立ち上げに取り込み、作る前に迷子にならない 23 | 2. **学習しながら作る**: Dual-Track/Continuous DiscoveryをアジャイルDevelopmentと並走させ、ユーザーの声が常にバックログへ直結 24 | 3. **ドキュメントを無駄にしない**: "Flow → Stock → Archived"の3層によって、必要最小限の文書だけが公式資産として残る 25 | 4. **拡張し続けられる**: ルール自体を対話で増やせる(90_rule_maintenance.mdc)。プロセス改善がコード管理できる 26 | 27 | ## 2. システム全体像 28 | 29 | ``` 30 | ┌──────────────────────────────┐ trigger(チャットコマンド) 31 | │ 00_master_rules.mdc │◀───────────────────────┐ 32 | └─────────┬────────────────────┘ │ 33 | call │ 34 | ┌─────────▼────────────┐ 発散/収束も Draft 化 │ 35 | │ 01‑06_pmbok_*.mdc │──────────────────┐ │ 36 | │ 08_flow_assist.mdc │ create_draft │ │ 37 | └─────────┬────────────┘ │ │ 38 | ▼ Draft (.md) │ │ 39 | Flow/YYYYMM/YYYY‑MM‑DD/─────────────────────────────┘ │ 40 | │ human review + "確定反映して" │ 41 | ▼ │ 42 | Stock/programs/PROGRAM/projects/PROJECT/.. ← flow_to_stock_rules.mdc ────┘ 43 | ``` 44 | 45 | ### 主要コンセプト 46 | 47 | #### 三つ巴モデル 48 | 49 | | 方法論 | 役割 | 50 | |--------|------| 51 | | **PMBOK** | フェーズ & 知識エリアで **What** を管理 | 52 | | **Lean UX/Design Thinking** | ユーザー中心の **Why** を確認 | 53 | | **Agile / Scrum** | イテレーションで **How** を適応 | 54 | 55 | このシステムはPMBOKの骨格にLean UXのDiscoveryとアジャイルDeliveryをレイヤー合成しているため、上流で迷わず・開発中に学び・下流で残せるワークフローが1つにまとまります。 56 | 57 | #### Flow / Stock / Archived 58 | 59 | | 階層 | 役割 | 60 | |------|------| 61 | | **Flow** | 下書き・ラフアイデア・日次アウトプット | 62 | | **Stock** | 承認済みドキュメント・正式成果物 | 63 | | **Archived** | 完了プロジェクトの凍結コピー | 64 | 65 | #### 4ステップ・サイクル 66 | 67 | 1. **Ask** - LLMが質問で情報収集 68 | 2. **Draft** - テンプレへ自動整形(Flow) 69 | 3. **Review** - 人が編集 → 「確定反映して」 70 | 4. **Sync** - Shell / ルールでStockへ自動移動 71 | 72 | ## 3. 基本的なフォルダ構造 73 | 74 | ``` 75 | プロジェクトルート/ 76 | ├── .cursor/ 77 | │ └── rules/ # LLMルールファイル群 78 | │ ├── basic/ # 基本ルールフォルダ 79 | │ │ ├── pmbok_paths.mdc 80 | │ │ ├── 00_master_rules.mdc 81 | │ │ ├── 01_pmbok_initiating.mdc 82 | │ │ └── ... 83 | │ └── (additional_rules)/ # プロジェクト別特化ルール 84 | ├── Flow/ # 日付ごとのドラフト文書 85 | │ ├── YYYYMM/ # 年月フォルダ 86 | │ ├── YYYY-MM-DD/ # 作業日ごとのフォルダ 87 | │ │ ├── draft_project_charter.md 88 | │ │ └── ... 89 | │ └── ... 90 | ├── Stock/ # 確定済み文書 91 | │ ├── programs/ # プログラム(プロジェクトのまとまり)単位でのフォルダ 92 | │ │ └── PROGRAM_NAME/ # プログラムフォルダ 93 | │ │ └── projects/ 94 | │ │ └── PROJECT_ID/ # プロジェクトごとのフォルダ 95 | │ │ └── documents/ 96 | │ │ ├── 1_initiating/ 97 | │ │ ├── 2_discovery/ 98 | │ │ ├── 2_research/ 99 | │ │ ├── 3_planning/ 100 | │ │ ├── 4_executing/ 101 | │ │ ├── 5_monitoring/ 102 | │ │ └── 6_closing/ 103 | └── Archived/ # 完了プロジェクト 104 | └── programs/ # アーカイブ済みプログラム 105 | ``` 106 | 107 | ## 4. システムのセットアップ 108 | 109 | ### クイックスタート 110 | 111 | Cursorの新規ウィンドウから簡単にセットアップできます: 112 | 113 | 1. Cursorを起動し、「New Window」を選択 114 | 2. 「Clone repo」を選び、このリポジトリのURLを入力 115 | 3. フォルダ指定のUIが表示されたら、右下の「Select as repository destination」ボタンをタップ 116 | 4. リポジトリがクローンされたら、README.mdファイルを開く 117 | 5. Chatパネルを開き「初期設定お願いします」と入力 118 | 119 | これだけで、READMEの内容を読み取り、必要な初期設定が自動的に実行されます。フォルダ構造の作成、ルールファイルの設定、必要なリポジトリのクローンなどが自動で行われます。 120 | 121 | ### 手動セットアップ 122 | 123 | 124 | ### 初期設定 125 | 126 | ```bash 127 | # 現在のディレクトリにワークスペースを構築 128 | ./setup_workspace_simple.sh setup_config.sh 129 | 130 | ``` 131 | 132 | ### セットアップスクリプトの主な機能 133 | 134 | `setup_workspace_simple.sh` スクリプトを使用すると、以下の作業が自動的に行われます: 135 | 136 | 1. **基本ディレクトリ構造の作成** 137 | - Flow, Stock, Archived などの基本フォルダ 138 | - ルールファイル用の .cursor/rules フォルダ 139 | - プログラム用フォルダ Stock/programs 140 | 141 | 2. **Flow内の年月日フォルダ作成** 142 | - 現在の日付で Flow/YYYYMM/YYYY-MM-DD 形式のフォルダ作成 143 | 144 | 3. **各種リポジトリのクローン** 145 | - ルールリポジトリ(.cursor/rules/basic など) 146 | - スクリプトリポジトリ(scripts ディレクトリ) 147 | - プログラムリポジトリ(Stock/programs 配下) 148 | 149 | ### User Rules 150 | 151 | Cursorの設定からユーザールールを設定してください(推奨) 152 | 153 | 1. Cursorの右上にある歯車アイコン(⚙️)をクリック 154 | 2. 「Settings」から「Rules」を選択 155 | 3. 以下の内容をコピーして貼り付け 156 | 157 | ```markdown 158 | 159 | #======================================================== 160 | # 0. ベースポリシー 161 | #======================================================== 162 | ! Always respond in 日本語 163 | - 成果物はできるだけファイルとして出力(細かく分割) 164 | - MCP やファイル閲覧など可能な作業は自律実行 165 | - タスク依頼時は不足情報を確認し、自ら計画→ゴールまで進行 166 | - 立てた計画はタスクリストとして提示 167 | - 日付に関する処理をやるときは、必ずdate関数で正確な情報を確認 168 | 169 | #======================================================== 170 | # 1. 必須ルールファイル参照(pre‑load) 171 | #======================================================== 172 | # ※ pmbok_paths.mdc を最優先で読み込み、以降すべて 173 | # {{dirs.*}} / {{patterns.*}} 変数でパスを参照する 174 | required_rule_files: 175 | - /Users/<YOUR_USER>/{{PROJECT_ROOT}}/.cursor/rules/pmbok_paths.mdc 176 | - /Users/<YOUR_USER>/{{PROJECT_ROOT}}/.cursor/rules/00_master_rules.mdc 177 | ``` 178 | 179 | 180 | ### 必要なルールファイル 181 | 182 | `.cursor/rules/`ディレクトリに以下のファイルを配置されます: 183 | 184 | - `basic/pmbok_paths.mdc` - パス変数定義 185 | - `basic/00_master_rules.mdc` - マスタールール 186 | - `basic/01_pmbok_initiating.mdc` - 立ち上げフェーズのテンプレート 187 | - `basic/02_pmbok_discovery.mdc` - 発見フェーズのテンプレート 188 | - `basic/02_pmbok_research.mdc` - 調査フェーズのテンプレート 189 | - `basic/03_pmbok_planning.mdc` - 計画フェーズのテンプレート 190 | - `basic/04_pmbok_executing.mdc` - 実行フェーズのテンプレート 191 | - `basic/05_pmbok_monitoring.mdc` - 監視・コントロールフェーズのテンプレート 192 | - `basic/06_pmbok_closing.mdc` - 終結フェーズのテンプレート 193 | - `basic/08_pmbok_flow_assist.mdc` - フロー支援機能 194 | - `basic/09_pmbok_development.mdc` - 開発フェーズ支援 195 | - `basic/90_rule_maintenance.mdc` - ルール自体のメンテナンス用 196 | - `basic/flow_to_stock_rules.mdc` - 自動同期ルール 197 | 198 | ## 5. フェーズ別の使い方 199 | 200 | ### 0️⃣ 事前準備 201 | 202 | ```bash 203 | 204 | # プロジェクト作成ガイド 205 | 「カレー作りたい プロジェクト開始して」 # → プログラム名を尋ねられます 206 | 「夕食作り」 # プログラム名を入力 207 | 「はい」 # 確認に応答 208 | ``` 209 | 210 | 上記の対話により、以下の処理が行われます: 211 | - プログラムディレクトリ作成(Stock/programs/夕食作り) 212 | - プロジェクトディレクトリ作成(Stock/programs/夕食作り/projects/カレー) 213 | - ドキュメントフォルダ作成(documents/1_initiating など) 214 | - Flowフォルダ作成(Flow/YYYYMM/YYYY-MM-DD/夕食作り_カレー) 215 | 216 | ### 1️⃣ 立ち上げ(Initiating) 217 | 218 | ``` 219 | 220 | # プロジェクト憲章作成 221 | 「プロジェクト憲章を作成したい」 # LLMが質問に導きます 222 | # 質問に回答すると、Flow/YYYYMM/YYYY-MM-DD/draft_project_charter.md が生成されます 223 | 224 | # 内容確認後、確定反映 225 | 「確定反映して」 # draft_project_charter.mdがStockフォルダに移動 226 | 227 | # ステークホルダー分析 228 | 「ステークホルダー分析やりたい」 # 同様に質問と回答で文書作成 229 | 「確定反映して」 # 確定処理 230 | ``` 231 | 232 | ### 2️⃣ 発見(Discovery) 233 | 234 | ``` 235 | # Discoveryフェーズのメニュー表示 236 | 「Discovery」 # 利用可能なテンプレートリスト表示 237 | 238 | # 前提条件マップ作成 239 | 「仮説マップ」 # 仮説検証に必要な前提条件をマッピング 240 | 「確定反映して」 # Flow/YYYYMM/YYYY-MM-DD/draft_assumption_map.md を確定 241 | 242 | # ペルソナ作成 243 | 「ペルソナ作成」 # ユーザーペルソナ定義 244 | 「確定反映して」 245 | 246 | # 問題定義 247 | 「課題定義」 # 解決すべき問題の定義 248 | 「確定反映して」 249 | 250 | # その他のDiscoveryドキュメント 251 | 「ジャーニーマップ」 # ユーザージャーニーマップ作成 252 | 「ソリューション定義」 # ソリューション定義書作成 253 | 「検証計画」 # 仮説検証計画 254 | 「UXリサーチ」 # UXリサーチ調査概要 255 | ``` 256 | 257 | ### 2️⃣-B リサーチ(Research) 258 | 259 | ``` 260 | # Researchフェーズのメニュー表示 261 | 「Research」 # 利用可能な調査テンプレート表示 262 | 263 | # 顧客調査レポート 264 | 「顧客調査」 # 顧客調査レポート作成 265 | 「確定反映して」 266 | 267 | # 競合調査レポート 268 | 「競合調査」 # 競合分析 269 | 「確定反映して」 270 | 271 | # デスクリサーチ 272 | 「デスクリサーチ」 # 市場・業界など総合的な調査 273 | 「確定反映して」 274 | 275 | # 市場規模推定 276 | 「市場規模推定」 # TAM/SAM/SOM分析 277 | 「確定反映して」 278 | ``` 279 | 280 | ### 3️⃣ 計画(Planning) 281 | 282 | ``` 283 | # WBS作成 284 | 「WBS作成」 # 質問に回答してWBSドラフトを作成 285 | 「確定反映して」 # 確定処理 286 | 287 | # プロダクトバックログ初期化 288 | 「プロダクトバックログ初期化して」 # バックログの初期構造作成 289 | 290 | # リスク計画 291 | 「リスク計画」 # リスク分析と対策計画作成 292 | 293 | # プロジェクトスコープ記述書 294 | 「プロジェクトスコープ記述書」 # スコープ定義 295 | 296 | # プロダクト要求仕様書 297 | 「プロダクト要求仕様書」 # PRD作成 298 | 299 | # リリースロードマップ 300 | 「ロードマップ作成」 # リリース計画作成 301 | ``` 302 | 303 | ### 4️⃣ 実行(Executing)とDevelopment 304 | 305 | ``` 306 | # 開発フェーズの開始 307 | 「Development」 # 利用可能な開発テンプレート表示 308 | 309 | # 開発環境セットアップ 310 | 「開発環境初期化」 # 環境セットアップドキュメント作成 311 | 312 | # 開発計画 313 | 「開発計画作成」 # 実装計画書作成 314 | 315 | # 実装順序計画 316 | 「実装順序計画」 # 依存関係を考慮した実装順序の定義 317 | 318 | # ストーリー実装 319 | 「ストーリー実装」 # 個別ストーリー実装計画 320 | 321 | # スプリントゴール 322 | 「スプリントゴール」 # Sprint Goal Sheet作成 323 | 324 | # 日次タスク 325 | 「今日のタスク」 # 日次タスクリスト生成 326 | ``` 327 | 328 | ### 5️⃣ 監視・コントロール(Monitoring) 329 | 330 | ``` 331 | # 変更要求管理 332 | 「変更要求」 # 変更要求テンプレート作成 333 | 334 | # スプリントレビュー 335 | 「スプリントレビュー作成」 # レビュー自動生成 336 | ``` 337 | 338 | ### 6️⃣ 終結(Closing) 339 | 340 | ``` 341 | # 教訓記録 342 | 「教訓記録」 # Lessons Learned作成 343 | 「確定反映して」 344 | 345 | # 移管ドキュメント 346 | 「移管ドキュメント作成」 # 引き継ぎ資料作成 347 | ``` 348 | 349 | ## 6. ユースケース:カレープロジェクト 350 | 351 | 以下は、実際のプロジェクト例として「カレー作り」プロジェクトの流れを示します。 352 | 353 | ### 1. プロジェクト初期化 354 | ``` 355 | User: カレー作りたい プロジェクト開始して 356 | AI: 「カレー」のプログラム名(カテゴリ)を教えてください。 357 | User: 夕食作り 358 | AI: 以下の内容でプロジェクトを初期化します: 359 | プログラム: 夕食作り 360 | プロジェクト: カレー 361 | よろしいですか? 362 | User: はい 363 | ``` 364 | 365 | この対話により、以下のフォルダ構造が作成されます: 366 | ``` 367 | Stock/programs/夕食作り/projects/カレー/ 368 | └── documents/ 369 | ├── 1_initiating/ 370 | ├── 2_discovery/ 371 | ├── 2_research/ 372 | ├── 3_planning/ 373 | ├── 4_executing/ 374 | ├── 5_monitoring/ 375 | └── 6_closing/ 376 | 377 | Flow/202505/2025-05-05/夕食作り_カレー/ 378 | └── daily_tasks.md 379 | ``` 380 | 381 | ### 2. プロジェクト憲章の作成 382 | ``` 383 | User: プロジェクト憲章つくって 384 | AI: 【プロジェクト憲章】の作成に必要な情報を収集します。以下の質問に回答してください。 385 | 1. プロジェクト名: カレー 386 | 2. プロジェクトの目的: 387 | 3. プロジェクトの背景: 388 | [...] 389 | User: おまかせ 390 | AI: 収集した情報で「プロジェクト憲章」のドラフトを作成してよろしいですか? 391 | User: はい 392 | ``` 393 | 394 | AIは以下の内容を含む詳細なプロジェクト憲章を作成します: 395 | - プロジェクト概要(名前、期間、オーナー) 396 | - 目的と背景 397 | - スコープ(含まれるもの/含まれないもの) 398 | - 成果物 399 | - ステークホルダー一覧 400 | - マイルストーン 401 | - 予算(食材費3,000円、消耗品500円) 402 | - リスク管理計画 403 | - 制約条件と前提条件 404 | 405 | ### 3. ペルソナの作成 406 | ``` 407 | User: ペルソナ作成して 408 | AI: 【ペルソナ作成】に必要な情報を収集します。以下の質問に回答してください。 409 | 1. ペルソナの名前: 410 | 2. 年齢・世代: 411 | [...] 412 | User: おまかせ 413 | ``` 414 | 415 | AIは以下の詳細情報を含むペルソナを作成します: 416 | - 基本情報:田中健太(42歳、IT企業PM、4人家族) 417 | - ライフスタイル:平日は仕事、週末は料理担当 418 | - 目標と課題:家族の好みにばらつきがある、調理時間の見積もりが苦手 419 | - 行動特性:レシピサイトやSNSで情報収集、家族の意見を聞いて決定 420 | - 好みと傾向:程よい辛さのカレーが好き 421 | - 使用ツール:スマートフォン、料理アプリ 422 | - 代表的な発言:「家族が笑顔になる料理を作りたいな」 423 | 424 | この例はプロジェクト管理手法を日常的なタスクに適用する方法を示しており、以下のフェーズに進むことで、カレープロジェクトは成功へと導かれます: 425 | - Discovery:材料や調理方法の調査 426 | - Planning:レシピ決定、買い物リスト作成 427 | - Executing:材料購入、調理 428 | - Monitoring:味の調整 429 | - Closing:完成・振り返り 430 | 431 | ## 7. 主要コマンドリファレンス 432 | 433 | ### 文書作成コマンド(トリガーワード) 434 | 435 | #### 立ち上げフェーズ 436 | | コマンド | 説明 | 出力先 | 437 | |--------|------|-------| 438 | | 「プロジェクト初期化」 | プログラム・プロジェクト構造作成 | Stock/programs/<PROGRAM>/projects/<PROJECT>/ | 439 | | 「プロジェクト憲章」 | プロジェクト憲章作成 | Flow/YYYYMM/YYYY-MM-DD/draft_project_charter.md | 440 | | 「ステークホルダー分析」 | ステークホルダー分析 | Flow/YYYYMM/YYYY-MM-DD/draft_stakeholder_analysis.md | 441 | 442 | #### Discoveryフェーズ 443 | | コマンド | 説明 | 出力先 | 444 | |--------|------|-------| 445 | | 「仮説マップ」 | 前提条件マップ作成 | Flow/YYYYMM/YYYY-MM-DD/draft_assumption_map.md | 446 | | 「ペルソナ作成」 | ユーザーペルソナ作成 | Flow/YYYYMM/YYYY-MM-DD/draft_persona.md | 447 | | 「課題定義」 | 問題定義書作成 | Flow/YYYYMM/YYYY-MM-DD/draft_problem_statement.md | 448 | | 「仮説バックログ」 | 仮説リスト作成 | Flow/YYYYMM/YYYY-MM-DD/draft_hypothesis_backlog.md | 449 | | 「ジャーニーマップ」 | ユーザージャーニーマップ | Flow/YYYYMM/YYYY-MM-DD/draft_user_journey_map.md | 450 | 451 | #### Researchフェーズ 452 | | コマンド | 説明 | 出力先 | 453 | |--------|------|-------| 454 | | 「顧客調査」 | 顧客調査レポート | Flow/YYYYMM/YYYY-MM-DD/draft_customer_research.md | 455 | | 「競合調査」 | 競合分析レポート | Flow/YYYYMM/YYYY-MM-DD/draft_competitor_research.md | 456 | | 「デスクリサーチ」 | 総合調査レポート | Flow/YYYYMM/YYYY-MM-DD/draft_desk_research.md | 457 | | 「市場規模推定」 | TAM/SAM/SOM分析 | Flow/YYYYMM/YYYY-MM-DD/draft_market_size_estimation.md | 458 | 459 | #### Planningフェーズ 460 | | コマンド | 説明 | 出力先 | 461 | |--------|------|-------| 462 | | 「WBS作成」 | WBSドラフト作成 | Flow/YYYYMM/YYYY-MM-DD/draft_wbs.md | 463 | | 「リスク計画」 | リスク分析と計画 | Flow/YYYYMM/YYYY-MM-DD/draft_risk_plan.md | 464 | | 「プロジェクトスコープ記述書」 | スコープ定義書 | Flow/YYYYMM/YYYY-MM-DD/draft_project_scope_statement.md | 465 | | 「プロダクト要求仕様書」 | PRD作成 | Flow/YYYYMM/YYYY-MM-DD/draft_product_requirements.md | 466 | | 「ロードマップ作成」 | リリース計画 | Flow/YYYYMM/YYYY-MM-DD/draft_product_roadmap.md | 467 | 468 | #### Developmentフェーズ 469 | | コマンド | 説明 | 出力先 | 470 | |--------|------|-------| 471 | | 「開発環境初期化」 | 環境セットアップ | Flow/YYYYMM/YYYY-MM-DD/development/draft_setup.md | 472 | | 「開発計画作成」 | 実装計画書 | Flow/YYYYMM/YYYY-MM-DD/development/draft_development_plan.md | 473 | | 「実装順序計画」 | 実装順序定義 | Flow/YYYYMM/YYYY-MM-DD/development/draft_implementation_order.md | 474 | | 「ストーリー実装」 | ストーリー実装計画 | Flow/YYYYMM/YYYY-MM-DD/development/draft_story_implementation.md | 475 | 476 | #### Executingフェーズ 477 | | コマンド | 説明 | 出力先 | 478 | |--------|------|-------| 479 | | 「スプリントゴール」 | スプリント目標設定 | Flow/YYYYMM/YYYY-MM-DD/draft_sprint_goal_Sn.md | 480 | | 「今日のタスク」 | 日次タスク | Flow/YYYYMM/YYYY-MM-DD/daily_tasks.md | 481 | | 「議事録」 | 会議議事録 | Flow/YYYYMM/YYYY-MM-DD/draft_meeting_minutes.md | 482 | 483 | #### Closingフェーズ 484 | | コマンド | 説明 | 出力先 | 485 | |--------|------|-------| 486 | | 「教訓記録」 | 教訓記録 | Flow/YYYYMM/YYYY-MM-DD/draft_lessons_learned.md | 487 | | 「移管ドキュメント作成」 | 引き継ぎ資料 | Flow/YYYYMM/YYYY-MM-DD/draft_transition_document.md | 488 | 489 | ### システムコマンド 490 | 491 | | コマンド | 説明 | 492 | |--------|------| 493 | | 「確定反映して」 | Flow→Stock同期を実行 | 494 | | 「作業開始」 | 今日の日付フォルダとタスクファイルを作成 | 495 | | 「フェーズ追加」 | 新しいフェーズルールの雛形を生成 | 496 | 497 | 498 | ## 9. ベストプラクティス 499 | 500 | アイデア歓迎! "ルール自体をChatで増やせる"文化で継続的に改善しましょう。 501 | 502 | ### モデル選択とルール読み込み 503 | 504 | - **推奨モデル**: ThinkingモードでClaude3.7を使用。高品質アウトプットが必要な場合はMAXモデルが推奨 505 | - **ルール参照確認**: Thinkingペインで「Rulesを読み取ってます」などの表示があればOK 506 | - **明示的指定**: うまく動作しない場合は、チャット入力時に@から必要なRuleを明示的に指定 507 | - **マスタールール重視**: 特に「Master Rules」が最重要。これが読み込まれていれば基本機能は動作 508 | 509 | ### トラブルシューティング 510 | 511 | - **パスエラー**: 赤文字で「パスが見つかりません」というエラーは、Rulesファイル内のパス指定にバグがある可能性大 512 | - **パス修正方法**: エラーの原因を質問し、該当するRuleファイル内のパス指定を確認・修正 513 | - **手動指定**: 複雑な場合は、必要なファイル/フォルダのパスを明示的に指定(エクスプローラの右クリックでパスコピー) 514 | - **部分機能**: PMBOK関連はLLMのデフォルト知識でも動作するが、テンプレート機能を活用するにはRule読み込みが必須 515 | 516 | ### ユースケース別ヒント 517 | 518 | - **初めての使用**: まず「プロジェクト初期化」から始め、フォルダ構造を確認 519 | - **ドキュメント作成**: フェーズ名を入力(「Discovery」など)するとメニューが表示される 520 | - **確定処理**: ドラフト確認後は必ず「確定反映して」と入力し、Flow→Stock同期を実行 521 | - **カスタマイズ**: 「フェーズ追加」コマンドで新規フェーズのテンプレートを作成可能 522 | 523 | ## 10. チーム共有のTIPS 524 | 525 | このAIPMシステムはチーム全体で活用することでさらに効果を発揮します。以下のベストプラクティスを参考にしてください。 526 | 527 | ### 成果物の共有方法 528 | 529 | - **Stockフォルダの共有**: GitHubやObsidian(Sync機能)などのファイル共有サービスを活用して、Stockフォルダをチーム全体で共有しましょう。これにより、確定した成果物に全員がアクセスできるようになります。 530 | 531 | ### カスタムルールの活用 532 | 533 | - **プロジェクト固有のルール**: 独自のフォルダ(例: `.cursor/rules/mypjt/xxxxx.mdc`)を作成し、プロジェクト固有のルールを定義・共有することをお勧めします。これにより、プロジェクトの特性に合わせたカスタマイズが可能になります。 534 | 535 | ### 新メンバーのオンボーディング 536 | 537 | - **セットアップの簡易化**: `setup_config.sh` をカスタマイズして、オリジナルルールやプロジェクトのレポジトリを設定しておくと、新しいメンバーの初期設定が簡単になり、チームの生産性向上に役立ちます。 538 | 539 | ### チーム連携のワークフロー例 540 | 541 | 1. 各メンバーは自分のローカル環境で `Flow` で作業 542 | 2. 確定した成果物は `Stock` に反映 543 | 3. 共有リポジトリに定期的にプッシュ/コミット 544 | 4. チームミーティングで成果物をレビュー 545 | 5. フィードバックを `Flow` で反映させて改善サイクルを継続 546 | 547 | このアプローチにより、個人の作業とチーム全体の成果を効率的に統合できます。 548 | 549 | --- 550 | 551 | このシステムは「Ask → Draft → Review → Sync」の4アクションを軸に、**PMBOK × Lean UX × Agile**のベストプラクティスを一貫して実現します。 552 | 553 | ## 11. 開発Tips 554 | 555 | このワークスペースは単なるドキュメント管理だけでなく、開発活動自体もサポートする機能を備えています(※ベータ版/試験運用中)。 556 | 557 | ### 開発フェーズの活用方法 558 | 559 | `.cursor/rules/basic/09_pmbok_development.mdc` に定義されたルールを活用することで、以下のような開発ワークフローを実現できます: 560 | 561 | 1. **開発環境初期化**(「開発環境初期化」と入力) 562 | - プロジェクト専用の開発フォルダ構造を自動生成 563 | - 必要な初期ファイルのセットアップ 564 | - 開発環境構成の定義 565 | 566 | 2. **開発計画作成**(「開発計画作成」と入力) 567 | - 対象ストーリーの特定 568 | - 実装アプローチの定義 569 | - 技術スタックの選定 570 | 571 | 3. **実装順序計画**(「実装順序計画」と入力) 572 | - ストーリー間の依存関係分析 573 | - 優先度付けと最適な実装順序の決定 574 | - フェーズ分けと実装スケジュール案の作成 575 | 576 | 4. **ストーリー実装**(「ストーリー実装」と入力) 577 | - 個別ストーリーの詳細な実装計画 578 | - 実装ステップの定義 579 | - 主要コード構造の設計 580 | 581 | 5. **記事執筆**(「記事執筆」と入力) 582 | - 技術記事やドキュメントの構成立案 583 | - 執筆プラン作成 584 | - 添付資料の管理 585 | 586 | 6. **成果物確認**(「成果物確認」と入力) 587 | - 開発成果物の品質チェック 588 | - レビュープロセスの実施 589 | - Flow→Stockへの確定プロセス 590 | 591 | ### 開発ディレクトリ構造 592 | 593 | 開発作業は以下のディレクトリ構造で管理されます: 594 | 595 | ``` 596 | プロジェクト/ 597 | ├── development/ # 開発成果物のルートディレクトリ 598 | │ ├── code/ # コードベース(ソフトウェア開発の場合) 599 | │ ├── articles/ # 記事/ドキュメント(コンテンツ作成の場合) 600 | │ └── assets/ # 共有リソース(画像、データなど) 601 | └── documents/ # プロジェクトドキュメント(既存) 602 | ``` 603 | 604 | ### 開発Tipsの活用例 605 | 606 | 1. ユーザーストーリーを「実装順序計画」で最適な順序に整理 607 | 2. 最重要ストーリーを「ストーリー実装」で詳細設計 608 | 3. 同時並行で「記事執筆」機能を使って技術ドキュメントを作成 609 | 4. 開発完了後「成果物確認」でレビューし、Stockに確定 610 | 611 | このワークフローにより、プロジェクト管理と開発作業を一貫したプロセスで進めることができます。 612 | 613 | ## 12. 作った人 614 | 615 | ### プロフィール 616 | 617 | 618 | 株式会社エクスプラザで生成AIエバンジェリスト・リードAIプロデューサーを務める宮田大督。生成AI技術の社会実装と普及に注力し、企業のAI導入支援やコミュニティ活動を推進。 619 | 620 | 前職のGaudiyや令和トラベルでは、SNSでのエージェント実装やDifyなどノーコードツール活用での大量コンテンツ生成など、様々な企画から実際の実装まで手がける。楽天やメルカリでのPdMの経験を活かし、PdMに関する登壇・執筆活動も行い、最近はAIxPM領域に特に関心をもち活動している。 621 | 622 | 生成AI技術の可能性と実践的な活用方法について情報発信を行い、企業のDX推進やイノベーション創出をサポート。AIと人間が共生する未来の実現を目指し、技術と社会の架け橋となることを使命としている。 623 | 624 | 625 | ### SNSアカウント 626 | - Twitter: [@miyatti](https://twitter.com/miyatti) 627 | 628 | ### 企業情報 629 | - 会社名:株式会社エクスプラザ 630 | - ミッション:「プロダクトの力で、豊かな暮らしをつくる」 631 | - 事業内容:生成AIの活用支援/プロダクトマネジメントコンサルティング事業 632 | - 設立:2020年7月 633 | - 代表者:高橋一生 634 | - 本社:東京都港区六本木4-8-5 和幸ビル503 635 | - コーポレートサイト:[https://explaza.jp/](https://explaza.jp/) 636 | - 採用ページ:[https://lifeat.explaza.jp/](https://lifeat.explaza.jp/) 637 | 638 | ## 13. 参考ブログ記事 639 | 640 | 641 | ### 実際の活用事例 642 | - [実際のCursorエージェントとのやり取り例(Twitter)](https://x.com/miyatti/status/1918922486739292432) 643 | - ブログ作成プロジェクトでの実際の対話例を公開しています 644 | - システムがどのように質問し、ユーザーの意図を理解していくかがわかります 645 | 646 | ### 活用シナリオ 647 | - ブログ記事作成プロジェクト管理 648 | - 技術ドキュメント整備 649 | - 研究プロジェクト管理 650 | - 小規模チームでの業務効率化 651 | 652 | 653 | 654 | 655 | ### 基本コンセプトとCursorエージェント活用法 656 | 657 | このシステムの背景にある考え方や活用方法について、以下の記事も参考にしてください: 658 | 659 | - [あなたの仕事に"AI秘書"を。ノンエンジニアでもOKなCursorエージェント超入門](https://note.com/miyatad/n/nae304a0024af) 660 | - [プロジェクト管理もストレスもAIがサポート! ノンエンジニアでもOKなCursorエージェント講座 実践編](https://note.com/miyatad/n/ne9fb1575cddb) 661 | 662 | ### 解説資料 663 | - [Cursorエージェント講座 超応用編](https://www.docswell.com/s/miyatti/KN182G-2025-03-21-202746) 664 | - [ノンエンジニアでもOKなCursorエージェント講座](https://www.docswell.com/s/miyatti/Z6VDGV-2025-03-30-192815) 665 | 666 | これらの記事では、Cursorを使ったAIエージェントによるタスク管理、プロジェクト管理、文書作成の自動化などについて詳しく解説しています。本システムを最大限に活用するためのヒントやテクニックを学ぶことができます。 667 | 668 | ## 14. 著作権・ライセンス・免責事項 669 | 670 | ### 著作権 671 | 672 | © 2025 宮田大督 (Daisuke Miyata) 673 | 674 | 本「俺の考えた最強のAIPMシステム with Cursor Agent」のコンテンツ(テキスト、ルールファイル、スクリプト、ドキュメント構造など)は、作者の許可なく無断で複製、配布することはできません。 675 | 676 | ### ライセンス 677 | 678 | 本システムは以下のライセンス条件の下で提供されます: 679 | 680 | 1. **個人利用**: 個人的な学習、プロジェクト管理、非商用目的での利用は無償で許可されます。 681 | 2. **社内利用**: 一つの法人・団体内でのプロジェクト管理ツールとしての利用は無償です。 682 | 3. **商用利用**: 本システムをベースにした有料サービスの提供、コンサルティングなど営利目的で利用する場合は、作者への連絡が必要です。 683 | 4. **配布・改変**: 改変版の作成・配布を行う場合は、オリジナルの著作権表示とこのライセンス条件を維持し、作者のクレジットを明記してください。 684 | 685 | ### 免責事項 686 | 687 | 本システムは「現状有姿」で提供され、明示または黙示を問わず、いかなる種類の保証もありません。システムの利用によって生じた直接的または間接的な損害について、作者は責任を負いません。 688 | 689 | ### 連絡先 690 | 691 | 著作権、ライセンス、商用利用に関するお問い合わせ: 692 | - Twitter: @miyatti 693 | - 会社: 株式会社エクスプラザ 694 | 695 | ### 謝辞 696 | 697 | 本システムの開発にあたり、多くの方々からのフィードバックとサポートをいただきました。特に、初期テスト段階でご協力いただいたコミュニティメンバーの皆様に感謝いたします。 698 | 699 | --- 700 | 701 | **最終更新**: 2025年5月5日 -------------------------------------------------------------------------------- /setup_config.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #============================================================ 3 | # setup_config.sh.example 4 | # ─ ワークスペース構築スクリプト用のコンフィグファイル例 5 | # 6 | # 使い方: cp setup_config.sh.example setup_config.sh 7 | # 編集後、./setup_workspace_simple.sh [path] setup_config.sh を実行 8 | #============================================================ 9 | 10 | # 自動確認をスキップする(trueに設定すると確認なしで進行) 11 | AUTO_APPROVE=false 12 | 13 | # リポジトリを自動クローンする(trueに設定すると確認なしでクローン) 14 | AUTO_CLONE=false 15 | 16 | # ルート 17 | # 形式: "GitリポジトリURL|ターゲットパス" 18 | RULE_REPOS=( 19 | "https://github.com/miyatti777/rules_basic_public.git|.cursor/rules/basic" 20 | # 必要に応じて追加 21 | # "https://github.com/username/custom_rules.git|.cursor/rules/custom" 22 | ) 23 | 24 | # スクリプトリポジトリ 25 | SCRIPT_REPOS=( 26 | "https://github.com/miyatti777/scripts.git|scripts" 27 | # 必要に応じて追加 28 | # "https://github.com/username/custom_scripts.git|scripts/custom" 29 | ) 30 | 31 | # プログラムリポジトリ 32 | PROGRAM_REPOS=( 33 | "https://github.com/miyatti777/sample_pj_curry.git|Stock/programs/夕食作り" 34 | # 必要に応じて追加 35 | # "https://github.com/username/custom_program.git|Stock/programs/CUSTOM" 36 | ) 37 | 38 | 39 | # 基本ディレクトリ構造 40 | BASE_DIRS=( 41 | "Flow" 42 | "Stock" 43 | "Archived" 44 | "Archived/projects" 45 | "scripts" 46 | ".cursor/rules" 47 | ".cursor/rules/basic" 48 | "Stock/programs" 49 | # 必要に応じて追加 50 | ) -------------------------------------------------------------------------------- /setup_workspace_simple.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #============================================================ 3 | # setup_workspace_simple.sh 4 | # ─ AIプロジェクト管理ワークスペースの簡易構築スクリプト 5 | # 6 | # 使い方: ./setup_workspace_simple.sh [root_directory] [config_file] 7 | # ./setup_workspace_simple.sh [config_file] 8 | # 例: ./setup_workspace_simple.sh /Users/username/new_workspace ./my_config.sh 9 | # ./setup_workspace_simple.sh setup_config.sh # カレントディレクトリに作成 10 | # 11 | # 基本的なフォルダ構造を作成し、Flowに日付フォルダを作成します 12 | # コンフィグファイルを指定すると、クローンするリポジトリをカスタマイズできます 13 | #============================================================ 14 | 15 | set -e 16 | 17 | # 色の定義 18 | RED='\033[0;31m' 19 | GREEN='\033[0;32m' 20 | YELLOW='\033[0;33m' 21 | BLUE='\033[0;34m' 22 | NC='\033[0m' # No Color 23 | 24 | # ログ関数 25 | log_info() { 26 | echo -e "${BLUE}[INFO]${NC} $1" 27 | } 28 | 29 | log_success() { 30 | echo -e "${GREEN}[SUCCESS]${NC} $1" 31 | } 32 | 33 | log_warning() { 34 | echo -e "${YELLOW}[WARNING]${NC} $1" 35 | } 36 | 37 | log_error() { 38 | echo -e "${RED}[ERROR]${NC} $1" 39 | } 40 | 41 | # デフォルト設定 42 | # これらの設定はコンフィグファイルでオーバーライドできます 43 | setup_default_config() { 44 | # ルールリポジトリ 45 | RULE_REPOS=( 46 | "https://github.com/miyatti777/rules_basic.git|.cursor/rules/basic" 47 | ) 48 | 49 | # スクリプトリポジトリ 50 | SCRIPT_REPOS=( 51 | "https://github.com/miyatti777/scripts.git|scripts" 52 | ) 53 | 54 | # プログラムリポジトリ 55 | PROGRAM_REPOS=( 56 | "https://github.com/miyatti777/sample_pj_curry.git|Stock/programs/夕食作り" 57 | ) 58 | 59 | # サンプルプログラムフォルダ(フォールバック用) 60 | SAMPLE_PROGRAMS=( 61 | "夕食作り" 62 | ) 63 | 64 | # 基本ディレクトリ 65 | BASE_DIRS=( 66 | "Flow" 67 | "Stock" 68 | "Archived" 69 | "Archived/projects" 70 | "scripts" 71 | ".cursor/rules" 72 | ".cursor/rules/basic" 73 | "Stock/programs" 74 | ) 75 | 76 | # AUTO_APPROVE:trueに設定すると確認メッセージをスキップ 77 | AUTO_APPROVE=false 78 | 79 | # AUTO_CLONE:trueに設定するとリポジトリを自動クローン 80 | AUTO_CLONE=false 81 | } 82 | 83 | # コンフィグファイルの読み込み 84 | load_config() { 85 | local config_file="$1" 86 | 87 | if [ -f "$config_file" ]; then 88 | log_info "コンフィグファイルを読み込んでいます: $config_file" 89 | # shellcheck source=/dev/null 90 | source "$config_file" 91 | log_success "コンフィグファイルを読み込みました" 92 | else 93 | log_warning "指定されたコンフィグファイルが見つかりません: $config_file" 94 | log_info "デフォルト設定を使用します" 95 | fi 96 | } 97 | 98 | # リポジトリのクローン処理 99 | clone_repository() { 100 | local url=$1 101 | local target=$2 102 | local full_path="$ROOT_DIR/$target" 103 | 104 | # ターゲットディレクトリが既に存在し、かつgitリポジトリである場合はpullのみ 105 | if [ -d "$full_path/.git" ]; then 106 | log_info "リポジトリは既に存在します: $target - 更新を試みます" 107 | (cd "$full_path" && git pull) 108 | log_success "リポジトリを更新しました: $target" 109 | else 110 | # ディレクトリが存在する場合は中身を確認 111 | if [ -d "$full_path" ]; then 112 | # 空のディレクトリでなければエラー 113 | if [ "$(ls -A "$full_path")" ]; then 114 | log_error "ターゲットディレクトリ '$full_path' は空ではありません。クローンできません。" 115 | return 1 116 | fi 117 | # 空のディレクトリなら削除してクローン 118 | rmdir "$full_path" 119 | fi 120 | 121 | # 親ディレクトリを作成 122 | mkdir -p "$(dirname "$full_path")" 123 | 124 | # リポジトリをクローン 125 | log_info "リポジトリをクローンしています: $url -> $target" 126 | git clone "$url" "$full_path" 127 | if [ $? -eq 0 ]; then 128 | log_success "リポジトリをクローンしました: $target" 129 | else 130 | log_error "リポジトリのクローンに失敗しました: $url" 131 | return 1 132 | fi 133 | fi 134 | } 135 | 136 | # リポジトリのクローン 137 | clone_repositories() { 138 | log_info "リポジトリをクローンしています..." 139 | 140 | # git が必要 141 | if ! command -v git &> /dev/null; then 142 | log_warning "git がインストールされていません。リポジトリクローンをスキップします。" 143 | return 1 144 | fi 145 | 146 | # AUTO_CLONEがfalseの場合は確認 147 | local clone_confirm="y" 148 | if [ "$AUTO_CLONE" != "true" ]; then 149 | read -p "リポジトリをクローンしますか? (y/n): " clone_confirm 150 | if [[ "$clone_confirm" != [yY] ]]; then 151 | log_info "リポジトリのクローンはスキップされました" 152 | return 0 153 | fi 154 | else 155 | log_info "AUTO_CLONE=true が設定されているため、すべてのリポジトリを自動クローンします" 156 | fi 157 | 158 | # ルールリポジトリ 159 | if [ ${#RULE_REPOS[@]} -gt 0 ]; then 160 | log_info "ルールリポジトリをクローンしています..." 161 | for repo_entry in "${RULE_REPOS[@]}"; do 162 | url=$(echo "$repo_entry" | cut -d'|' -f1) 163 | target=$(echo "$repo_entry" | cut -d'|' -f2) 164 | clone_repository "$url" "$target" 165 | done 166 | else 167 | log_info "ルールリポジトリの指定がないためスキップします" 168 | fi 169 | 170 | # スクリプトリポジトリ 171 | if [ ${#SCRIPT_REPOS[@]} -gt 0 ]; then 172 | log_info "スクリプトリポジトリをクローンしています..." 173 | for repo_entry in "${SCRIPT_REPOS[@]}"; do 174 | url=$(echo "$repo_entry" | cut -d'|' -f1) 175 | target=$(echo "$repo_entry" | cut -d'|' -f2) 176 | clone_repository "$url" "$target" 177 | done 178 | else 179 | log_info "スクリプトリポジトリの指定がないためスキップします" 180 | fi 181 | 182 | # プログラムリポジトリ 183 | if [ ${#PROGRAM_REPOS[@]} -gt 0 ]; then 184 | log_info "プログラムリポジトリをクローンしています..." 185 | for repo_entry in "${PROGRAM_REPOS[@]}"; do 186 | url=$(echo "$repo_entry" | cut -d'|' -f1) 187 | target=$(echo "$repo_entry" | cut -d'|' -f2) 188 | 189 | # AUTO_CLONEがtrueでない場合は各リポジトリごとに確認 190 | local repo_confirm="y" 191 | if [ "$AUTO_CLONE" != "true" ]; then 192 | read -p "$url をクローンしますか? (y/n): " repo_confirm 193 | fi 194 | 195 | if [[ "$repo_confirm" == [yY] || "$AUTO_CLONE" == "true" ]]; then 196 | clone_repository "$url" "$target" || log_warning "リポジトリ $url のクローンに問題が発生しましたが、処理は継続します" 197 | else 198 | log_info "リポジトリはスキップされました: $url" 199 | fi 200 | done 201 | else 202 | log_info "プログラムリポジトリの指定がないためスキップします" 203 | fi 204 | 205 | log_success "リポジトリのクローンが完了しました" 206 | } 207 | 208 | # フォールバックのディレクトリ作成 209 | create_fallback_directories() { 210 | log_info "追加のディレクトリを作成しています..." 211 | 212 | # 共通ナレッジ領域作成 213 | if [ ! -d "$ROOT_DIR/Stock/programs/Common/Public" ]; then 214 | mkdir -p "$ROOT_DIR/Stock/programs/Common/Public" 215 | log_info "共通ナレッジディレクトリ作成: Stock/programs/Common/Public" 216 | fi 217 | 218 | # サンプルプログラムフォルダの作成(クローンが失敗または選択されなかった場合のフォールバック) 219 | for prog in "${SAMPLE_PROGRAMS[@]}"; do 220 | if [ ! -d "$ROOT_DIR/Stock/programs/$prog" ]; then 221 | mkdir -p "$ROOT_DIR/Stock/programs/$prog" 222 | log_info "プログラムディレクトリ作成: Stock/programs/$prog" 223 | fi 224 | done 225 | } 226 | 227 | # メイン処理 228 | main() { 229 | echo "============================================================" 230 | echo " AIプロジェクト管理ワークスペース簡易構築スクリプト" 231 | echo "============================================================" 232 | 233 | # 引数の処理を柔軟にする 234 | # 引数が1つだけの場合、それがconfig_fileかどうかを判断 235 | if [ $# -eq 1 ] && [[ "$1" == *".sh" ]]; then 236 | ROOT_DIR="./" 237 | CONFIG_FILE="$1" 238 | else 239 | # 通常の引数処理(以前と同じ) 240 | ROOT_DIR="${1:-./}" 241 | CONFIG_FILE="${2:-./setup_config.sh}" 242 | fi 243 | 244 | # デフォルト設定をロード 245 | setup_default_config 246 | 247 | # コンフィグファイルをロード(指定されていれば) 248 | if [ -n "$CONFIG_FILE" ]; then 249 | load_config "$CONFIG_FILE" 250 | fi 251 | 252 | # 絶対パスに変換(ディレクトリが存在しなくてもパスを解決できるように) 253 | if [[ "$ROOT_DIR" = /* ]]; then 254 | # 既に絶対パスの場合はそのまま 255 | : 256 | else 257 | # 相対パスの場合は現在のディレクトリからの絶対パスに変換 258 | ROOT_DIR="$(pwd)/$ROOT_DIR" 259 | fi 260 | 261 | log_info "ワークスペースのルートディレクトリ: $ROOT_DIR" 262 | log_info "使用するコンフィグファイル: $CONFIG_FILE" 263 | 264 | # 確認メッセージ(AUTO_APPROVEがtrueの場合はスキップ) 265 | if [ "$AUTO_APPROVE" != "true" ]; then 266 | read -p "この場所にワークスペースを作成してよろしいですか? (y/n): " confirm 267 | if [[ "$confirm" != [yY] ]]; then 268 | log_info "キャンセルされました" 269 | exit 0 270 | fi 271 | else 272 | log_info "AUTO_APPROVE=true が設定されているため、確認をスキップします" 273 | fi 274 | 275 | # ルートディレクトリ作成 276 | mkdir -p "$ROOT_DIR" 277 | 278 | log_info "基本ディレクトリ構造を作成しています..." 279 | 280 | # ディレクトリ作成 281 | for dir in "${BASE_DIRS[@]}"; do 282 | mkdir -p "$ROOT_DIR/$dir" 283 | log_info "ディレクトリ作成: $dir" 284 | done 285 | 286 | # 日付フォルダ作成 287 | log_info "Flow 内に日付フォルダを作成しています..." 288 | TODAY=$(date +"%Y-%m-%d") 289 | YEAR_MONTH=$(date +"%Y%m") 290 | FLOW_DATE_DIR="$ROOT_DIR/Flow/$YEAR_MONTH/$TODAY" 291 | mkdir -p "$FLOW_DATE_DIR" 292 | log_info "日付フォルダ作成: Flow/$YEAR_MONTH/$TODAY" 293 | 294 | # リポジトリのクローン(先に行う) 295 | clone_repositories 296 | 297 | # クローンされなかったディレクトリをフォールバックとして作成 298 | create_fallback_directories 299 | 300 | # 完了メッセージ 301 | log_success "ワークスペースの構築が完了しました: $ROOT_DIR" 302 | echo "============================================================" 303 | echo "完了しました!新しいワークスペースが構築されました。" 304 | echo "ディレクトリ: $ROOT_DIR" 305 | echo "============================================================" 306 | } 307 | 308 | # スクリプト実行 309 | main "$@" --------------------------------------------------------------------------------