プロンプトエンジニアリングとは?エンジニアが知るべき基礎
プロンプトエンジニアリングはChatGPT・Claude・Gemini等のLLM(大規模言語モデル)から最大限の出力を引き出すための技術です。適切なプロンプトを設計することで、コードの品質向上・業務自動化・コンテンツ生成の効率化など、エンジニアの生産性を劇的に高められます。
プロンプトの基本構造
効果的なプロンプトは以下の要素で構成されます:
- Role(役割):AIに演じてほしい役割を指定
- Context(文脈):背景情報・制約条件を提供
- Task(タスク):具体的に何をしてほしいかを明示
- Format(形式):出力形式(JSON・マークダウン・箇条書き等)
- Examples(例):Few-shotプロンプトで期待する出力例を示す
コーディング支援のプロンプトテクニック
コードレビューの依頼
以下のPythonコードをシニアエンジニアの視点でコードレビューしてください。
【観点】
1. バグや潜在的な問題点
2. パフォーマンスの改善点
3. コードの可読性・保守性
4. セキュリティ上の懸念
5. Pythonicな書き方への改善提案
【コード】
def get_user_data(user_id):
conn = db.connect()
result = conn.execute(f"SELECT * FROM users WHERE id = {user_id}")
return result.fetchall()
テストコード生成
以下の関数に対してpytestのユニットテストを書いてください。
【要件】
- 正常系・異常系・エッジケースを網羅
- モック(unittest.mock)を適切に使用
- テストカバレッジ90%以上を目指す
- 各テストにdocstringで意図を説明
【テスト対象の関数】
def calculate_discount(price: float, user_type: str) -> float:
if user_type == "premium":
return price * 0.8
elif user_type == "standard":
return price * 0.9
return price
ドキュメント生成
以下のPython関数にGoogle Docstring形式のドキュメントを追加してください。
また、使用例(Examples セクション)も含めてください。
def merge_dicts(*dicts, overwrite=True):
result = {}
for d in dicts:
if overwrite:
result.update(d)
else:
for k, v in d.items():
if k not in result:
result[k] = v
return result
Chain-of-Thought(CoT)プロンプティング
複雑な問題は「ステップバイステップで考えてください」と指示するCoT(思考の連鎖)が効果的です。
以下のシステム設計の問題について、ステップバイステップで考えてください。
【問題】
月間アクティブユーザー100万人のSNSアプリのバックエンドを設計してください。
ピーク時は通常の3倍のトラフィックが発生します。
【要件】
- 可用性: 99.9%以上
- レスポンス: p95で200ms以内
- コスト効率を重視
まず要件を整理し、アーキテクチャの選択肢を比較した上で、
最適な設計を推奨してください。
Few-Shot プロンプティング
以下の例を参考に、同じフォーマットでAPIドキュメントを生成してください。
【例1】
エンドポイント: GET /api/users/{id}
説明: 指定されたIDのユーザー情報を取得します
パラメータ:
- id (path, required): ユーザーID (integer)
レスポンス:
- 200: ユーザーオブジェクト {id, name, email, created_at}
- 404: ユーザーが見つかりません
- 401: 認証エラー
【生成対象】
エンドポイント: POST /api/posts
機能: 新しいブログ記事を作成する
リクエストボディ: title(string), content(string), tags(array), published(boolean)
プロンプトのデバッグと改善サイクル
プロンプト改善の5ステップ
- Step 1: 初期プロンプトを実行して出力を確認
- Step 2: 期待通りでない箇所を特定(曖昧な部分・不足情報)
- Step 3: 制約・具体例を追加して再試行
- Step 4: 出力形式を明示的に指定(JSON・マークダウン等)
- Step 5: システムプロンプトでペルソナを設定して一貫性を確保
実務での活用シーン
| 活用シーン | プロンプト例 | 期待効果 |
|---|---|---|
| コードレビュー | バグ・セキュリティ・最適化の観点でレビュー | レビュー時間50%削減 |
| テスト生成 | 関数に対してユニットテストを自動生成 | テスト作成時間70%削減 |
| ドキュメント作成 | コードからREADME・API仕様書を生成 | ドキュメント時間60%削減 |
| エラーデバッグ | エラーメッセージと該当コードを渡して解決策を提案 | デバッグ時間40%削減 |
| 学習支援 | 「〇〇を初心者向けに例えで説明して」 | 技術理解の加速 |
まとめ
プロンプトエンジニアリングはエンジニアの必須スキルになりつつあります。Role・Context・Task・Format・Examplesの5要素を意識し、CoTやFew-Shotなどのテクニックを組み合わせることで、AIとの協働を最大化できます。日々のコーディング・レビュー・ドキュメント作成にAIを積極的に活用し、生産性を向上させましょう。