Claude Codeプロンプトの基本原則
なぜプロンプトが重要なのか
Claude Codeは強力なAIコーディングアシスタントですが、その能力を最大限に引き出すにはプロンプトの質が重要です。
良いプロンプトの効果:
- 意図した通りのコードが生成される
- 修正回数が減る
- 開発効率が大幅に向上
- 品質の高い成果物
悪いプロンプトの問題:
- 期待と異なる結果
- 何度も修正が必要
- 時間とトークンの浪費
プロンプトの基本構造
効果的なプロンプトの4要素
1. コンテキスト(Context)
現在、Reactを使ったECサイトを開発しています。
TypeScriptを使用し、状態管理にはReduxを採用しています。
2. タスク(Task)
商品一覧ページのフィルター機能を実装してください。
3. 制約条件(Constraints)
- 既存のコードスタイルに従う
- パフォーマンスを考慮する
- モバイル対応を含める
4. 出力形式(Output Format)
- コードとその説明を含める
- テストコードも生成する
テンプレート例
【コンテキスト】
{プロジェクトの背景や技術スタック}
【タスク】
{具体的に実現したいこと}
【制約条件】
- {条件1}
- {条件2}
- {条件3}
【期待する出力】
{どのような形式で結果が欲しいか}
シーン別プロンプト例
新機能の実装
基本的なプロンプト:
ユーザー認証機能を実装して
改善されたプロンプト:
以下の仕様でJWT認証機能を実装してください:
【要件】
- メールアドレスとパスワードでログイン
- アクセストークンとリフレッシュトークンを発行
- トークンの有効期限:アクセス15分、リフレッシュ7日
【技術スタック】
- フレームワーク:Next.js 14(App Router)
- 認証:Jose ライブラリ
- DB:Prisma + PostgreSQL
【必要なファイル】
1. /app/api/auth/login/route.ts
2. /app/api/auth/refresh/route.ts
3. /lib/auth.ts(ヘルパー関数)
4. /middleware.ts(認証チェック)
【セキュリティ要件】
- パスワードはbcryptでハッシュ化
- HTTPOnlyクッキーでトークン管理
- CSRF対策を含める
バグ修正
基本的なプロンプト:
このバグを直して
改善されたプロンプト:
以下のバグを修正してください:
【ファイル】
src/components/UserList.tsx
【バグの症状】
ユーザー一覧をスクロールすると、一部のアイテムが
重複して表示される
【再現手順】
1. ユーザー一覧ページにアクセス
2. 下にスクロールして追加データを読み込む
3. 上にスクロールして戻る
【期待される動作】
重複なく一意のユーザーのみ表示
【関連コード】
useInfiniteScrollフックを使用してページネーション実装
【デバッグ情報】
React.StrictModeでは問題が再現しやすい
リファクタリング
基本的なプロンプト:
このコードをきれいにして
改善されたプロンプト:
以下のコードをリファクタリングしてください:
【対象ファイル】
src/utils/dataProcessor.ts
【リファクタリングの目的】
1. 可読性の向上
2. テスタビリティの改善
3. 責務の分離
【具体的な改善点】
- 1つの関数が200行を超えているので分割
- マジックナンバーを定数化
- 副作用を持つ処理を純粋関数に変更
【制約】
- 既存のインターフェースは変更しない
- 全てのテストがパスすること
- TypeScriptの型を厳密に
【期待する出力】
- リファクタリング後のコード
- 変更点の説明
- 新しいテストケース
コードレビュー
基本的なプロンプト:
このコードをレビューして
改善されたプロンプト:
以下の観点でコードレビューを行ってください:
【対象】
PR #123 の変更ファイル全て
【レビュー観点】
1. セキュリティ
- SQLインジェクション
- XSS
- 認証・認可の問題
2. パフォーマンス
- N+1クエリ
- メモリリーク
- 不要な再レンダリング
3. 保守性
- 命名規則
- コードの重複
- 適切な抽象化
4. テスト
- カバレッジ
- エッジケース
【出力形式】
- 重大度(Critical/Major/Minor)
- 該当箇所(ファイル名:行番号)
- 問題の説明
- 修正案
高度なプロンプトテクニック
1. 段階的なプロンプト
複雑なタスクは段階的に分解:
まず、このプロジェクトの構造を分析して
既存のパターンと使用している技術を教えて
↓
分析結果を踏まえて、検索機能を追加するための
実装計画を作成して
↓
計画の第1段階:検索用のAPIエンドポイントを
実装して
2. ペルソナ設定
あなたはセキュリティの専門家として
このコードをレビューしてください。
OWASPのガイドラインに基づいて
脆弱性を指摘してください。
3. 例示による誘導
以下のような形式でAPIエンドポイントを作成してください:
【例】
// GET /api/users
export async function GET(request: Request) {
const users = await prisma.user.findMany();
return Response.json(users);
}
これを参考に、商品(Product)のCRUD APIを作成して
4. 否定形での制約
以下の実装で避けてほしいこと:
- any型の使用
- console.logのデバッグ出力
- ハードコードされた値
- 同期的なファイル操作
CLAUDE.mdでのプロンプト活用
プロジェクトルートのCLAUDE.mdにプロンプトのコンテキストを設定:
# プロジェクト概要
ECサイトのバックエンドAPI
# 技術スタック
- Node.js 20
- TypeScript 5.0
- Prisma ORM
- PostgreSQL 15
# コーディング規約
- ESLint/Prettierの設定に従う
- 関数は50行以内
- 型は明示的に定義
# 禁止事項
- any型の使用禁止
- console.logでのデバッグ禁止
- 非同期処理のコールバック禁止
カスタムスラッシュコマンド
.claude/commands/にプロンプトテンプレートを保存:
以下の観点でコードレビューを実施してください:
1. セキュリティチェック
2. パフォーマンス分析
3. コード品質評価
4. テストカバレッジ確認
問題が見つかった場合は重大度と修正案を提示してください。
使用方法:
/review
プロンプトのアンチパターン
避けるべきプロンプト
1. 曖昧すぎる
❌ 良い感じにして
❌ もっとかっこよく
❌ 普通に動くように
2. 情報不足
❌ エラーを直して(エラー内容なし)
❌ 動かない(環境情報なし)
❌ 遅い(何が遅いか不明)
3. 過度に詳細
❌ (500行のプロンプト)
→ 段階的に分けて依頼
4. 矛盾する要求
❌ シンプルにして、でも全機能を維持して
まとめ
効果的なClaude Codeプロンプトのポイント:
- コンテキストを明確に伝える
- 具体的なタスク説明
- 制約条件を明示
- 期待する出力形式を指定
- 段階的に複雑なタスクを分解
- 例示で意図を伝える
良いプロンプトを書く習慣をつけることで、Claude Codeとの協働がより効率的になります。最初は時間がかかりますが、テンプレートを作成して再利用することで、継続的に開発効率を向上させることができます。