Claude Code プロンプト完全ガイド
Claude Codeの出力品質は、プロンプト(指示)の書き方に大きく依存します。この記事では、効果的なプロンプトの書き方と、目的別のテンプレートを紹介します。
プロンプトの基本原則
1. 具体的に書く
悪い例:
このコードを良くして
良い例:
このコードのパフォーマンスを改善してください。
特に以下の点を重視:
- N+1クエリの解消
- 不要なループの削除
- メモリ使用量の削減
2. コンテキストを提供する
悪い例:
ログイン機能を作って
良い例:
Next.js 14のApp Routerを使ったログイン機能を実装してください。
要件:
- 認証方式: JWT
- データベース: PostgreSQL(Prisma)
- バリデーション: Zod
- 既存のUserモデルを使用
3. 期待する出力形式を指定する
この関数のユニットテストを作成してください。
出力形式:
- テストフレームワーク: Jest
- 各テストケースにコメントで説明を追加
- エッジケースも含める
目的別プロンプトテンプレート
コード生成
[機能名]を実装してください。
## 要件
- [要件1]
- [要件2]
- [要件3]
## 技術スタック
- 言語: [言語]
- フレームワーク: [フレームワーク]
- ライブラリ: [使用するライブラリ]
## 既存コードとの整合性
- [既存の設計パターン]
- [命名規則]
- [ディレクトリ構造]
リファクタリング
このコードをリファクタリングしてください。
## 改善したい点
- [改善点1]
- [改善点2]
## 制約
- 外部インターフェースは変更しない
- 既存のテストがパスすること
- [その他の制約]
## 優先度
1. 可読性
2. パフォーマンス
3. 保守性
デバッグ
このバグを調査して修正してください。
## 症状
[エラーメッセージまたは挙動の説明]
## 再現手順
1. [手順1]
2. [手順2]
3. [手順3]
## 期待する動作
[正しい動作の説明]
## 関連ファイル
- [ファイルパス1]
- [ファイルパス2]
コードレビュー
このコードをレビューしてください。
## レビュー観点
- セキュリティ脆弱性
- パフォーマンス問題
- エラーハンドリング
- コーディング規約
## プロジェクトのルール
- [ルール1]
- [ルール2]
## 出力形式
問題点ごとに以下の形式で指摘:
- 場所(ファイル:行番号)
- 問題の種類
- 説明
- 修正案
テスト作成
[ファイル名]のユニットテストを作成してください。
## テスト対象
- [関数/クラス名]
## テストケース
- 正常系: [説明]
- 異常系: [説明]
- エッジケース: [説明]
## テスト環境
- フレームワーク: [Jest/Vitest/etc]
- モック: [モック対象]
高度なテクニック
段階的な指示
複雑なタスクは段階的に指示すると効果的です。
まず、現在のコードベースを分析して、
認証機能がどのように実装されているか説明してください。
(回答を確認後)
では、その設計に合わせてパスワードリセット機能を実装してください。
思考プロセスの要求
この問題を解決する方法を3つ提案してください。
それぞれのメリット・デメリットを説明し、
最も適切な方法を推奨してください。
制約の明示
以下の制約を守ってコードを書いてください:
- 外部ライブラリは追加しない
- 既存のAPIインターフェースは変更しない
- TypeScriptの厳格モードでエラーが出ないこと
- コメントは日本語で記述
例示による誘導
以下のような形式でAPIエンドポイントを作成してください:
例:
```typescript
export async function GET(request: Request) {
const data = await fetchData();
return Response.json(data);
}
作成するエンドポイント:
- GET /api/users - ユーザー一覧取得
- POST /api/users - ユーザー作成
## CLAUDE.mdの活用
プロジェクトルートに`CLAUDE.md`を配置すると、毎回のプロンプトで繰り返し書く必要がなくなります。
```markdown
# プロジェクト概要
Next.js 14 + TypeScriptのWebアプリケーション
## 技術スタック
- フレームワーク: Next.js 14 (App Router)
- 言語: TypeScript
- スタイリング: Tailwind CSS
- データベース: PostgreSQL + Prisma
- 認証: NextAuth.js
## コーディング規約
- 関数コンポーネントを使用
- Props型は`type`で定義
- ファイル名はkebab-case
- コンポーネント名はPascalCase
## ディレクトリ構造
src/
├── app/ # ページとAPIルート
├── components/ # UIコンポーネント
├── lib/ # ユーティリティ
└── types/ # 型定義
## 重要な注意点
- 日本語でコメントを書く
- console.logは本番コードに残さない
- any型は使用禁止
よくある失敗パターンと改善
パターン1: 曖昧な指示
失敗例:
このコードを修正して
改善例:
このコードで発生しているTypeScriptエラーを修正してください。
エラー: Type 'string' is not assignable to type 'number'
パターン2: 情報不足
失敗例:
APIを作って
改善例:
ユーザー情報を取得するREST APIを作成してください。
エンドポイント: GET /api/users/:id
レスポンス: { id, name, email, createdAt }
認証: Bearer token必須
エラー: 404(ユーザーなし)、401(未認証)
パターン3: 複数タスクの混在
失敗例:
ログイン機能を作って、テストも書いて、
あとデプロイの設定もして
改善例:
ログイン機能を実装してください。
(完了後に別のプロンプトで)
ログイン機能のテストを書いてください。
シチュエーション別プロンプト例
新機能の追加
ユーザーのお気に入り機能を追加してください。
要件:
- 記事をお気に入りに追加/削除できる
- お気に入り一覧を表示できる
- お気に入り数を記事に表示
実装箇所:
- データベーススキーマ(Prisma)
- APIエンドポイント
- フロントエンドUI
既存の認証システム(NextAuth)を使用してください。
バグ修正
以下のバグを修正してください。
## バグ報告
フォーム送信後にページがリロードされ、
入力内容が消えてしまう。
## 期待動作
フォーム送信後はページ遷移せず、
成功メッセージを表示する。
## 該当ファイル
src/components/ContactForm.tsx
パフォーマンス改善
このページの初期表示速度を改善してください。
現状の問題:
- 大量のデータを一度に取得している
- 画像が最適化されていない
- 不要なJavaScriptが含まれている
目標:
- First Contentful Paint: 1.5秒以下
- Largest Contentful Paint: 2.5秒以下
まとめ
効果的なプロンプトのポイント:
- 具体的に: 曖昧さを排除し、明確に指示
- コンテキスト: 技術スタック、制約、既存コードの情報を提供
- 段階的に: 複雑なタスクは分割して指示
- CLAUDE.md: プロジェクト固有の情報は設定ファイルに
良いプロンプトを書く習慣を身につけると、Claude Codeの出力品質が大幅に向上します。