Codex活用ガイド|AIエージェントを使いこなすプロンプト120選。エンジニア・開発者向けの記事、教科書スタイル
エンジニア・開発者向けの記事、教科書スタイル
Codex活用ガイド|AIエージェントを使いこなすプロンプト120選
~開発効率を劇的に高める厳選プロンプト集~
第1章 はじめに
1.1 本書の目的と対象読者
本書は、OpenAIが提供するAIコーディングエージェント「Codex」を業務や個人開発で最大限に活用するための実践的プロンプト集である。単なるプロンプト一覧にとどまらず、各プロンプトの設計思想・使用場面・応用パターンまでを網羅的に解説する。
対象読者は以下のとおりである。
- Webアプリケーション・バックエンド・フロントエンドの開発に従事するエンジニア
- チーム開発においてAIを業務フローに組み込もうとしているテックリード
- 個人開発者・フリーランスエンジニアで開発速度を向上させたい方
- AIコーディングツールをすでに使っているが、より効果的な使い方を模索している方
本書を読み終えたとき、読者はCodexに対して「何をどう伝えれば、望む出力が得られるか」を体系的に理解し、日常的な開発タスクの大部分をAIと協調して処理できるようになっているはずである。
1.2 Codexとは何か
Codexは、GPT系の大規模言語モデルをベースとしたAIコーディングエージェントである。単にコードを生成するだけでなく、以下のような多様なタスクをこなすことができる。
- 自然言語の仕様からコードを生成する(機能実装)
- 既存コードを解析して最適化・リファクタリングを行う(修正・改善)
- テストコードを自動生成し、単体テスト・結合テストをカバーする(テスト作成)
- READMEや仕様書などのドキュメントを自動生成する(ドキュメント作成)
- バグの原因を特定し、修正案を提示する(バグ調査・解析)
- アーキテクチャ設計や実装方針を提案する(設計・提案)
これらは単独で動作するだけでなく、連続したプロンプト操作によって複合的に機能する。たとえば「仕様を渡してコードを生成させ、そのコードのテストを書かせ、最後にREADMEを作成させる」という一連の作業を、Codexとの対話だけで完結できる。
1.3 AIエージェント活用の4ステップ
Codexを効果的に使うには、以下の4ステップを意識することが重要である。
ステップ1:指示する 目的や要件を明確に伝える。曖昧な指示は曖昧な出力を生む。仕様・制約・使用技術・出力形式をセットで伝えることが基本である。
ステップ2:生成・提案 Codexが最適な解決策を提示する。初回の出力が完璧でない場合も多いため、反復的に改善していく前提で臨む。
ステップ3:確認・調整 出力を確認し、必要に応じて追加指示を与える。「〇〇の部分を△△に変えてください」「エラーハンドリングを追加してください」といった差分指示が有効である。
ステップ4:実装・活用 そのまま使える高品質な成果物として活用する。コピー&ペーストだけでなく、自分のプロジェクトに合わせたカスタマイズを加えることでさらに価値が高まる。
第2章 プロンプト設計の基本原則
2.1 良いプロンプトの構造
Codexに対して効果的な指示を出すには、以下の要素を意識してプロンプトを構成することが重要である。
① コンテキスト(背景情報) どんなプロジェクトで、どんな技術スタックを使っているかを先に伝える。
例:「FastAPIとSQLAlchemyを使ったREST APIプロジェクトです。データベースはPostgreSQLです。」
② タスク(何をしてほしいか) 動詞を明確にする。「作って」「修正して」「説明して」「テストを書いて」など。
③ 入力(対象となるコード・仕様) 対象のコードや仕様を提示する。コードブロックで囲むと認識精度が上がる。
④ 出力形式(どんな形で出してほしいか) 「Pythonのコードだけ出してください」「コメント付きで出してください」「説明文の後にコードを書いてください」など、出力フォーマットを指定する。
⑤ 制約条件(やってはいけないこと) 「外部ライブラリは使わないでください」「既存の関数シグネチャは変えないでください」など、ネガティブ条件も重要である。
2.2 プロンプトの粒度
タスクの複雑さに応じてプロンプトの粒度を変える必要がある。
| タスクの複雑さ | 推奨アプローチ |
一度に多くを詰め込みすぎると出力品質が下がることがある。「一度に一つのことを依頼する」を基本とし、複雑なタスクは分解して順番に処理させるのが効果的である。
2.3 反復改善のパターン
Codexとの対話は「一発で完成」を目指すより、「反復して精度を高める」マインドセットが重要である。
典型的な反復パターンは以下のとおりである。
1. 初期プロンプト → 初稿を生成
2. 「〇〇の部分が要件と違います。△△に修正してください」 → 差分修正
3. 「エラーハンドリングが不足しています。追加してください」 → 補完
4. 「コメントを日本語で追加してください」 → 仕上げ
この反復サイクルを意識することで、最終的に高品質なコードが得られる。
第3章 機能実装プロンプト(30選)
3.1 概要
機能実装は、Codexが最も得意とする領域の一つである。自然言語で書いた仕様から、動作するコードを生成する能力は、特に定型的なAPIエンドポイントやCRUD処理において非常に高い精度を発揮する。
3.2 認証・ユーザー管理系(プロンプト1〜8)
プロンプト1:ユーザー登録機能の実装
FastAPI + SQLAlchemy + PostgreSQLの構成で、ユーザー登録機能を実装してください。
要件:
- メールアドレスとパスワードで登録
- パスワードはbcryptでハッシュ化
- メールアドレスの重複チェック
- 登録成功時に201ステータスとユーザーIDを返す
- バリデーションエラー時に422ステータスを返す
使用ライブラリ:fastapi, sqlalchemy, passlib[bcrypt], pydantic
解説: このプロンプトはコンテキスト(技術スタック)、要件(箇条書き)、使用ライブラリの3要素を揃えた標準的な実装依頼の形式である。箇条書きで要件を列挙することで、Codexが網羅すべき機能を漏れなく把握できる。
プロンプト2:JWTトークン認証の実装
以下の条件でJWT認証機能を実装してください。
- ライブラリ:python-jose, fastapi
- アクセストークンの有効期限:30分
- リフレッシュトークンの有効期限:7日
- `/auth/token`エンドポイントでログイン
- Bearerトークンをヘッダーから取得して認証するdependency関数を作成
- トークン期限切れ時は401を返す
プロンプト3:OAuth2.0(Google認証)の統合
FastAPIアプリにGoogle OAuth2.0ログインを追加してください。
フロー:
1. `/auth/google/login` にアクセスするとGoogleの認証画面にリダイレクト
2. コールバックURL `/auth/google/callback` でアクセストークンを取得
3. Googleのユーザー情報APIからメール・名前を取得
4. DBにユーザーが存在しなければ新規作成、存在すれば更新
5. 独自JWTを発行してフロントエンドに返す
ライブラリ:authlib, fastapi, httpx
プロンプト4:ロールベースアクセス制御(RBAC)の実装
FastAPIで以下のRBACシステムを実装してください。
ロール定義:
- admin: 全操作可能
- editor: 読み取り・作成・更新のみ
- viewer: 読み取りのみ
実装内容:
- UserモデルにroleカラムをEnumで追加
- 各ロールをチェックするdependency関数(require_admin, require_editor等)
- ロール不足時は403 Forbiddenを返す
- エンドポイントにdependencyを付与する使用例も示してください
プロンプト5:パスワードリセット機能
メール経由のパスワードリセット機能を実装してください。
フロー:
1. `/auth/forgot-password` にメールアドレスをPOST
2. リセット用のランダムトークン(UUID)を生成してDBに保存(有効期限1時間)
3. メールでリセットURLを送信(メール送信はSMTPLibで実装)
4. `/auth/reset-password/{token}` に新パスワードをPOST
5. トークン検証後にパスワードを更新、使用済みトークンを削除
言語:Python / FastAPI
プロンプト6:二要素認証(TOTP)の実装
Google AuthenticatorなどのTOTPアプリを使った2FAを実装してください。
要件:
- pyotpライブラリを使用
- ユーザーの2FA有効化時にQRコード用のURLを返す(qrcodeライブラリでQR生成)
- ログイン時に6桁のOTPコードを検証するエンドポイントを追加
- 2FA未設定ユーザーはスキップ可能(任意設定)
- 使用済みコードの再利用防止のためRedisにキャッシュ
プロンプト7:セッション管理(Redis)
FastAPIでRedisを使ったセッション管理を実装してください。
- ライブラリ:redis-py, fastapi
- セッションIDはUUID4で生成、Cookieに保存
- セッションデータはRedisにJSON形式で保存
- セッション有効期限:24時間(アクセスのたびにリセット)
- ログアウト時にRedisからセッションを削除
- セッションを取得・更新するmiddlewareを作成
プロンプト8:APIキー認証
APIキー認証システムを実装してください。
- APIキーはSHA-256でハッシュ化してDBに保存
- ヘッダー `X-API-Key` から取得
- キーに使用制限(1日のリクエスト上限)をRedisで管理
- キー生成・無効化・使用状況確認のエンドポイントを作成
- FastAPIのdependencyとして使いやすい形にしてください
3.3 CRUD・データ操作系(プロンプト9〜16)
プロンプト9:汎用CRUDクラスの実装
SQLAlchemy ORMを使った汎用CRUDクラスを実装してください。
要件:
- TypeVar/Genericを使って型安全にする
- create, read, update, delete, list(ページネーション付き)のメソッドを実装
- listにはフィルタリング・ソートの引数を追加
- ソフトデリート(deleted_atカラム)に対応
- 使用例もコメントで示してください
解説: 汎用クラスの実装は「型安全性」「拡張性」をキーワードにプロンプトを書くと、品質の高いコードが得られやすい。Genericを使う旨を明示することで、TypeVarを活用したPython的な実装が出力される。
プロンプト10:バルクインサート・アップサート
SQLAlchemy CoreでPostgreSQLのupsert(INSERT ON CONFLICT)を実装してください。
- 1万件以上のレコードを効率的にバルクインサートする関数
- 主キー重複時はupdated_atとvalueカラムを更新
- チャンク単位(1000件ずつ)で処理してメモリ効率を確保
- 処理件数と所要時間をログ出力
プロンプト11:全文検索機能
PostgreSQLのtsvectorを使った日本語全文検索機能を実装してください。
- pg_trgmとpgroonga拡張を使用(どちらが適切か判断して選択)
- 商品名・説明文を対象に検索
- 検索スコアで降順ソート
- ハイライト機能(一致部分をタグで囲む)
- FastAPIのエンドポイントとして実装
プロンプト12:ツリー構造データの操作
カテゴリの階層構造(ツリー)をSQLで扱う実装をしてください。
- 隣接リストモデルとクロージャテーブルの両方を説明し、本ユースケースに適した方を選択
- 子孫全取得・先祖全取得・サブツリー移動の操作を実装
- SQLAlchemy ORMで実装
- 再帰CTEを使ったSQL例も示してください
プロンプト13:ページネーション(カーソルベース)
オフセットではなくカーソルベースのページネーションを実装してください。
- カーソルはcreated_at + idの複合値をBase64エンコード
- 前後のページ取得に対応
- hasNextPage, hasPreviousPageを返す
- SQLAlchemy ORMで実装
- なぜカーソルベースがオフセットより優れているかの説明も追加してください
プロンプト14:データのCSVエクスポート
大量データのCSVエクスポート機能を実装してください。
- StreamingResponseを使ってメモリに全件ロードせずにストリーミング出力
- 件数が多い場合(10万件超)でもタイムアウトしない設計
- ヘッダー行のカラム名は日本語対応
- Shift-JIS/UTF-8の切り替えオプション
- FastAPIで実装
プロンプト15:Excelファイルのインポート
Excelファイルをアップロードしてデータをインポートする機能を実装してください。
- ライブラリ:openpyxl
- バリデーション:必須項目チェック、型チェック、重複チェック
- エラーがある行はスキップしてエラーレポートをレスポンスに含める
- トランザクション:全行成功時のみコミット、1行でもエラーならロールバック
- 進捗をWebSocketで通知する(任意)
プロンプト16:データ集計・レポート生成
売上データの集計レポートAPIを実装してください。
集計項目:
- 日別・週別・月別の売上合計
- 商品カテゴリ別の売上ランキング
- 前期比(前日比・前週比・前月比)
- 移動平均(7日・30日)
- SQLAlchemy CoreのSQL式で実装(ORMより生SQLに近い書き方)
- キャッシュはRedisで1時間
- レスポンスはJSON
3.4 非同期・バックグラウンド処理系(プロンプト17〜22)
プロンプト17:Celeryタスクキューの実装
CeleryとRedisを使ったバックグラウンドタスクシステムを実装してください。
タスク例:
- メール一括送信(1000件)
- PDFレポート生成
- 外部API呼び出し(レートリミット付き)
- タスクのリトライ設定(最大3回、指数バックオフ)
- タスクの進捗をDBに記録
- タスク失敗時のアラート通知(Slack Webhook)
- FastAPIからタスクをキューに入れるエンドポイント
プロンプト18:WebSocketリアルタイム通知
FastAPIでWebSocketを使ったリアルタイム通知システムを実装してください。
- 接続管理クラス(ConnectionManager)を作成
- ユーザーIDごとに接続を管理
- イベントタイプ別のメッセージルーティング
- 接続が切れた場合の再接続ハンドリング
- 複数サーバーに対応するためRedis Pub/Subを使った接続の共有
プロンプト19:非同期HTTPクライアント(httpx)
httpxを使った非同期HTTPクライアントのユーティリティ関数を実装してください。
- リトライ(最大3回、ステータス429・503時)
- タイムアウト設定(接続5秒、読み取り30秒)
- レートリミット(1秒に10リクエスト)
- レスポンスのキャッシュ(TTL付き)
- エラーログの自動記録
プロンプト20:定期実行スケジューラ(APScheduler)
APSchedulerを使ったスケジュールタスクをFastAPIに組み込んでください。
タスク例:
- 毎日0時にデータ集計バッチを実行
- 毎時0分に期限切れセッションを削除
- 毎週月曜日に週次レポートメールを送信
- アプリ起動時にスケジューラを開始、終了時に停止
- タスクの実行履歴をDBに記録
- タスクが重複実行されないようにロックを実装
