ChatGPTで要件整理してからClaude Codeに渡す方法
はじめに
Claude CodeとChatGPTを組み合わせて個人開発を加速する方法では、役割分担の基本を説明しました。本記事では、ChatGPTで要件を整理して、Claude Codeに明確な指示として渡すプロセスを具体例で解説します。
要件をそのままClaude Codeに渡すと、曖昧で実装が破綻しやすいです。ChatGPTで一度整理することで、Claude Codeが実装しやすい形に変換できます。
ChatGPTの役割:要件の整理と分解
ステップ1:曖昧な要件をChatGPTに渡す
ChatGPT への指示:
「ユーザープロフィール画面を作りたいです。
機能:
- ユーザー情報を表示
- 編集できるようにしたい
- プロフィール画像も対応したい
実装可能な形に要件を整理してください。」
ステップ2:ChatGPTが要件を構造化
ChatGPTの回答例:
【要件の整理】
【1. 表示機能】
- ユーザー名
- メールアドレス
- 自己紹介文
- プロフィール画像
【2. 編集機能】
- 各フィールドは入力フォーム
- 保存ボタン
- キャンセルボタン
- 編集前状態への復帰
【3. バリデーション】
- ユーザー名:空でない、50字以内
- メールアドレス:有効形式
- 自己紹介文:500字以内
【4. 画像処理】
- ファイル選択
- プレビュー表示
- アップロード
- 既存画像の削除オプション
【5. エラーハンドリング】
- アップロード失敗時のメッセージ
- ネットワークエラー
- 保存失敗時の復旧
【実装ステップの提案】
ステップ1:表示機能だけ
ステップ2:基本的な編集機能
ステップ3:バリデーション追加
ステップ4:画像処理
ステップ5:エラーハンドリング
ChatGPTの価値:
- 曖昧な要件が構造化される
- 見落としやすい項目が洗い出される
- 実装順序が提案される
ステップ3:Claude Codeに渡す前にChatGPTで指示テンプレート化
ChatGPT への追加指示:
上記の要件に基づいて、
Claude Codeに渡す実装指示を作成してください。
形式:
【対象ファイル】
【機能】
【制約】
【テスト項目】
Claude Codeがすぐに実装できる具体的な指示にしてください。
ChatGPT の出力例:
【Claude Code への実装指示案】
ステップ1:表示機能
対象ファイル:
- src/components/UserProfile.tsx(新規作成)
機能:
ユーザー情報を表示するコンポーネント
表示項目:
- ユーザー名
- メールアドレス
- 自己紹介文(最大500字)
- プロフィール画像
制約:
- ファイルは UserProfile.tsx のみ
- 他のコンポーネントは変更しない
- API は getUser() を使用(既存)
テスト項目:
- ユーザー情報が正しく表示される
- 画像が表示される
実装前に計画を提示してください。
ChatGPTの価値:
- Claude Codeが実装しやすい形に変換
- スコープが明確
- テスト項目が記載
ChatGPT→Claude Code の流れ全体
【フロー】
人間:「プロフィール機能が欲しい」
↓
【ChatGPT】
人間の曖昧な要件を受け取る
要件を整理・分解
Claude Code 用の指示テンプレートに変換
↓
【Claude Code】
ChatGPT が用意した指示を受け取る
実装が明確で、計画も立てやすい
安心して実装開始
↓
実装完了
よくある間違い
❌ 間違い1:ChatGPTなしでClaude Codeに渡す
「プロフィール機能を実装してください」
↓
Claude Code:
「表示だけ?編集機能も?画像は?」
勝手に複数ファイルを編集
テストは含まない
✅ 改善:ChatGPT経由で要件を整理
ChatGPTで要件整理
↓
Claude Code に明確な指示を渡す
↓
計画承認後に実装
↓
テストケースまで明確
❌ 間違い2:ChatGPTに実装させてしまう
ChatGPT:「コードを書きます」
↓
長いコード生成
↓
Claude Code よりも文脈が短い
↓
デバッグが難しい
✅ 改善:ChatGPTは計画まで、実装はClaude Code
ChatGPT:「要件整理と計画」
Claude Code:「実装」
↓
役割が明確
↓
各自の得意分野で最大化
実際のワークフロー例
例:「複数ファイルのリファクタリング」
1. ChatGPT での分析
人間:
「src/api/ 内の複数ファイルで、
HTTP エラーハンドリングが重複している。
改善したいが、何から始めるか。」
ChatGPT:
「以下を提案します:
【分析結果】
- src/api/users.ts、posts.ts、comments.ts
- 共通パターン:try-catch → error.status → message 変換
- 重複率:約 40%
【改善ステップ】
ステップ1:utils/httpError.ts に共通関数を作成
- extractErrorMessage()
- getHttpStatus()
ステップ2:src/api/users.ts から古いハンドリングを削除
ステップ3:src/api/posts.ts も同様に修正
ステップ4:他のファイルも順次修正
」
2. Claude Code への指示生成
ChatGPT に依頼:
上記の計画に基づいて、
Claude Code に渡す最初のステップの指示を作成してください。
ChatGPT の出力:
【Claude Code への指示】
ステップ1:共通エラーハンドリング関数を作成
対象ファイル:
- src/utils/httpError.ts(新規作成)
実装内容:
export const extractErrorMessage = (error) => {
// error.message か error.msg か error.data.message を統一
// 予測不可能な形式に対応
}
export const getHttpStatus = (error) => {
// error.status か error.statusCode か error.response.status を統一
}
制約:
- ファイルは httpError.ts のみ作成
- 他のファイルは変更しない
- テストは不要(users.ts のテストで検証)
実装前に計画を確認させてください。
3. Claude Code で実装
指示が明確なため、Claude Code は計画を立てやすく、実装も正確になります。
まとめ
ChatGPT と Claude Code を組み合わせるキーポイント:
ChatGPT の役割:
- 曖昧な要件を整理
- 実装ステップを提案
- Claude Code 用の指示に変換
- リスク評価
Claude Code の役割:
- ChatGPT が用意した明確な指示を実装
- 小さな差分で段階的に進める
- テストを含める
流れ: 人間(曖昧な要件)→ ChatGPT(整理・指示化)→ Claude Code(実装)
ChatGPTとClaude Codeの役割分担をさらに深掘りして、要件整理段階から最適化することで、開発速度と品質の両立が実現します。