「AIにうまく指示できない」と悩んでいませんか?
現役WEBエンジニアとして、AIツールを活用しています。
この記事では、開発者向けプロンプトエンジニアリングを解説します。
目次
プロンプトの基本
良いプロンプトの要素
| 要素 | 説明 |
|---|---|
| 明確さ | 曖昧さを排除 |
| 具体性 | 詳細な条件指定 |
| 文脈 | 背景情報の提供 |
| 例示 | 期待する出力例 |
基本テクニック
役割設定
あなたは経験豊富なTypeScriptエンジニアです。
以下のコードをレビューしてください。
出力形式指定
以下の形式で回答してください:
- 問題点:
- 改善案:
- コード例:
Few-shot Learning
入力: ["apple", "banana"]
出力: { items: ["apple", "banana"], count: 2 }
入力: ["cat"]
出力: { items: ["cat"], count: 1 }
入力: ["a", "b", "c"]
出力:
コーディング用プロンプト
コード生成
TypeScriptで以下の関数を作成してください:
関数名: validateEmail
入力: string
出力: boolean
要件:
- 正規表現でメール形式をチェック
- 空文字はfalse
- エラーハンドリング付き
コードレビュー
以下のコードをレビューしてください。
観点:
1. パフォーマンス
2. 可読性
3. セキュリティ
4. ベストプラクティス
[コードを貼り付け]
バグ修正
以下のコードでエラーが発生します。
エラー内容: [エラーメッセージ]
期待する動作: [説明]
実際の動作: [説明]
原因と修正方法を教えてください。
高度なテクニック
Chain of Thought
ステップバイステップで考えてください:
1. まず問題を分析
2. 解決策を列挙
3. 最適な方法を選択
4. 実装コードを提示
制約条件の明示
制約:
- ES2020以降の構文を使用
- 外部ライブラリ不使用
- 関数は50行以内
- JSDocコメント必須
GitHub Copilot活用
効果的なコメント
// ユーザーIDでユーザー情報を取得
// 存在しない場合はnullを返す
// エラー時は例外をスロー
async function getUserById(userId: string): Promise<User | null> {
// Copilotが補完
}
関数名で意図を伝える
// 良い例:意図が明確
function calculateTotalPriceWithTax(items, taxRate)
// 悪い例:意図が不明確
function calc(arr, rate)
ツール別のコツ
ChatGPT
- 長い会話で文脈を維持
- カスタム指示を活用
Claude
- 長文コンテキストに強い
- XMLタグで構造化
GitHub Copilot
- コメントで意図を伝える
- 良いコードで学習させる
まとめ
プロンプトエンジニアリングのポイント:
- 明確で具体的に指示
- 文脈と例を提供
- 出力形式を指定
- ツールの特性を理解
