プロンプトエンジニアリング基礎
AI開発の成否を決めるプロンプトの質
AIコーディングの成否は、プロンプトの質で決まります。
“The more vague your instructions, the more vague the results.”
曖昧な指示は曖昧な結果を生みます。逆に言えば、明確なプロンプトは明確な結果を生むのです。
悪いプロンプトと良いプロンプト
悪いプロンプト:
ログイン機能を作って
このプロンプトでは、AIは「何か動くもの」を作りますが、あなたが求めているものとは異なる可能性が高いです。
良いプロンプト:
React + TypeScriptでログインコンポーネントを作成してください。
要件:
- メールアドレスとパスワードの入力フィールド
- zodによるバリデーション(メール形式、パスワード8文字以上)
- ログインボタン押下時にonSubmitプロップを呼び出し
- ローディング状態の表示
- エラーメッセージの表示
技術要件:
- Tailwind CSSでスタイリング
- React Hook Formを使用
- アクセシビリティ対応(aria属性)
AI開発プロンプトの4つの原則
原則1: 具体性(Specificity)
曖昧さを排除し、具体的に指示します。
❌ 「APIを作って」
✅ 「Express.jsでREST APIエンドポイントを作成してください。
- エンドポイント: POST /api/users
- リクエストボディ: { email: string, password: string }
- レスポンス: 201 Created または 400 Bad Request」
原則2: コンテキスト(Context)
プロジェクトの背景情報を提供します。
以下のプロジェクト構造に従ってコンポーネントを作成してください:
プロジェクト: React + TypeScript + Tailwind CSS
状態管理: Zustand
コンポーネント設計: Atomic Design
ディレクトリ: src/components/molecules/
原則3: ロール設定(Role/Persona)
AIに役割を与えます。
あなたはセキュリティに精通したシニアバックエンドエンジニアです。
OWASP Top 10を意識しながら、以下のログイン機能をレビューしてください。
原則4: 制約条件(Constraints)
してはいけないことを明示します。
以下の制約に従ってください:
- any型を使用しない
- console.logを残さない
- 外部ライブラリを追加しない
- 100行以内に収める
構造化されたプロンプトテンプレート
効果的なプロンプトには構造があります。
## 役割設定
あなたは[専門分野]のシニアエンジニアです
## タスク
[具体的な要件を記述]
## 推奨される技術スタックと構成
- フレームワーク: [例: Next.js 14]
- 言語: [例: TypeScript]
- スタイリング: [例: Tailwind CSS]
## AIに伝えるべきコンテキスト情報
- プロジェクト構造: [既存のパターン]
- 関連ファイル: [参照すべきファイル]
## 制約条件
- [守るべきルール1]
- [守るべきルール2]
## 必須のセキュリティ要件
- [認証、バリデーションなど]
## 期待する出力
- [形式や詳細度]
AI開発でコンテキストが重要な理由
“Context engineering has emerged as an increasingly important part of working with LLMs.”
コンテキストを提供する方法:
1. プロジェクト情報:
このプロジェクトは、Eコマースサイトのバックエンドです。
- ユーザー認証はJWTベース
- データベースはPostgreSQL(Prisma ORM)
- すべてのエンドポイントは認証必須
2. 既存コードの参照:
既存のUserServiceクラスを参考にしてください:
[コードを貼り付け]
同じパターンでProductServiceを作成してください。
3. 設定ファイルの活用:
Claude Code → CLAUDE.md
Cursor → .cursorrules
理由を説明する(Why)
“Explaining why something matters helps AI models better understand your goals.”
理由なし:
パスワードは8文字以上にしてください
理由あり:
パスワードは8文字以上にしてください。
セキュリティポリシーで最低8文字が必須とされているためです。
また、数字と特殊文字を含めることで、ブルートフォース攻撃への耐性を高めます。
今日から実践できるアクション
ステップ1: テンプレートを用意
本章のテンプレートをコピーして、プロジェクトに PROMPT_TEMPLATE.md として保存してください。
ステップ2: 次のタスクで試す
次にAIにコードを依頼するとき、4つの原則(具体性、コンテキスト、ロール、制約)を意識してプロンプトを書いてください。
ステップ3: 結果を比較
曖昧なプロンプトと構造化されたプロンプトで、結果の違いを確認してください。
この事例から学ぶべき教訓と実践ポイント
-
プロンプトがすべてを決める
- 曖昧な指示 → 曖昧な結果
-
4つの原則を守る
- 具体性、コンテキスト、ロール、制約
-
構造化されたテンプレートを使う
- 毎回ゼロから書かない
-
理由を説明する
- Whyを伝えることで精度向上
まとめ:重要ポイントの振り返り
- 曖昧なプロンプト は曖昧な結果を生む
- 4つの原則: 具体性、コンテキスト、ロール、制約
- テンプレート を用意して効率化
- 理由(Why) を説明して精度向上
- 教訓:プロンプトの質が成果の質を決める