概要
AIに効果的な指示を与えることは、Human-AI協調開発の基本スキルです。このページでは、プロンプト設計(AIへの指示の作り方)の基礎原則を解説します。
Context Engineering(コンテキストエンジニアリング)
2025年後半、Karpathy自身が提唱した概念:
"Context Engineering: the delicate art and science of filling the context window with just the right information for the next step"
AIに「適切な情報」を「適切な量」提供することが、良い結果を得る鍵です。
効果的なプロンプトの原則
原則1: 具体的であること
曖昧な指示は曖昧な結果を生みます。具体的な要件、制約、期待する出力形式を明示しましょう。
❌ 悪い例
ログイン機能を作って
✓ 良い例
Python (Flask) でログイン機能を実装してください。
要件:
- メールアドレスとパスワードで認証
- パスワードはbcryptでハッシュ化
- ログイン試行は5回まで、超えたら15分ロック
- セッション管理にはFlask-Loginを使用
既存のUserモデル:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(120), unique=True)
password_hash = db.Column(db.String(128))
原則2: コンテキストを提供すること
AIはプロジェクトの背景を知りません。関連情報を明示的に提供しましょう。
提供すべきコンテキスト:
- プロジェクトの目的・背景
- 使用技術・フレームワーク・バージョン
- コーディング規約・命名規則
- 関連する既存コード
- 制約条件(パフォーマンス、セキュリティ等)
- 期待する出力形式
原則3: 段階的に依頼すること
大きなタスクを一度に依頼すると、品質が低下します。小さなステップに分割しましょう。
❌ 悪い例
ECサイトを作って
✓ 良い例(段階的アプローチ)
ステップ1: 「商品一覧を表示するコンポーネントを作成」
ステップ2: (レビュー後)「カートに追加する機能を追加」
ステップ3: (レビュー後)「カート内容を表示するコンポーネントを作成」
...
原則4: 役割・視点を指定すること
AIに特定の役割や視点を与えると、より適切な回答が得られます。
✓ 例
あなたはセキュリティの専門家です。
以下のコードのセキュリティ脆弱性を指摘してください:
[コード]
よくある失敗パターン
❌ 失敗1: 曖昧すぎる依頼
いい感じに直して
→ 「何を」「どのように」直すのか不明。AIは推測するしかない。
❌ 失敗2: コンテキスト不足
エラーを修正して
→ 何のエラーか、どのコードか、何を期待しているのか不明。
❌ 失敗3: 一度に大量の要求
ユーザー管理、商品管理、注文管理、決済、通知機能を全部作って
→ 品質低下、レビュー困難、修正も困難。
❌ 失敗4: 矛盾する指示
シンプルだけど高機能で、軽量だけど堅牢で...
→ トレードオフを明確にせず、AIを混乱させる。
プロンプト設計チェックリスト
依頼前に確認
- 何を作りたいか具体的に説明したか?
- 使用技術・バージョンを明記したか?
- 制約条件を明記したか?
- 関連する既存コードを提供したか?
- 期待する出力形式を指定したか?
- タスクが大きすぎないか?分割すべきか?
実践的なテンプレート
汎用テンプレート
【背景】
[プロジェクトの目的、現在の状況]
【使用技術】
[言語、フレームワーク、バージョン]
【今回の依頼】
[具体的に何をしてほしいか]
【制約・要件】
- [制約1]
- [制約2]
【関連コード】
[必要に応じて既存コードを添付]
【期待する出力】
[形式、内容の指定]
注意点
- プロンプトは万能ではない:どんなに良いプロンプトでも、AI出力は検証が必要
- ツールによって異なる:Claude、ChatGPT、Copilot等で最適なプロンプトは異なる場合がある
- 試行錯誤:完璧なプロンプトは一度で作れない。結果を見て改善する
参考文献
- Anthropic Prompt Engineering Guide
- MIT Technology Review "From vibe coding to context engineering" (Nov 2025)
- OpenAI Best Practices for Prompt Engineering