はじめに
AI開発の成否は、AIへの指示の出し方で決まります。同じAIを使っても、プロンプト(指示文)の質によって結果は大きく異なります。本コラムでは、効果的なプロンプトエンジニアリングの基本を解説します。
プロンプトの基本原則
原則1:具体的に指示する
抽象的な指示は抽象的な結果を生みます。可能な限り具体的に伝えましょう。
✗ 悪い例
「ユーザー管理機能を作って」
◯ 良い例
「以下の仕様でユーザー管理APIを実装してください:
- エンドポイント: POST /api/users
- リクエスト: { email, password }
- レスポンス: { user_id, email, created_at }
- パスワードは8文字以上必須
- 重複メールはエラー」
原則2:コンテキストを与える
AIは現在のプロジェクトの状況を知りません。必要な背景情報を提供しましょう。
【プロジェクト情報】
- Node.js + Express でバックエンド構築中
- データベースは SQLite を使用
- 認証は JWT トークン方式
【現在の状況】
- ユーザー認証機能は実装済み
- 次は学習記録機能を追加したい
【今回の依頼】
学習記録を保存するAPIを実装してください
原則3:制約条件を明示する
やってほしくないことも明確に伝えます。
【制約条件】
- 外部ライブラリの追加は禁止
- 既存のAPIClient.jsを必ず使用すること
- インラインイベントハンドラは使用しない
- 変数名はスネークケースで統一
実践テクニック
テクニック1:ロールを設定する
「あなたは経験豊富なバックエンドエンジニアです。
セキュリティを重視し、保守性の高いコードを書きます。」
テクニック2:出力形式を指定する
「以下の形式で回答してください:
## 実装方針
[ここに方針を記載]
## コード
[ここにコードを記載]
## テスト方法
[ここにテスト手順を記載]」
テクニック3:例示を活用する
「既存のユーザーAPIを参考にして、
同じパターンで商品APIを実装してください。
【参考:既存のユーザーAPI】
app.get('/api/users/:id', async (req, res) => {
const user = await db.get('SELECT * FROM users WHERE id = ?', [req.params.id]);
res.json({ success: true, data: user });
});」
よくある失敗パターン
失敗1:一度に多くを求める
✗ 「ユーザー管理、商品管理、注文管理、
決済機能を全部実装して」
◯ 「まずユーザー管理機能から実装しましょう。
最初にログイン機能を作ってください」
失敗2:前提条件を省略する
✗ 「エラーを直して」
◯ 「以下のエラーが発生しています:
[エラーメッセージ]
発生条件:ログイン後にダッシュボードを開いたとき
期待する動作:ユーザー情報が表示される
実際の動作:画面が真っ白になる」
失敗3:フィードバックなしで進める
✗ 次々と新しい機能を依頼し続ける
◯ 実装 → 確認 → フィードバック → 次の実装
というサイクルを回す
まとめ
効果的なプロンプトエンジニアリングのポイント:
- 具体的に:曖昧さを排除する
- コンテキストを:背景情報を提供する
- 制約を明示:やってほしくないことも伝える
- 段階的に:一度に多くを求めない
- フィードバック:結果を確認して改善する
プロンプトエンジニアリングは練習で上達します。日々の業務でAIを使いながら、効果的な指示の出し方を磨いていきましょう。
次回:「Claude Codeとは何か - AI開発ツールの実態」