LESSON 30分

効果的なプロンプトパターン

ストーリー

「基本原則はわかったと思う。でも、毎回ゼロから考えるのは大変だろ?」

中島先輩がスマホのメモアプリを見せた。そこにはプロンプトのテンプレート集があった。

「俺はよく使うパターンをストックしてるんだ。パターンを知ってれば、 どんな場面でもすぐに高品質なプロンプトが書ける

「デザインパターンみたいなものですか?」

「まさにそうだ。プロンプトにもパターンがある。今日はそれを伝授しよう」


パターン1: ロール設定パターン

AIに特定の役割を与えることで、回答の専門性と品質を向上させます。

基本構文

あなたは[専門家の役割]です。
[経験年数]年の経験があり、[特定のスキル]に精通しています。

実践例

あなたはTypeScriptのシニアエンジニアです。
10年の開発経験があり、特にクリーンアーキテクチャと
テスト駆動開発に精通しています。

以下のコードをレビューしてください。
可読性、パフォーマンス、テスタビリティの観点から
改善点を指摘してください。

[コードを貼り付け]

ロール設定のバリエーション

ロール使いどころ
シニアエンジニアコードレビュー、設計相談
セキュリティエキスパートセキュリティ監査、脆弱性チェック
テクニカルライタードキュメント作成、README
コードレビュアーPR レビューの下書き
初心者向け講師技術概念の説明
DBAスペシャリストクエリ最適化、スキーマ設計

パターン2: コンテキスト設定パターン

背景情報を明確に伝えることで、状況に合った回答を引き出します。

基本構文

背景:
- プロジェクト: [プロジェクトの説明]
- 技術スタック: [使用技術]
- チーム: [チームの状況]
- 制約: [ビジネス/技術的制約]

実践例

背景:
- プロジェクト: 社内の勤怠管理システムのリプレース
- 技術スタック: Next.js 14, TypeScript, Prisma, PostgreSQL
- チーム: フロントエンド2名、バックエンド1名の小規模チーム
- 制約: 3ヶ月以内にリリース、既存データの移行が必要

この背景を踏まえて、ユーザー認証機能の実装方針を提案してください。
選択肢ごとのメリット・デメリットを表形式で示してください。

パターン3: 出力形式指定パターン

出力の形式を明確に指定することで、使いやすい回答を得られます。

よく使う出力形式

■ コード形式
「TypeScriptのコードで出力してください。JSDocコメント付きで。」

■ 表形式
「以下の列を持つ表で比較してください:
| 項目 | 方法A | 方法B | 推奨 |」

■ リスト形式
「箇条書きで5つ以内にまとめてください」

■ ステップ形式
「手順を番号付きリストで説明してください」

■ JSON形式
「以下のJSON構造で出力してください:
{
  "summary": "概要",
  "details": ["詳細1", "詳細2"],
  "recommendation": "推奨事項"
}」

実践例:表形式の出力

Node.jsのWebフレームワークを比較してください。

以下の表形式で出力してください:

| フレームワーク | 学習コスト | パフォーマンス | エコシステム | TypeScript対応 | 推奨ケース |

パターン4: 制約条件パターン

やってほしいことだけでなく、やってほしくないことも明示します。

基本構文

以下の制約を守ってください:
- してほしいこと: [DO]
- してほしくないこと: [DON'T]

実践例

Reactコンポーネントを作成してください。

してほしいこと:
- 関数コンポーネントで書く
- TypeScriptの型を厳密に定義する
- React Hooks を使用する
- エラーバウンダリを考慮する

してほしくないこと:
- クラスコンポーネントは使わない
- anyは使わない
- useEffectの中で直接fetchしない
- インラインスタイルは使わない

パターン5: 段階的指示パターン

複雑なタスクを段階的に指示することで、各段階の品質を確保します。

基本構文

以下のステップで作業を進めてください。
各ステップの結果を確認してから次に進みます。

Step 1: [最初のタスク]
Step 2: [次のタスク]
Step 3: [最終タスク]

まずStep 1から始めてください。

実践例

ユーザー管理機能を段階的に実装していきます。

Step 1: データモデルの定義
  - Prismaスキーマでユーザーテーブルを定義してください
  - フィールド: id, email, name, role, createdAt, updatedAt

まずStep 1を実装してください。
確認後にStep 2(リポジトリ層)に進みます。

パターン6: Before/After パターン

変換の入力と期待する出力を示して、変換ルールを理解させます。

実践例

以下のJavaScriptコードをTypeScriptに変換してください。

Before (JavaScript):
function fetchUser(id) {
  return fetch(`/api/users/${id}`)
    .then(res => res.json())
    .then(data => data.user);
}

After (TypeScript) の期待する形式:
- async/await を使用
- 戻り値の型を定義
- エラーハンドリングを追加
- 引数の型を明示

パターンの組み合わせ

実務では複数のパターンを組み合わせて使います。

組み合わせ例:本格的なコードレビュー依頼

[ロール設定]
あなたはセキュリティに詳しいシニアTypeScriptエンジニアです。

[コンテキスト]
背景: ECサイトの決済処理のコードレビューです。
技術スタック: Node.js, Express, TypeScript, Stripe API

[タスク]
以下のコードをレビューしてください。

[制約]
レビュー観点:
1. セキュリティ(入力バリデーション、認証、OWASP Top 10)
2. エラーハンドリング(例外処理、リトライ戦略)
3. コード品質(型安全性、可読性)

レビューしないこと:
- コードスタイル(フォーマッタで管理しているため)

[出力形式]
以下の形式で指摘してください:
| 重要度 | 行番号 | カテゴリ | 指摘内容 | 修正案 |

重要度は Critical / Warning / Info の3段階で。

[入力データ]
// --- コードここから ---
[コードを貼り付け]
// --- コードここまで ---

まとめ

パターン用途ポイント
ロール設定専門的な回答を得たい具体的な専門性を指定
コンテキスト設定状況に合った回答を得たい背景情報を構造化して伝える
出力形式指定使いやすい形式で回答を得たい表、コード、JSONなど明示
制約条件やってほしくないことを防ぐDO/DON'T を明確に
段階的指示複雑なタスクを正確に進めたいステップに分割
Before/After変換ルールを伝えたい入出力の具体例を提示

チェックリスト

  • 6つのプロンプトパターンの用途を理解した
  • ロール設定パターンを実践できる
  • 出力形式を指定して期待通りの回答を得られる
  • 複数パターンを組み合わせた高品質なプロンプトを書ける

次のステップへ

プロンプトパターンをマスターしたら、次はさらに高度なテクニック「Few-shot」と「Chain-of-Thought」を学びます。

これらを使うと、AIの推論能力を最大限に引き出せます。


推定読了時間: 30分