概要
効果的なプロンプト(AIへの指示)は、AI協調開発の成果を大きく左右します。このページでは、Context Engineeringの原則に基づいた実践的なプロンプト設計技法を解説します。
Context Engineering
"Context Engineering: the delicate art and science of filling the context window with just the right information for the next step"
— Andrej Karpathy, 2025年後半
AIのコンテキストウィンドウに「適切な情報」を「適切な量」入れることが、良い結果の鍵です。
プロンプト設計の5原則
原則1: 具体性(Specificity)
曖昧な指示は曖昧な結果を生みます。何を、どのように作るかを具体的に伝えましょう。
❌ 悪い例
APIを作って
✓ 良い例
Python (FastAPI) でユーザー管理APIを作成してください。
エンドポイント:
- POST /users - ユーザー作成
- GET /users/{id} - ユーザー取得
- PUT /users/{id} - ユーザー更新
- DELETE /users/{id} - ユーザー削除
要件:
- Pydanticでリクエスト/レスポンスを検証
- SQLAlchemyでDB操作(PostgreSQL)
- 適切なHTTPステータスコードを返す
原則2: コンテキスト提供(Context Provision)
AIはあなたのプロジェクトを知りません。関連情報を明示的に提供しましょう。
必須の情報:
- 使用言語・フレームワーク・バージョン
- 関連する既存コード(インターフェース、型定義等)
- コーディング規約・命名規則
- 制約条件(パフォーマンス、セキュリティ等)
✓ 良い例
【プロジェクト情報】
- React 18 + TypeScript 5.0
- 状態管理: Zustand
- スタイル: Tailwind CSS
- 命名規則: コンポーネントはPascalCase、関数はcamelCase
【既存の型定義】
interface User {
id: string;
name: string;
email: string;
role: 'admin' | 'user';
}
【依頼】
ユーザー一覧を表示するテーブルコンポーネントを作成してください。
ソート機能(名前、メール)を実装してください。
原則3: 段階的依頼(Incremental Requests)
大きなタスクを一度に依頼すると品質が低下します。小さなステップに分割しましょう。
❌ 悪い例
ECサイトのフロントエンドを全部作って
✓ 良い例(段階的アプローチ)
Step 1: 「商品一覧コンポーネントを作成」
Step 2: (レビュー後)「商品詳細ページを作成」
Step 3: (レビュー後)「カート機能を追加」
Step 4: (レビュー後)「チェックアウトフローを作成」
原則4: 出力形式の指定(Output Specification)
期待する出力形式を明示すると、使いやすい結果が得られます。
✓ 良い例
以下の形式で出力してください:
1. まずコードの概要説明(3行程度)
2. 完全なコード(コメント付き)
3. 使用例
4. テストケース(3つ以上)
原則5: 制約の明示(Constraint Specification)
「やってほしくないこと」も明示すると、より適切な結果が得られます。
✓ 良い例
制約:
- 外部ライブラリは使用しない(標準ライブラリのみ)
- グローバル変数は使用しない
- any型は使用しない
- コンソールログは残さない
実践的テンプレート
汎用テンプレート
【背景・目的】
[なぜこの機能が必要か、プロジェクトの概要]
【技術スタック】
- 言語: [言語名 バージョン]
- フレームワーク: [フレームワーク名 バージョン]
- その他: [関連ツール]
【依頼内容】
[具体的に何を作成・修正してほしいか]
【要件】
- [要件1]
- [要件2]
- [要件3]
【制約】
- [制約1]
- [制約2]
【関連コード】
```
[既存コード、インターフェース、型定義など]
```
【期待する出力】
[出力形式、含めてほしい内容]
バグ修正テンプレート
【問題の概要】
[何が起きているか、期待動作と実際の動作の差]
【再現手順】
1. [手順1]
2. [手順2]
3. [手順3]
【エラーメッセージ】
```
[エラー内容]
```
【関連コード】
```
[問題のあるコード]
```
【環境】
- OS: [OS名]
- 言語/ランタイム: [バージョン]
- 依存関係: [関連パッケージ]
【試したこと】
- [試したこと1]
- [試したこと2]
コードレビュー依頼テンプレート
【レビュー対象コード】
```
[レビューしてほしいコード]
```
【観点】
以下の観点でレビューしてください:
- セキュリティ(入力検証、認証等)
- パフォーマンス(計算量、メモリ使用量)
- 可読性・保守性
- エラーハンドリング
- テスト容易性
【特に確認してほしい点】
[具体的な懸念点があれば]
よくある失敗と対策
⚠️ 失敗パターン
| 失敗 | 対策 |
|---|---|
| 「いい感じに」等の曖昧表現 | 具体的な要件を列挙 |
| コンテキスト不足 | 技術スタック、既存コードを提供 |
| 一度に大量依頼 | ステップに分割、各ステップでレビュー |
| 矛盾する要求 | トレードオフを明確にし優先度を指定 |
| 結果を検証しない | 必ずレビュー・テストを実施 |
参考文献
- Anthropic Prompt Engineering Guide
- MIT Technology Review "From vibe coding to context engineering" (Nov 2025)
- OpenAI Best Practices for Prompt Engineering
次へ
→ 段階的依頼技法