- Authors

- Name
- Youngju Kim
- @fjvbn20031
- 1. プロンプトエンジニアリングはなぜ<ruby>重要<rp>(</rp><rt>じゅうよう</rt><rp>)</rp></ruby>なのか(2025)
- 2. <ruby>基礎<rp>(</rp><rt>きそ</rt><rp>)</rp></ruby>テクニック(1-10)
- テクニック1:Zero-shot Prompting
- テクニック2:Few-shot Prompting
- テクニック3:Role Prompting(<ruby>役割<rp>(</rp><rt>やくわり</rt><rp>)</rp></ruby><ruby>付与<rp>(</rp><rt>ふよ</rt><rp>)</rp></ruby>)
- テクニック4:System Prompt <ruby>設計<rp>(</rp><rt>せっけい</rt><rp>)</rp></ruby>
- テクニック5:Instruction Formatting(<ruby>指示<rp>(</rp><rt>しじ</rt><rp>)</rp></ruby>のフォーマット<ruby>化<rp>(</rp><rt>か</rt><rp>)</rp></ruby>)
- テクニック6:Output Format Specification(<ruby>出力<rp>(</rp><rt>しゅつりょく</rt><rp>)</rp></ruby><ruby>形式<rp>(</rp><rt>けいしき</rt><rp>)</rp></ruby><ruby>指定<rp>(</rp><rt>してい</rt><rp>)</rp></ruby>)
- テクニック7:Delimiter Usage(<ruby>区切<rp>(</rp><rt>くぎ</rt><rp>)</rp></ruby>り<ruby>文字<rp>(</rp><rt>もじ</rt><rp>)</rp></ruby>の<ruby>活用<rp>(</rp><rt>かつよう</rt><rp>)</rp></ruby>)
- テクニック8:Constraint Setting(<ruby>制約<rp>(</rp><rt>せいやく</rt><rp>)</rp></ruby><ruby>条件<rp>(</rp><rt>じょうけん</rt><rp>)</rp></ruby>の<ruby>設定<rp>(</rp><rt>せってい</rt><rp>)</rp></ruby>)
- テクニック9:TemperatureとTop-pチューニング
- テクニック10:Token Budgeting(トークン<ruby>予算<rp>(</rp><rt>よさん</rt><rp>)</rp></ruby><ruby>管理<rp>(</rp><rt>かんり</rt><rp>)</rp></ruby>)
- 3. <ruby>推論<rp>(</rp><rt>すいろん</rt><rp>)</rp></ruby><ruby>強化<rp>(</rp><rt>きょうか</rt><rp>)</rp></ruby>テクニック(11-20)
- テクニック11:Chain-of-Thought(CoT)
- テクニック12:Zero-shot CoT
- テクニック13:Tree-of-Thought(ToT)
- テクニック14:Self-Consistency
- テクニック15:ReAct(Reasoning + Acting)
- テクニック16:Reflection(<ruby>自己<rp>(</rp><rt>じこ</rt><rp>)</rp></ruby><ruby>反省<rp>(</rp><rt>はんせい</rt><rp>)</rp></ruby>)
- テクニック17:Decomposition(<ruby>分解<rp>(</rp><rt>ぶんかい</rt><rp>)</rp></ruby>)
- テクニック18:Analogical Reasoning(<ruby>類推<rp>(</rp><rt>るいすい</rt><rp>)</rp></ruby><ruby>推論<rp>(</rp><rt>すいろん</rt><rp>)</rp></ruby>)
- テクニック19:Meta-prompting(メタプロンプティング)
- テクニック20:Constitutional AI Prompting
- 4. コーディング<ruby>特化<rp>(</rp><rt>とっか</rt><rp>)</rp></ruby>テクニック(21-30)
- テクニック21:Context-aware Code Generation(コンテキスト<ruby>認識<rp>(</rp><rt>にんしき</rt><rp>)</rp></ruby>コード<ruby>生成<rp>(</rp><rt>せいせい</rt><rp>)</rp></ruby>)
- テクニック22:Rubber Duck Debugging Prompt
- テクニック23:Code Review Prompt Template
- テクニック24:Test Generation from Implementation
- テクニック26:Architecture Design Prompts
- テクニック27:Documentation Generation
- テクニック28:Error Explanation and Fix
- テクニック29:Performance Optimization Prompts
- テクニック30:Security Audit Prompts
- 5. モデル<ruby>別<rp>(</rp><rt>べつ</rt><rp>)</rp></ruby><ruby>最適化<rp>(</rp><rt>さいてきか</rt><rp>)</rp></ruby>
- 6. プロンプトアンチパターン
- アンチパターン1:<ruby>曖昧<rp>(</rp><rt>あいまい</rt><rp>)</rp></ruby>な<ruby>指示<rp>(</rp><rt>しじ</rt><rp>)</rp></ruby>
- アンチパターン2:<ruby>情報<rp>(</rp><rt>じょうほう</rt><rp>)</rp></ruby><ruby>過多<rp>(</rp><rt>かた</rt><rp>)</rp></ruby>
- アンチパターン3:<ruby>矛盾<rp>(</rp><rt>むじゅん</rt><rp>)</rp></ruby>する<ruby>制約<rp>(</rp><rt>せいやく</rt><rp>)</rp></ruby><ruby>条件<rp>(</rp><rt>じょうけん</rt><rp>)</rp></ruby>
- アンチパターン4:ハルシネーション<ruby>誘発<rp>(</rp><rt>ゆうはつ</rt><rp>)</rp></ruby>プロンプト
- アンチパターン5:<ruby>単純<rp>(</rp><rt>たんじゅん</rt><rp>)</rp></ruby>タスクへの<ruby>過剰<rp>(</rp><rt>かじょう</rt><rp>)</rp></ruby>プロンプト
- 7. プロンプトチェイニングとエージェント
- 8. <ruby>実践<rp>(</rp><rt>じっせん</rt><rp>)</rp></ruby>テンプレート10<ruby>選<rp>(</rp><rt>せん</rt><rp>)</rp></ruby>
- テンプレート1:<ruby>新<rp>(</rp><rt>あたら</rt><rp>)</rp></ruby>しい<ruby>機能<rp>(</rp><rt>きのう</rt><rp>)</rp></ruby>の<ruby>実装<rp>(</rp><rt>じっそう</rt><rp>)</rp></ruby>
- テンプレート2:バグ<ruby>修正<rp>(</rp><rt>しゅうせい</rt><rp>)</rp></ruby>リクエスト
- テンプレート3:コードレビューリクエスト
- テンプレート4:アーキテクチャ<ruby>設計<rp>(</rp><rt>せっけい</rt><rp>)</rp></ruby>
- テンプレート5:データベーススキーマ<ruby>設計<rp>(</rp><rt>せっけい</rt><rp>)</rp></ruby>
- テンプレート6:API<ruby>設計<rp>(</rp><rt>せっけい</rt><rp>)</rp></ruby>
- テンプレート7:CI/CDパイプライン
- テンプレート8:パフォーマンス<ruby>最適化<rp>(</rp><rt>さいてきか</rt><rp>)</rp></ruby>
- テンプレート9:マイグレーションガイド
- テンプレート10:<ruby>障害<rp>(</rp><rt>しょうがい</rt><rp>)</rp></ruby><ruby>対応<rp>(</rp><rt>たいおう</rt><rp>)</rp></ruby>
- クイズ
- <ruby>参考<rp>(</rp><rt>さんこう</rt><rp>)</rp></ruby><ruby>資料<rp>(</rp><rt>しりょう</rt><rp>)</rp></ruby>
1. プロンプトエンジニアリングはなぜ重要なのか(2025)
AI時代のコアスキル
2025年、AIは開発者の日常になりました。GitHub Copilot、Claude、GPT-4、Geminiを使わない開発者を見つけるのが難しい時代です。Stack Overflowの2025年開発者アンケートによると、**84%の開発者がAIコーディングツールを使用**しています。
しかし、同じツールを使っても結果は千差万別です。ある開発者はAIで生産性を3倍に高め、ある開発者は「AIは役に立たない」と不満を言います。違いは何でしょうか?**プロンプトの品質**です。
プロンプトエンジニアの価値
シリコンバレーでSenior Prompt Engineerの年収は**30万ドル以上**に達します。Anthropic、OpenAI、Googleのような企業ではプロンプトエンジニアリングを専門職として採用しています。
プロンプトの品質による出力の差は実際に**10倍以上**にもなります。以下の例を比較してみてください。
悪いプロンプト:
APIを作って
良いプロンプト:
Node.js Expressでユーザー認証REST APIを作成してください。
要件:
1. POST /auth/register - メールとパスワードで会員登録
2. POST /auth/login - JWTトークン発行
3. GET /auth/me - 現在のユーザー情報(認証必要)
技術スタック:
- Express 4.x、TypeScript
- bcryptでパスワードハッシュ化
- jsonwebtokenでJWT管理
- Zodで入力値バリデーション
出力形式:各ファイルごとにコードブロックで分けて表示してください。
2番目のプロンプトの方がはるかに具体的で、AIが正確に望む結果を生成できます。
このガイドの対象
この記事は以下のような開発者のために書かれました:
- AIコーディングツールを初めて使う開発者
- すでに使っているが、もっと効果的に使いたい開発者
- プロンプトエンジニアリングを体系的に学びたい開発者
- Claude、GPT-4、Geminiそれぞれの最適な活用法を知りたい開発者
2. 基礎テクニック(1-10)
テクニック1:Zero-shot Prompting
Zero-shotは**例を示さずに直接指示だけで**AIにタスクを実行させる最も基本的なテクニックです。日常的なAI使用のほとんどがこの方式です。
核心原則: 指示は具体的で明確でなければなりません。
次のPython関数の時間計算量を分析してください:
def find_duplicates(arr):
seen = set()
duplicates = []
for item in arr:
if item in seen:
duplicates.append(item)
else:
seen.add(item)
return duplicates
Zero-shotが適している場合:
-
単純
なコード説明
、翻訳
、要約
- よく知られたパターンのコード生成
-
文法
エラーの修正
不向きな場合:
-
複雑
なビジネスロジックの実装
-
特定
のコーディングスタイルに従
う必要
がある場合
- ドメイン特化タスク
テクニック2:Few-shot Prompting
Few-shotはいくつかの例をプロンプトに含めて、AIに望むパターンを学習させるテクニックです。Zero-shotより精度が大きく向上します。
以下の例のようにコミットメッセージを書いてください:
例1:
変更:ログインページにソーシャルログインボタンを追加
コミット:feat(auth): add social login buttons to login page
例2:
変更:ユーザーリストAPIのレスポンス速度を改善
コミット:perf(api): optimize user list query with pagination
例3:
変更:決済金額の計算エラーを修正
コミット:fix(payment): correct total amount calculation logic
次の変更に対するコミットメッセージを書いてください:
変更:ダークモードでチャートの色が見えない問題を解決
Few-shotのコツ:
-
例
は3-5個
が最適
(多
すぎるとトークンの無駄
) -
多様
なケースをカバーする例
を選択
-
一貫
したフォーマットを維持
テクニック3:Role Prompting(役割付与)
AIに特定の役割を与えると、その専門性に合った回答を生成します。
あなたは10年の経験を持つシニアバックエンドエンジニアです。
大規模トラフィック処理、マイクロサービスアーキテクチャ、
データベース最適化に深い専門知識を持っています。
次のコードをレビューしてください。本番環境で問題になりうる点を見つけてください。
セキュリティ、パフォーマンス、エラーハンドリングの観点から分析してください。
効果的な役割設定の公式:
あなたは[年数]年の経験を持つ[役職]です。
[専門分野1]、[専門分野2]、[専門分野3]に深い専門知識を持っています。
[会社タイプ]環境での経験が豊富です。
テクニック4:System Prompt 設計
System promptはAIの基本動作を定義します。APIを通じてAIを活用する際に特に重要です。
[System]
あなたはTypeScriptコードレビューの専門家です。
ルール:
1. 型安全性を最優先で評価します
2. any型の使用を見つけたら必ず指摘します
3. 回答は日本語で行います
4. 各指摘事項に修正コードを含めます
5. 深刻度をCritical、Warning、Infoに分類します
出力形式:
## レビュー結果
### Critical
- [ファイル名:行番号] 説明
### Warning
- [ファイル名:行番号] 説明
### Info
- [ファイル名:行番号] 説明
テクニック5:Instruction Formatting(指示のフォーマット化)
プロンプトの構造とフォーマットが回答の品質を大きく左右します。
非構造化プロンプト(悪い例):
Reactコンポーネント作ってユーザープロフィール表示するやつ名前メールプロフィール写真あってレスポンシブでダークモード対応して
構造化プロンプト(良い例):
## リクエスト
Reactユーザープロフィールコンポーネントを作成してください。
## 必須要素
1. ユーザー名
2. メールアドレス
3. プロフィール写真(円形サムネイル)
## 技術要件
- React 18 + TypeScript
- Tailwind CSS使用
- レスポンシブデザイン(モバイル/デスクトップ)
- ダークモード対応(CSS変数またはTailwind dark:)
## 追加事項
- Propsインターフェースを別途定義してください
- ローディング状態用のスケルトンUIも含めてください
テクニック6:Output Format Specification(出力形式指定)
AIの出力形式を明示すると、後処理が容易になり一貫した結果が得られます。
JSON出力リクエスト:
次のログメッセージを分析し、JSON形式で結果を返してください。
ログ:
ERROR 2025-03-15 14:32:01 [PaymentService] Failed to process payment for order #12345.
Reason: Insufficient funds. User: user@example.com
出力JSONスキーマ:
{
"timestamp": "ISO 8601形式",
"level": "ログレベル",
"service": "サービス名",
"message": "コアメッセージ",
"context": {
"orderId": "注文ID",
"reason": "失敗理由",
"user": "ユーザー識別子"
}
}
様々な出力形式:
- JSON:APIレスポンスパース、データ変換
- Markdownテーブル:比較分析、機能整理
- XML:構造化ドキュメント、設定ファイル
- YAML:設定、Kubernetesマニフェスト
- Mermaidダイアグラム:アーキテクチャ、シーケンスダイアグラム
テクニック7:Delimiter Usage(区切り文字の活用)
区切
り
文字
を
使
うとプロンプトの
各
部分
を
明確
に
分離
できます。
XMLタグによる区切り(Claudeで特に効果的):
<context>
このプロジェクトはNext.js 14 App Routerベースのeコマースプラットフォームです。
データベースはPostgreSQL、ORMはPrismaを使用しています。
</context>
<task>
商品検索APIを実装してください。
全文検索(full-text search)をサポートする必要があります。
</task>
<constraints>
- 検索レスポンス時間200ms以内
- SQLインジェクション防止
- ページネーション必須(カーソルベース)
</constraints>
<output_format>
1. Prismaスキーマの変更点
2. API Routeコード
3. 検索クエリ最適化の説明
</output_format>
テクニック8:Constraint Setting(制約条件の設定)
明確
な
制約
はAIが
範囲
を
逸脱
するのを
防
ぎます。
以下のルールを必ず守ってください:
必ず行うこと:
- TypeScript strictモードを使用
- すべての関数にJSDocコメントを記述
- エラーハンドリングにカスタムErrorクラスを使用
- 環境変数はprocess.envの直接アクセスではなくconfigモジュール経由
絶対に行わないこと:
- any型の使用禁止
- console.logの使用禁止(loggerライブラリを使用)
- 同期ファイルI/O禁止
- ハードコードされた定数禁止
テクニック9:TemperatureとTop-pチューニング
Temperatureとtop_pは出力のランダム性を制御する重要なパラメータです。
Temperatureガイド:
| Temperature | 用途 | 例 |
|---|---|---|
| 0.0 | 決定的で一貫した出力 | コード生成、数学問題、データパース |
| 0.3 | 若干の変形許容 | コードレビュー、技術ドキュメント |
| 0.7 | バランスの取れた創造性 | ブログ執筆、ブレインストーミング |
| 1.0 | 最大の創造性 | ストーリー執筆、アイデア発散 |
開発者への推奨設定:
- コード生成:temperature 0.0-0.2
- コードレビュー:temperature 0.1-0.3
- ドキュメント作成:temperature 0.3-0.5
- アイデア出し:temperature 0.7-0.9
テクニック10:Token Budgeting(トークン予算管理)
トークンはコストであり、コンテキストウィンドウの限界です。効率的なトークン管理が必要です。
トークン節約のコツ:
# 悪い例(不必要に長いプロンプト)
こんにちは。今Pythonプロジェクトをやっているのですが、
もしお時間があれば下のコードを見ていただけますか?
本当に感謝します。コードは次の通りです...
# 良い例(簡潔なプロンプト)
次のPythonコードを最適化してください。目標は時間計算量O(n)への改善です。
モデル別コンテキストウィンドウ(2025年基準):
- Claude 3.5 Sonnet:200Kトークン
- GPT-4 Turbo:128Kトークン
- Gemini 1.5 Pro:2Mトークン
3. 推論強化テクニック(11-20)
テクニック11:Chain-of-Thought(CoT)
Chain-of-Thoughtは、AIにステップバイステップで推論させるテクニックです。複雑な問題での精度を大きく向上させます。
基本的なCoTプロンプト:
次のマイクロサービスアーキテクチャのボトルネックを分析してください。
ステップバイステップで考えましょう。
アーキテクチャ:
- API Gateway -> User Service -> PostgreSQL
- API Gateway -> Order Service -> MongoDB
- Order Service -> Payment Service (HTTP)
- Payment Service -> External Payment API
- Order Service -> Notification Service (Kafka)
各ステップで:
1. そのサービスの潜在的なボトルネック要因を列挙してください
2. 毎秒10,000リクエストの負荷でどうなるか分析してください
3. 改善策を提案してください
CoTが効果的な場面:
- アルゴリズム問題の解決
- システムデザイン分析
- デバッグ(エラー原因の追跡)
- パフォーマンス最適化分析
テクニック12:Zero-shot CoT
「ステップバイステップで考えましょう」という簡単なフレーズを追加するだけで推論の品質が向上します。
このSQLクエリが遅い理由を分析し、最適化してください。
ステップバイステップで考えましょう。
SELECT u.name, COUNT(o.id) as order_count, SUM(o.total) as total_spent
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE o.created_at >= '2025-01-01'
GROUP BY u.name
HAVING total_spent > 1000
ORDER BY total_spent DESC;
テクニック13:Tree-of-Thought(ToT)
ToTは**複数の推論経路を探索**し、最適な解決策を選択する高度なテクニックです。
次のシステムのキャッシュ戦略を設計してください。
システム:1日1000万閲覧のニュースフィードサービス
3つの異なるアプローチをそれぞれ探索してください:
アプローチA:Redisベースの中央集中型キャッシュ
- メリットとデメリットを分析
- 予想パフォーマンス数値を提示
アプローチB:CDN + エッジキャッシング
- メリットとデメリットを分析
- 予想パフォーマンス数値を提示
アプローチC:ハイブリッド(ローカルキャッシュ + 分散キャッシュ + CDN)
- メリットとデメリットを分析
- 予想パフォーマンス数値を提示
最終的に各アプローチを比較し、このシステムに最適な戦略を選んでください。
選択理由をコスト、パフォーマンス、複雑さの観点から説明してください。
テクニック14:Self-Consistency
同
じ
質問
に
対
して**
複数回
推論
**し、
最
も
一貫
した
回答
を
選択
するテクニックです。
次のコードのバグを3つの異なる視点から分析してください。
コード:
async function processOrders(orders) {
const results = [];
for (const order of orders) {
const result = await processPayment(order);
results.push(result);
}
return results;
}
視点1(パフォーマンスエンジニア):パフォーマンスの問題を見つけてください
視点2(セキュリティエンジニア):セキュリティの脆弱性を見つけてください
視点3(SREエンジニア):信頼性の問題を見つけてください
各視点の分析結果を総合して最終的な改善案を提示してください。
テクニック15:ReAct(Reasoning + Acting)
ReActは**推論と行動を交互に行う**エージェントプロンプトパターンです。
次のプロセスに従ってバグを解決してください。
問題:本番環境で断続的に500エラーが発生
各ステップを「思考 -> 行動 -> 観察」形式で進めてください:
思考1:まず何の情報を確認すべきか?
行動1:エラーログを分析する
観察1:(分析結果を記録)
思考2:ログからどんなパターンが見えるか?
行動2:(次の行動を決定)
観察2:(観察結果を記録)
根本原因を見つけるまでこのプロセスを繰り返してください。
最後に修正コードと再発防止策を提示してください。
テクニック16:Reflection(自己反省)
AIに自分の回答を**批判的に検討**させます。
次のタスクを実行してください:
ステップ1:以下の要件に合う認証ミドルウェアを実装してください
ステップ2:実装したコードを自分でレビューしてください — セキュリティ脆弱性、エッジケース、パフォーマンス問題を見つけてください
ステップ3:レビューで見つけた問題を修正した最終バージョンを提示してください
要件:
- JWTベースの認証
- トークン有効期限処理
- ロールベースのアクセス制御
- レートリミッティング統合
テクニック17:Decomposition(分解)
複雑
な
問題
を**
小
さなサブ
問題
に
分解
**して
解決
します。
次の機能をサブタスクに分解し、それぞれを実装してください。
機能:リアルタイムチャットシステム(WebSocketベース)
分解:
1. まず機能全体を独立したモジュールに分けてください
2. 各モジュールのインターフェース(入出力)を定義してください
3. 依存関係のないモジュールから順に実装してください
4. モジュール間の統合方法を説明してください
5. 全体の動作フローをシーケンスダイアグラムで示してください
テクニック18:Analogical Reasoning(類推推論)
馴染
みのある
概念
に
例
えて
複雑
なシステムを
説明
させます。
Kubernetesのコア概念をレストラン運営に例えて説明してください。
各概念について:
1. Kubernetes用語
2. レストランの例え
3. 実際の動作説明
4. コード例(YAML)
扱う概念:Pod、Deployment、Service、Ingress、ConfigMap、Secret、PVC
テクニック19:Meta-prompting(メタプロンプティング)
プロンプトを生成するプロンプトです。プロンプト自体を最適化する際に使用します。
AIコードレビュー自動化システムを構築しています。
以下の要件を満たす最適なシステムプロンプトを作成してください:
1. 目的:PRコードレビューの自動化
2. 入力:Git diff形式のコード変更
3. 出力:構造化されたレビューコメント
4. レビュー項目:セキュリティ、パフォーマンス、可読性、テストカバレッジ
5. トーン:建設的で教育的
6. 言語:日本語
プロンプトには以下を含めてください:
- 役割定義
- 詳細なレビュー基準
- 出力形式テンプレート
- 例外処理ルール
- Few-shotの例1つ
テクニック20:Constitutional AI Prompting
AIに**憲法(ルール)**を提示し、そのルールに従って行動させます。
以下の原則を必ず遵守してコードを生成してください:
原則1 - セキュリティ:OWASP Top 10の脆弱性を絶対に含めない
原則2 - アクセシビリティ:WCAG 2.1 AA基準を満たす
原則3 - パフォーマンス:Core Web Vitals基準を満たす
原則4 - 保守性:SOLID原則に従う
原則5 - テスト:各関数に最低2つのテストケースを作成する
各コードブロックの後に、どの原則を満たしているかチェックリストで示してください。
4. コーディング特化テクニック(21-30)
テクニック21:Context-aware Code Generation(コンテキスト認識コード生成)
既存
のコードベースのスタイルとパターンをAIに
伝
えると、
一貫
したコードを
生成
します。
以下はプロジェクトの既存サービスコードパターンです:
<existing_pattern>
// services/user.service.ts
export class UserService {
constructor(
private readonly userRepo: UserRepository,
private readonly logger: Logger,
) {}
async findById(id: string): Promise<Result<User, ServiceError>> {
try {
const user = await this.userRepo.findById(id);
if (!user) {
return err(new NotFoundError('User', id));
}
return ok(user);
} catch (error) {
this.logger.error('Failed to find user', { id, error });
return err(new InternalError('Failed to find user'));
}
}
}
</existing_pattern>
このパターンと同じスタイルでProductServiceを作成してください。
必要なメソッド:findById、findAll(ページネーション付き)、create、update、delete
テクニック22:Rubber Duck Debugging Prompt
AIをラバーダックデバッグパートナーとして活用します。
私のデバッグパートナーとして、次の問題を一緒に解決してください。
症状:ユーザーがログイン後3分で自動的にログアウトされる
わかっていること:
- JWTトークンの有効期限は1時間に設定
- ローカル環境では再現されない
- 本番環境でのみ発生
- 3月14日のデプロイ以降から発生
試したこと:
- トークン有効期限の確認 -> 正常
- ブラウザCookieの確認 -> トークンが消えている
質問形式で私をガイドしてください:
1. まだ確認していない可能性のある原因は?
2. 各原因を検証するための具体的なステップは?
3. 最も可能性が高い原因は何だと推論しますか?
テクニック23:Code Review Prompt Template
体系的
なコードレビューのためのテンプレートです。
以下のコードを次のチェックリストに従ってレビューしてください。
レビューチェックリスト:
1. 正確性:意図通りに動作するか?
2. セキュリティ:SQLインジェクション、XSS、CSRFなどの脆弱性はないか?
3. パフォーマンス:不必要な計算、N+1クエリ、メモリリークはないか?
4. エラーハンドリング:すべての失敗パスが適切に処理されているか?
5. 可読性:変数名、関数名が意味をよく伝えているか?
6. テスタビリティ:テストしやすい構造か?
7. 拡張性:要件変更に柔軟か?
出力形式:
各項目ごとにPass/Fail/Warningを表示し、
FailまたはWarningの場合は具体的な改善コードを提示してください。
深刻度:Critical > Major > Minor > Suggestion
テクニック24:Test Generation from Implementation
実装
コードを
基
にテストを
自動
生成
します。
次の関数に対する包括的なテストを作成してください。
関数:
```typescript
export function calculateDiscount(
originalPrice: number,
membershipTier: 'basic' | 'silver' | 'gold' | 'platinum',
couponCode?: string,
): { finalPrice: number; discountRate: number; appliedDiscounts: string[] } {
// ... 実装コード
}
テスト要件:
- テストフレームワーク:Vitest
- 各メンバーシップティアごとの割引テスト
- クーポンコード適用テスト
- 境界値テスト(価格0、負数、非常に大きい値)
- エラーケース(無効なクーポン、無効なティア)
- 複合割引(メンバーシップ + クーポン)テスト
- describe/itパターンで構造化
- 各テストにわかりやすい説明
### テクニック25:Refactoring with Specific Goals
リファクタリングの<ruby>目標<rp>(</rp><rt>もくひょう</rt><rp>)</rp></ruby>を<ruby>具体的<rp>(</rp><rt>ぐたいてき</rt><rp>)</rp></ruby>に<ruby>提示<rp>(</rp><rt>ていじ</rt><rp>)</rp></ruby>します。
```text
次のコードをリファクタリングしてください。
リファクタリング目標:
1. 関数分離:1つの関数は1つの責務のみ
2. マジックナンバー除去:意味のある定数に置き換え
3. Early returnパターン適用:ネストされたif文を除去
4. 型安全性の強化:ユニオン型と型ガードを活用
リファクタリング過程:
- 変更前と変更後を並べて表示してください
- 各変更の理由を説明してください
- 動作が変更されていないことを説明してください
テクニック26:Architecture Design Prompts
AIと一緒にシステムアーキテクチャを設計します。
以下の要件に合うシステムアーキテクチャを設計してください。
サービス:リアルタイムオークションプラットフォーム
- 同時ユーザー:最大10万人
- リアルタイム入札更新(レイテンシ100ms以内)
- 決済処理(決済ゲートウェイ連携)
- 画像アップロード(商品あたり最大10枚)
成果物:
1. ハイレベルアーキテクチャ図(Mermaid)
2. 各コンポーネントの技術スタック選定と理由
3. データフロー図
4. スケーラビリティ戦略(水平スケーリングポイント)
5. 障害対応戦略(SPOF特定と代替案)
6. 予想月額コスト(AWSベース)
テクニック27:Documentation Generation
コードからドキュメントを自動生成します。
以下のAPIエンドポイントコードを基にAPIドキュメントを作成してください。
形式:OpenAPI 3.0 YAML
含める内容:
1. エンドポイント説明
2. リクエストパラメータ(path、query、body)
3. レスポンススキーマ(成功/失敗の両方)
4. 認証方式
5. レートリミット情報
6. 使用例(curl)
7. エラーコード表
テクニック28:Error Explanation and Fix
エラーメッセージを分析し修正方法を提示します。
次のエラーを分析して修正してください。
エラーメッセージ:
TypeError: Cannot read properties of undefined (reading 'map')
at UserList (UserList.tsx:15:23)
at renderWithHooks (react-dom.development.js:16305:18)
コンテキスト:
- React 18 + TypeScriptプロジェクト
- APIからユーザーリストを取得してレンダリングするコンポーネント
- 断続的に発生(ネットワークが遅い時)
以下を含めてください:
1. エラー原因分析(なぜundefinedなのか)
2. 修正コード
3. 同じパターンのエラーを防ぐための一般的なガイドライン
4. 型でこのエラーをコンパイル時にキャッチする方法
テクニック29:Performance Optimization Prompts
パフォーマンス最適化を体系的に実行します。
次のAPIエンドポイントのパフォーマンスを最適化してください。
現在の状態:
- 平均レスポンスタイム:2.5秒
- P99レスポンスタイム:8秒
- 毎秒リクエスト数:500 RPS
- 目標:平均200ms以内、P99 500ms以内
分析順序:
1. 現在のコードでパフォーマンスのボトルネックを特定してください
2. 各ボトルネックに対する最適化方法を提案してください
3. 予想改善効果を数値で表示してください
4. 最適化されたコードを提示してください
5. 最適化前後を比較するベンチマークコードを作成してください
テクニック30:Security Audit Prompts
AIを活用してセキュリティ監査を実施します。
次のコードに対してセキュリティ監査を実施してください。
監査項目:
1. OWASP Top 10(2021)基準の脆弱性
2. 認証・認可の脆弱性
3. データ露出リスク
4. 依存関係の脆弱性の可能性
5. 設定ミス
出力形式:
各発見事項について:
- 脆弱性タイプ:(例:A01 Broken Access Control)
- 深刻度:Critical / High / Medium / Low
- 場所:ファイル名と行番号
- 説明:脆弱性がどのように悪用される可能性があるか
- 修正コード:安全なコード例
- 参考:CWE番号または関連ドキュメントリンク
5. モデル別最適化
Claude、GPT-4、Gemini 比較
| テクニック | Claude | GPT-4 | Gemini |
|---|---|---|---|
| XMLタグ区切り | 非常に効果的 | 普通 | 普通 |
| JSONモード | 対応 | ネイティブ対応 | 対応 |
| システムプロンプト | 非常に重要 | 重要 | 重要 |
| ロングコンテキスト | 200K | 128K | 2M |
| マルチモーダル | 画像分析 | 画像+DALL-E | 画像+動画+音声 |
| コード実行 | なし | Code Interpreter | コード実行対応 |
| 関数呼び出し | Tool Use | Function Calling | Function Calling |
Claude最適化のコツ
Claudeで最高の結果を得るためのコツです:
1. XMLタグを積極的に活用してください
<context>プロジェクトの背景と技術スタック</context>
<task>具体的なタスク内容</task>
<constraints>制約条件</constraints>
<examples>参考例</examples>
<output_format>望む出力形式</output_format>
2. 「ステップバイステップで考えてください」を明示的にリクエストしてください
この問題をステップバイステップで分析してください。
各ステップの推論過程を見せてください。
3. システムプロンプトを十分に活用してください
Claudeはシステムプロンプトに特に強く反応します。役割、ルール、フォーマットをシステムプロンプトに入れると一貫した結果が得られます。
GPT-4最適化のコツ
1. JSONモードを活用してください
レスポンスをJSON形式でお願いします。
他のテキストなしで純粋なJSONのみを返してください。
2. Function Callingを活用してください
GPT-4のネイティブFunction Callingは構造化された出力に非常に効果的です。API統合の際に特に有用です。
3. Code Interpreterを活用してください
データ分析、可視化、複雑な計算が必要な場合、Code Interpreterを活用すると正確な結果が得られます。
Gemini最適化のコツ
1. ロングコンテキストを活用してください
Geminiの2Mトークンコンテキストウィンドウは、コードベース全体を一度に分析する際に有利です。
以下はプロジェクト全体のソースコードです。
(全コードを添付)
このコードベース全体を分析してアーキテクチャの改善点を提案してください。
2. マルチモーダル入力を活用してください
スクリーンショット、ホワイトボードの写真、ダイアグラム画像を入力として活用できます。
3. Groundingを活用してください
Google検索ベースのgroundingで最新情報を活用した回答を得ることができます。
6. プロンプトアンチパターン
アンチパターン1:曖昧な指示
# 悪い例
コードを直して
# 良い例
次のPython関数でN+1クエリ問題を解決してください。
SQLAlchemyのjoinedloadを使って最適化してください。
アンチパターン2:情報過多
# 悪い例
(10,000行のコードを全て貼り付け)
このコード全部レビューして
# 良い例
以下は決済処理モジュールのコアロジックです(関連部分のみ抜粋)。
金額計算部分で浮動小数点エラーが疑われます。
その部分を重点的にレビューしてください。
アンチパターン3:矛盾する制約条件
# 悪い例
速く動いてメモリも最小限にして
コードも最大限読みやすくして
全エッジケース処理するけどコードは20行以内で
# 良い例
優先順位:
1. (必須)メモリ使用量100MB以内
2. (重要)レスポンスタイム200ms以内
3. (推奨)コードの可読性(可能な範囲内で)
アンチパターン4:ハルシネーション誘発プロンプト
# 悪い例
React 25の新しいServer Actions APIの使い方を教えて
(存在しないバージョン/機能について質問)
# 良い例
Reactの最新Server Actions APIについて知っている範囲で説明してください。
確実でない情報はそう伝えてください。
アンチパターン5:単純タスクへの過剰プロンプト
# 悪い例(単純な変数名変更に対する長文プロンプト)
あなたは20年の経験を持つソフトウェアアーキテクトです。
クリーンコードの原則に従い、次の変数名を改善してください。
変数名:x
コンテキスト:ユーザーの年齢を格納する変数です。
# 良い例
変数名xを意味のある名前に変えてください。(ユーザー年齢の格納用)
7. プロンプトチェイニングとエージェント
プロンプトチェイニングの概要
プロンプトチェイニングは**複数のプロンプトを順次に接続**して複雑なタスクを実行するテクニックです。1つのプロンプトの出力が次のプロンプトの入力になります。
例:コードリファクタリングチェイン
チェイン1:分析
「次のコードのコードスメルを列挙してください。JSON配列で出力してください。」
チェイン2:優先順位付け
「次のコードスメルリストを深刻度順にソートしてください。(入力:チェイン1の出力)」
チェイン3:修正
「最も深刻な3つのコードスメルを修正したコードを提示してください。(入力:チェイン2の出力)」
チェイン4:検証
「修正されたコードがオリジナルと同じように動作するか検証してください。(入力:チェイン3の出力)」
エージェントループ(Observe - Think - Act)
AIエージェントは**観察-思考-行動**ループを繰り返して複雑なタスクを実行します。
以下のエージェントループを使用してプロダクションインシデントを解決してください:
ループ:
1. OBSERVE:現在の状態を確認(ログ、メトリクス、アラート)
2. THINK:原因分析とアクションプランの策定
3. ACT:具体的な措置を実行
4. VERIFY:措置の結果を確認
インシデント:データベースコネクションプールの枯渇
各ループの反復を明示的に示してください。
VERIFYで問題が解決されるまでループを繰り返してください。
MCP(Model Context Protocol)統合
MCPを通じてAIを外部ツールと接続できます。
以下のツールを使用してコード品質チェックを実行してください:
使用可能なツール:
1. file_read:ファイル読み込み
2. file_write:ファイル書き込み
3. terminal:ターミナルコマンド実行
4. git:Gitコマンド実行
タスク順序:
1. git diffで変更されたファイルリストを確認
2. 各ファイルを読み込み
3. ESLintを実行
4. TypeScriptコンパイルチェック
5. テスト実行
6. 結果の総合レポートを生成
メモリとコンテキスト管理
長
い
会話
でコンテキストを
効率的
に
管理
する
方法
です。
前の会話の要約(コンテキスト圧縮):
プロジェクト:Next.js eコマース
完了:商品リストAPI、カートAPI
現在の作業:決済処理API
技術的決定:Stripe使用、Webhookで決済状態管理
上記のコンテキストに基づいて、決済処理APIの次のステップを進めてください。
8. 実践テンプレート10選
テンプレート1:新しい機能の実装
## 機能リクエスト
[機能名と簡単な説明]
## 背景
- なぜこの機能が必要か?
- どんな問題を解決するか?
## 技術スタック
- フレームワーク:
- 言語:
- データベース:
- 既存パターン参考:
## 要件
1. [必須要件]
2. [必須要件]
3. [任意要件]
## 制約条件
- [パフォーマンス要件]
- [セキュリティ要件]
## 出力
1. 実装コード
2. 単体テスト
3. APIドキュメント(該当する場合)
テンプレート2:バグ修正リクエスト
## バグの説明
[どんな症状が発生しているか]
## 再現手順
1. [手順1]
2. [手順2]
3. [手順3]
## 期待される動作
[どう動作すべきか]
## 実際の動作
[現在どう動作しているか]
## 関連コード
[コードの貼り付け]
## 環境
- OS:
- Node.js:
- ブラウザ:
## リクエスト
1. 原因分析
2. 修正コード
3. 再発防止のためのテスト
テンプレート3:コードレビューリクエスト
## PRの概要
[このPRが何を変更するか]
## 変更コード
[diffまたはコード]
## レビューの観点
- [ ] ロジックの正確性
- [ ] セキュリティ
- [ ] パフォーマンス
- [ ] エラーハンドリング
- [ ] テストカバレッジ
- [ ] コーディング規約
## 特に確認してほしい点
[特定部分に対する懸念事項]
テンプレート4:アーキテクチャ設計
## システム概要
[システムの目的とコア機能]
## 非機能要件
- 同時ユーザー数:
- レスポンスタイム:
- 可用性:
- データ保持:
## 既存インフラ
[現在使用中の技術とインフラ]
## リクエスト
1. アーキテクチャ図
2. 技術スタック選定と根拠
3. データモデル
4. API設計
5. スケーリング戦略
6. コスト見積もり
テンプレート5:データベーススキーマ設計
## ドメイン
[ビジネスドメインの説明]
## エンティティ
[主要なエンティティと関係]
## 要件
- 読み取り/書き込み比率:
- データサイズの予想:
- クエリパターン:
## リクエスト
1. ERD(Mermaid)
2. SQL DDL
3. インデックス戦略
4. マイグレーションスクリプト
テンプレート6:API設計
## APIの目的
[APIが提供する機能]
## RESTful設計
- リソース定義
- HTTPメソッドマッピング
- URL構造
## リクエスト
1. OpenAPI 3.0スペック
2. リクエスト/レスポンスの例
3. エラーコード定義
4. 認証・認可方式
5. レートリミッティングポリシー
6. バージョニング戦略
テンプレート7:CI/CDパイプライン
## プロジェクト情報
- 言語/フレームワーク:
- デプロイ先:
- ブランチ戦略:
## 要件
- ビルドステージ
- テストステージ(単体、統合、E2E)
- セキュリティスキャン
- デプロイ戦略(Blue-Green / Canary / Rolling)
## リクエスト
1. パイプラインYAML(GitHub Actions / GitLab CI)
2. 各ステージの説明
3. シークレット管理方法
4. ロールバック戦略
テンプレート8:パフォーマンス最適化
## 現在の状態
- 測定指標:[レスポンスタイム、スループット、エラーレート]
- ボトルネックの疑い:[説明]
## 目標
- レスポンスタイム:[現在] -> [目標]
- スループット:[現在] -> [目標]
## コード
[最適化対象コード]
## リクエスト
1. ボトルネック分析
2. 最適化方法(優先順位順)
3. 最適化されたコード
4. ベンチマークコード
テンプレート9:マイグレーションガイド
## マイグレーション対象
- FROM:[現在の技術/バージョン]
- TO:[目標の技術/バージョン]
## 現在のコード
[マイグレーション対象コード]
## 要件
- 下位互換性の維持
- 段階的マイグレーションの可否
- ダウンタイムの許容範囲
## リクエスト
1. マイグレーション計画(ステップバイステップ)
2. 変更コード
3. 互換性確認テスト
4. ロールバック計画
テンプレート10:障害対応
## インシデント情報
- 発生時刻:
- 影響範囲:
- 深刻度:
## 現在の症状
[エラーログ、メトリクスのスクリーンショット、アラートの内容]
## システム構成
[関連サービスのアーキテクチャ]
## リクエスト
1. 即時対応(緩和措置)
2. 根本原因分析
3. 修正方針
4. 再発防止策
5. ポストモーテムの草案
クイズ
ここまで学んだ内容をテストしましょう。
クイズ1:Few-shot promptingの正しい説明はどれですか?
正解:少数の例をプロンプトに含めて、AIに望むパターンを学習させるテクニック
Zero-shotは例なしで指示のみ、Few-shotは3-5個の例を含めます。例が多いほど良いわけではありません。トークンコストとコンテキストウィンドウを考慮する必要があります。
クイズ2:Temperatureを0.0に設定するとどのような特性の出力が得られますか?
正解:決定的(deterministic)な出力 — 同じ入力に対して常に同じ結果
Temperature 0.0はコード生成やデータパースなど正確性が重要なタスクに適しています。創造的なタスクには0.7以上が推奨されます。
クイズ3:Chain-of-ThoughtとTree-of-Thoughtの違いは何ですか?
正解:
- CoT:1つの推論経路をステップバイステップで進む(線形的)
- ToT:複数の推論経路を同時に探索し最適なものを選択(分岐的)
CoTは「Aを分析するとBで、BからCがわかる」のように順次的です。ToTは「A、B、Cの3つのアプローチを比較して最適を選択」する方式です。
クイズ4:Claudeで最も効果的なプロンプトの区切り方法は何ですか?
正解:XMLタグの使用
ClaudeはXMLタグに特によく反応します。context、task、constraints、output_formatなどのタグでプロンプトを構造化すると、より正確な回答が得られます。
クイズ5:ReActパターンの3つのステージは何ですか?
正解:推論(Reasoning)- 行動(Acting)- 観察(Observation)
ReActは推論と行動を交互に行うエージェントパターンです。AIが問題について考え、行動を取り、結果を観察し、再び考えるループを繰り返します。このパターンは複雑なデバッグやシステム問題解決に非常に効果的です。
参考資料
論文・学術資料
- Chain-of-Thought Prompting Elicits Reasoning in Large Language Models - Wei et al., 2022
- Tree of Thoughts: Deliberate Problem Solving with Large Language Models - Yao et al., 2023
- ReAct: Synergizing Reasoning and Acting in Language Models - Yao et al., 2022
- Self-Consistency Improves Chain of Thought Reasoning - Wang et al., 2022
- Constitutional AI: Harmlessness from AI Feedback - Bai et al., 2022
公式ドキュメント
- Anthropic Prompt Engineering Guide - docs.anthropic.com
- OpenAI Prompt Engineering Guide - platform.openai.com
- Google AI Prompt Engineering - ai.google.dev
- GitHub Copilot Best Practices - docs.github.com
実践ガイド
- Prompt Engineering Guide - promptingguide.ai
- LangChain Documentation - docs.langchain.com
- LlamaIndex Documentation - docs.llamaindex.ai
- Brex Prompt Engineering - GitHub (brexhq/prompt-engineering)
ツールとフレームワーク
- LangSmith - プロンプトテスト・評価ツール
- PromptLayer - プロンプト管理プラットフォーム
- Weights and Biases Prompts - プロンプトバージョン管理
- Helicone - LLMモニタリングとプロンプト分析
コミュニティ
- r/PromptEngineering - Redditコミュニティ
- Awesome Prompt Engineering - GitHubキュレーション
- AI Developer Discord Communities - リアルタイム知識交流