ブログ一覧に戻る
🤖AI Lab

開発者のためのプロンプトエンジニアリング完全マスター

ChatGPT、Claude、GitHub Copilotを最大限活用するためのプロンプト設計テクニック。実践的な例とテンプレートで、AI活用スキルを次のレベルへ。

12 min read
AIプロンプトエンジニアリングChatGPTClaude開発効率化
シェア:

プロンプトエンジニアリングとは

プロンプトエンジニアリングは、AIから最適な出力を得るための「質問の技術」です。適切なプロンプトにより、AIの回答品質は10倍以上向上します。本記事では、開発者向けの実践的なテクニックを体系的に解説します。

1. 基礎編:効果的なプロンプトの構造

1.1 CRISP フレームワーク

優れたプロンプトは以下の要素を含みます:

  • Context(文脈): 背景情報の提供
  • Role(役割): AIに期待する役割
  • Instruction(指示): 具体的なタスク
  • Specification(仕様): 出力形式や制約
  • Prompt(促し): 追加の指示や例

1.2 実例:基本から応用まで

❌ 悪い例:
"Flutterでログイン画面を作って"

✅ 良い例:
"あなたはFlutter開発のエキスパートです。
以下の要件でログイン画面を実装してください:

要件:

- EmailとPasswordの入力フィールド
- バリデーション機能(Email形式、パスワード8文字以上)
- ローディング状態の表示
- エラーメッセージの表示
- Material Design 3準拠

技術スタック:

- Flutter 3.x
- Riverpod for state management
- go_router for navigation

コード規約:

- 関数は30行以内
- 意味のある変数名
- エラーハンドリング必須

実装してください。"

2. 実践編:タスク別プロンプトテンプレート

2.1 バグ修正プロンプト

## バグ修正依頼テンプレート

### 現象

[エラーメッセージや症状を具体的に記載]

### 環境

- OS: [例: macOS 14.0]
- 言語/フレームワーク: [例: Flutter 3.16]
- 関連ライブラリ: [バージョン含む]

### 再現手順

1. [ステップ1]
2. [ステップ2]
3. [エラー発生]

### 現在のコード

```[言語]
[問題のあるコード]
```

試したこと

  • [試した解決策1と結果]
  • [試した解決策2と結果]

期待する結果

[正常な動作の説明]

このバグを修正する方法を、段階的に説明してください。


### 2.2 アーキテクチャ設計プロンプト

```markdown
## システム設計依頼テンプレート

### プロジェクト概要
アプリ種別: [例: ECモバイルアプリ]
ユーザー規模: [例: MAU 10万人想定]
主要機能: [箇条書きで列挙]

### 技術的要件
- パフォーマンス: [例: 画面遷移 < 300ms]
- スケーラビリティ: [例: 将来的に100万ユーザー対応]
- セキュリティ: [例: PCI DSS準拠]

### 制約条件
- 予算: [例: 月額クラウド費用 $1000以内]
- 期限: [例: 3ヶ月でMVP]
- チーム: [例: 開発者3名]

### 成果物
以下を含むアーキテクチャ設計を提供してください:
1. システム構成図(mermaid形式)
2. 技術スタックの選定理由
3. データフロー図
4. API設計概要
5. セキュリティ考慮事項

2.3 コードレビュープロンプト

## コードレビュー依頼テンプレート

以下のコードをレビューしてください:

```[言語]
[レビュー対象のコード]
```

レビュー観点

  • パフォーマンス(計算量、メモリ使用量)
  • 可読性(命名、構造、コメント)
  • 保守性(DRY原則、SOLID原則)
  • セキュリティ(脆弱性、入力検証)
  • エラーハンドリング
  • テスタビリティ

出力形式

  1. 重要度別の問題点リスト
  2. 各問題の改善案とコード例
  3. 良い点の指摘
  4. 総合評価(5段階)

## 3. 上級編:チェーンプロンプティング

### 3.1 段階的詳細化テクニック

複雑なタスクを小さなステップに分解し、段階的に詳細化します:

```markdown
Step 1: "Flutter MVVMアーキテクチャの基本構造を説明"
↓
Step 2: "その構造でユーザー認証機能を設計"
↓
Step 3: "設計に基づいてViewModelを実装"
↓
Step 4: "ユニットテストを作成"

3.2 実例:複雑なシステムの段階的実装

# プロンプトチェーンの自動化例
class PromptChain:
    def __init__(self, ai_client):
        self.ai = ai_client
        self.context = []

    def add_step(self, prompt, use_previous_context=True):
        if use_previous_context:
            full_prompt = self._build_context() + "\n\n" + prompt
        else:
            full_prompt = prompt

        response = self.ai.query(full_prompt)
        self.context.append({
            'prompt': prompt,
            'response': response
        })
        return response

    def _build_context(self):
        return "\n".join([
            f"Previous: {item['response'][:200]}..."
            for item in self.context[-3:]  # 直近3つのコンテキスト
        ])

# 使用例
chain = PromptChain(ai_client)
chain.add_step("Flutterアプリのフォルダ構造を提案")
chain.add_step("その構造でuser認証機能のファイル配置を詳細に")
chain.add_step("認証Serviceクラスを実装")
chain.add_step("対応するテストコードを生成")

4. プロンプトパターンカタログ

4.1 ペルソナパターン

パターン: "あなたは[専門性]を持つ[役割]です"

例:

- "あなたはセキュリティ専門家です。このコードの脆弱性を指摘してください"
- "あなたは10年経験のiOSエンジニアです。SwiftUIのベストプラクティスを教えてください"
- "あなたはUXデザイナーです。このUIの改善点を提案してください"

4.2 制約パターン

パターン: "以下の制約の下で[タスク]を実行"

例:
"以下の制約でAPIを設計してください:

- RESTful原則の遵守
- レスポンス時間 < 200ms
- 1リクエストあたり最大100KBのペイロード
- JWT認証の使用
- rate limiting: 100req/min"

4.3 例示パターン

パターン: "以下の例を参考に[タスク]を実行"

例:
"以下の命名規則に従って、新しい関数を実装してください:

良い例:

- getUserById()
- validateEmailFormat()
- calculateTotalPrice()

悪い例:

- getData()
- check()
- doStuff()

タスク: 在庫確認機能の実装"

5. AIツール別最適化テクニック

5.1 ChatGPT最適化

// ChatGPT向け最適プロンプト構造
const chatGPTPrompt = {
  systemMessage: 'あなたはTypeScriptのエキスパートです',
  userMessage: `
    タスク: 型安全なAPIクライアントの実装
    
    要件:
    - Zodでスキーマ定義
    - 自動リトライ機能
    - エラーハンドリング
    
    コード例を提供してください。
  `,
  temperature: 0.7, // 創造性と正確性のバランス
  max_tokens: 2000,
};

5.2 Claude最適化

# Claude向け最適プロンプト構造
claude_prompt = """
<task>
Pythonで効率的なデータ処理パイプラインを設計
</task>

<requirements>
- 100GBのCSVファイル処理
- メモリ効率的な実装
- 並列処理対応
</requirements>

<constraints>
- メモリ使用量: 最大8GB
- 処理時間: 1時間以内
- Python 3.10+
</constraints>

<output_format>
1. アーキテクチャ概要
2. 実装コード
3. パフォーマンステスト方法
</output_format>
"""

5.3 GitHub Copilot最適化

// GitHub Copilot向けコメント駆動開発

/**
 * ユーザー認証を管理するカスタムフック
 *
 * 機能:
 * - ログイン/ログアウト
 * - トークンの自動更新
 * - 認証状態の永続化
 *
 * 使用例:
 * const { user, login, logout, isLoading } = useAuth();
 *
 * 依存:
 * - axios for API calls
 * - zustand for state management
 * - jwt-decode for token parsing
 */
function useAuth() {
  // Copilotがここから自動生成
}

6. メトリクスと改善

6.1 プロンプト品質の測定

interface PromptMetrics {
  clarity: number; // 明確性 (0-10)
  specificity: number; // 具体性 (0-10)
  completeness: number; // 完全性 (0-10)
  relevance: number; // 関連性 (0-10)
  outputQuality: number; // 出力品質 (0-10)
}

function evaluatePrompt(prompt: string, output: string): PromptMetrics {
  return {
    clarity: assessClarity(prompt),
    specificity: countSpecificRequirements(prompt),
    completeness: checkCompleteness(prompt),
    relevance: measureRelevance(output, prompt),
    outputQuality: rateOutputQuality(output),
  };
}

6.2 改善サイクル

graph TD
    A[初期プロンプト] --> B[AI応答]
    B --> C{満足度評価}
    C -->|低| D[プロンプト改善]
    D --> E[要素追加/修正]
    E --> A
    C -->|高| F[テンプレート化]
    F --> G[チーム共有]
    G --> H[標準化]

7. アンチパターンと対策

7.1 避けるべきプロンプト

アンチパターン 問題点 改善例
曖昧な指示 "良いコードを書いて" "SOLID原則に従ったコードを書いて"
過度に長い 1000行以上のプロンプト 段階的に分割
コンテキスト不足 "エラーを直して" エラーメッセージと環境情報を含める
矛盾する要求 "シンプルで高機能" 優先順位を明確化

7.2 トラブルシューティング

問題: AIが的外れな回答をする
対策:

1. コンテキストを追加
2. 具体例を提供
3. 制約条件を明確化
4. 段階的に質問

問題: コードが動かない
対策:

1. 環境情報を詳細に提供
2. エラーメッセージを含める
3. 依存関係を明記
4. 最小再現コードを提供

8. 実践演習

8.1 練習問題

以下のタスクに対して、効果的なプロンプトを作成してください:

  1. 初級: Reactコンポーネントのユニットテスト作成
  2. 中級: マイクロサービス間の通信設計
  3. 上級: レガシーシステムのリファクタリング計画

8.2 模範解答例(上級)

## レガシーシステムリファクタリング計画の策定

### 現状分析

システム概要: 10年前のPHPモノリスアプリケーション
コード規模: 50万行
技術スタック: PHP 5.6, MySQL 5.7, jQuery
問題点:

- テストカバレッジ: 5%
- 密結合なアーキテクチャ
- セキュリティ脆弱性多数
- パフォーマンス劣化

### 目標

- マイクロサービス化
- テストカバレッジ80%
- モダンな技術スタックへ移行
- 段階的移行(ビジネス継続性確保)

### 制約

- 予算: 6ヶ月間、エンジニア5名
- ダウンタイム: 最大月1時間
- 既存機能の完全互換性

### 成果物要求

1. フェーズ別移行計画(ガントチャート含む)
2. 技術選定と根拠
3. リスク分析と対策
4. 各フェーズの成功指標
5. ロールバック計画

詳細な計画を策定してください。

まとめ

プロンプトエンジニアリングは、AI時代の開発者にとって必須スキルです。重要なポイント:

  1. 構造化: CRISPフレームワークで体系的に
  2. 具体性: 曖昧さを排除し、明確な指示を
  3. 段階的: 複雑なタスクは分割して
  4. 改善: メトリクスを測定し、継続的に最適化
  5. 共有: チームでベストプラクティスを蓄積

これらのテクニックを習得することで、AIを真のペアプログラマーとして活用し、開発生産性を飛躍的に向上させることができます。

次のアクション

  1. 本記事のテンプレートを使って実際にプロンプトを作成
  2. チーム内でプロンプトライブラリを構築
  3. 定期的なプロンプト改善セッションの実施
  4. AIツールの最新機能を追跡し、プロンプトを最適化

AIとの対話スキルを磨き、次世代の開発者として一歩先を行きましょう。

ゆうき|毎月20万円積立のプロフィール画像

ゆうき|毎月20万円積立

メガベンチャー シニアエンジニア

Flutter、Next.js、AIを活用した開発を専門とするエンジニア。29歳で資産1000万円を運用中。テクノロジーと投資を組み合わせて、45歳でのサイドFIRE達成を目指しています。

7年以上の開発経験
専門分野:
FlutterNext.jsAI/Claudeシステム設計投資戦略
資格・認定:
  • 年収850万円(29歳)
  • VOO・BND中心に1000万円運用
検証済み専門家