--- argument-hint: <タスク名> [調査項目名] allowed-tools: ["Read", "Write", "Edit", "Bash", "WebSearch", "Task"] --- # overview.mdの調査項目を実施し、個別ファイルとして保存します このコマンドは `specs/[taskname]/overview.md` の調査セクションから調査項目を読み取り、調査を実施して `specs/research/[調査項目名].md` として保存します。 ## コマンドの役割 **`/sdd:conduct-research`(このコマンド)の役割**: - **技術的な調査・検証**を実施 - AIが自律的に調査・実験・ベンチマークなどを行って判断できる項目 - 例: - ライブラリやフレームワークの選定(性能比較、機能比較) - 実装方法の検証(PoC作成、パフォーマンス測定) - アーキテクチャの実現可能性調査 - セキュリティ手法の選定と検証 **`/sdd:clarify-spec` との違い**: - **clarify-spec**: ビジネス要件やユーザーの意思決定が必要な項目をユーザーに質問 - **conduct-research**: 技術的な調査が必要な項目をAIが調査・検証 - clarify-specは「ユーザーに聞く」、conduct-researchは「AIが調べる」 **使い分けの例**: - ✅ research: 「JWT vs セッション認証のパフォーマンス比較」(技術的検証) - ✅ clarify: 「ログイン時にメールアドレスとユーザー名のどちらを使うか」(ビジネス要件) - ✅ research: 「PostgreSQL vs MySQL のベンチマーク」(技術的検証) - ✅ clarify: 「管理者画面の公開範囲(社内のみ or 顧客も使用)」(ビジネス要件) 【引数】 $ARGUMENTS ## 引数の形式 - `[taskname]` - タスク名のみ指定した場合、全ての未完了調査項目を順に実施 - `[taskname] [調査項目名]` - 特定の調査項目のみ実施 - 例: `user-authentication JWT認証のパフォーマンス検証` → 指定された調査項目のみ実施 ## 実行手順 ### 1. タスクと調査項目の特定 1. **引数が指定されている場合** - `[taskname]`のみ: specs/[taskname]/overview.mdの調査セクションから未完了の調査項目を抽出 - `[taskname] [調査項目名]`: 指定された調査項目のみを対象 2. **引数が指定されていない場合** - `specs/`ディレクトリ内のサブディレクトリを一覧表示 - 複数のタスクがある場合、AskUserQuestionツールでユーザーに選択させる - 単一のタスクのみの場合は自動選択 3. **指定されたタスクディレクトリが存在しない場合** - エラーメッセージを表示: 「specs/[taskname]/ ディレクトリが見つかりません」 - specs/配下の利用可能なタスクを一覧表示 ### 2. overview.mdの確認 1. **ファイルの存在確認** - `specs/[taskname]/overview.md` の存在を確認 - 存在しない場合: エラーメッセージを表示し、`/sdd:init-task` コマンドの実行を提案 2. **調査項目の抽出** - overview.mdの「調査項目」セクション(表形式)から調査項目を抽出 - 各調査項目の以下の情報を取得: - 状態(未着手/完了) - 調査項目名 - 理由 3. **未完了調査項目のリスト表示** - 状態が「未着手」の項目を表示 - 調査項目が全て完了している場合: 完了メッセージを表示して終了 ### 3. ステアリングドキュメントの読み込み プロジェクト全体のコンテキストを把握するため、以下のステアリングドキュメントを読み込みます: **`specs/_steering/product.md`**: - プロダクトの目的とビジョン - ターゲットユーザー - 主要機能とビジネス目標 **`specs/_steering/tech.md`**: - 技術スタックとアーキテクチャ - 開発標準(型安全性、コード品質、テスト戦略) - 重要な技術的決定事項 **`specs/_steering/structure.md`**: - プロジェクト構造と命名規則 - コード組織原則 - モジュール境界 **ステアリングドキュメントが存在しない場合**: - 警告メッセージを表示: 「⚠️ ステアリングドキュメントが見つかりません。プロジェクト固有のコンテキストなしで進めます。」 - `/sdd:steering` コマンドでステアリングドキュメントを作成することを推奨 - 処理は続行(ステアリングドキュメントは必須ではない) ### 4. 調査項目の選択 **調査項目名が指定されている場合**: - 指定された名前の調査項目を特定 - その調査項目の詳細を表示 - 手順5へ進む **調査項目名が指定されていない場合**: - 未完了の調査項目を表示 - AskUserQuestionツールを使用してユーザーに選択させる - 各調査項目を選択肢として提示 - 「全て順番に実施」オプションも含める ### 5. 調査の実施 選択された調査項目について、以下の手順で調査を実施: #### 5-1. 調査内容の確認 1. **調査項目の詳細を確認** - overview.mdから調査項目名と理由を取得 - 何を調査すべきかを明確に理解 2. **調査プランの作成(内部処理)** - TodoWriteツールを使用して調査ステップを計画 - 例: - コードベースの既存実装を調査 - ドキュメント・ベストプラクティスを調査(WebSearchツール使用) - PoC実装(必要な場合) - ベンチマーク実施(必要な場合) - 結果の比較と分析 - **調査プランはspecファイルには書かない**(内部処理のみ) #### 5-2. 調査の実行 調査方法に応じて適切なアプローチを選択: **A. コードベース調査** - 既存の実装パターンを確認 - 使用されているライブラリやフレームワークを確認 - 類似機能の実装方法を分析 **B. ドキュメント調査** - WebSearchツールを使用して最新のベストプラクティスを調査 - 公式ドキュメントを参照 - 技術記事やブログを調査 **C. PoC(Proof of Concept)実装** - 小規模な実装例を作成 - 動作確認とパフォーマンス測定 - 実装の難易度や工数を評価 **D. ベンチマーク** - 複数の選択肢を比較 - パフォーマンス測定 - リソース使用量の確認 #### 5-3. 調査結果のまとめと保存 調査完了後、以下の情報をまとめて `specs/[taskname]/research/[調査項目名].md` として保存: ```markdown # [調査項目名] ## 結論 - 選択: [選択した技術/手法] - 理由: [選択の理由を1-3行で簡潔に] ## 詳細(必要な場合のみ) - パフォーマンス測定結果 - セキュリティ考慮事項 - 実装の難易度評価 - 注意点やリスク ## 関連タスク - specs/[taskname]/ ``` **ファイル名の決定**: - 調査項目名をそのままファイル名にする - 例: 「JWT認証のパフォーマンス検証」→ `JWT認証のパフォーマンス検証.md` ### 6. overview.mdの調査セクション更新 #### 6-1. 表の更新 - overview.mdの調査項目表で、該当行の「状態」列を「完了」に更新 - 「概要」列に調査結果の簡潔なサマリーと結果ファイルへのリンクを追加: ```markdown | 完了 | [調査項目名] | [理由] | [選択した技術/手法](research/[調査項目名].md) | ``` #### 6-2. 全調査項目完了時の処理 - 全ての調査項目の状態が「完了」になっている場合 - overview.mdの「次のステップ」を更新: ```markdown **次のステップ**: `/sdd:define-requirements [taskname]` で要件定義を開始してください ``` ### 7. 完了報告 ``` ✅ 調査項目を完了しました ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📍 対象タスク: [taskname] 📝 完了した調査項目: [調査項目名] 🔍 結論: [選択した技術/手法] 📄 保存先: specs/[taskname]/research/[調査項目名].md 📊 調査の進捗: 完了 {完了数} / {総数} 💡 次のアクション: - 残りの調査項目: `/sdd:conduct-research [taskname]` - 全調査完了: `/sdd:define-requirements [taskname]` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` **複数の調査項目を順に実施する場合**: - 1つの調査項目が完了したら、次の未完了項目を自動的に表示 - ユーザーに「続けて次の調査項目を実施しますか?」と確認 - 承認されたら手順4に戻って次の調査項目を実施 ## 重要な注意事項 - **調査は丁寧に**: 調査は実装の品質を左右する重要なステップです。時間をかけて丁寧に調査してください - **エビデンスベース**: 推測ではなく、調査結果(ベンチマーク、ドキュメント、PoC)に基づいて判断すること - **調査結果は簡潔に**: 結論と理由を明確に。詳細は必要な場合のみ記載 - **個別ファイルで管理**: 各調査項目は `specs/research/[調査項目名].md` として個別に保存 - **調査プランはspecに書かない**: 調査プランは内部処理のみ。結果だけをファイルに保存 ## 使用例 1. タスク全体の調査を順に実施: `/sdd:conduct-research user-authentication` 2. 特定の調査項目のみ実施: `/sdd:conduct-research user-authentication JWT認証のパフォーマンス検証` 3. 引数なしで対話的に選択: `/sdd:conduct-research` ## 内部品質チェック **重要**: 以下のチェックはコマンド内部で実施し、**生成されるspecファイルには結果を記載しません**。 ### ステアリングドキュメントレビュー(内部処理) 調査結果ファイル生成後、内部的にステアリングドキュメントとの整合性を確認: - tech.mdの技術方針と調査結果の整合性 - product.mdのビジネス目標との整合性 問題がある場合のみユーザーに修正を促す。準拠している場合は何も出力しない。