コードからAPI仕様書を作成する

エンドポイントとリクエスト・レスポンス項目を表形式で整理する

プロンプト · 変数 3個

私は{{フレームワーク}}で構築したサーバーのAPIドキュメントを整理しようとしています。以下は実際に稼働しているルーター・コントローラーのコードです。

コードに実際に記述されているエンドポイントのみを抽出し、仕様書として整理してください。パス、HTTPメソッド、リクエストパラメータ(名前・位置・型・必須か否か)、レスポンスフィールド、エラーレスポンスを抽出してください。

結果は{{文書形式}}で作成してください。エンドポイントごとに1行の説明を冒頭に書き、その下に「名前・位置(パス/クエリ/ボディ)・型・必須・説明」の表を配置してください。

コードから確認できない項目は勝手に推測して作らず、「コードから確認不可」と記載してください。コード内に型の明記がなく推測したものは横に「(推測)」と表記し、認証や権限チェックが必要なエンドポイントはその旨を別途明記してください。

コード: """ {{コード}} """

コピーしたらここに貼り付け · ChatGPT・Claudeはプロンプト入りで開きます ChatGPTで開く ↗Claudeで開く ↗Geminiで開く ↗ ビルダーで編集 授業用カード画像を保存

このプロンプトには個人情報が入りうる変数があります。実名・番号・会社名は仮名に置き換えてください。

なぜこう書くのか

文脈
私は{{フレームワーク}}で構築したサーバーのAPIドキュメントを整理しようとしています。以下は実際に稼働しているルーター・コントローラーのコードです。
課題
コードに実際に記述されているエンドポイントのみを抽出し、仕様書として整理してください。パス、HTTPメソッド、リクエストパラメータ(名前・位置・型・必須か否か)、レスポンスフィールド、エラーレスポンスを抽出してください。
形式
結果は{{文書形式}}で作成してください。エンドポイントごとに1行の説明を冒頭に書き、その下に「名前・位置(パス/クエリ/ボディ)・型・必須・説明」の表を配置してください。
制約
コードから確認できない項目は勝手に推測して作らず、「コードから確認不可」と記載してください。コード内に型の明記がなく推測したものは横に「(推測)」と表記し、認証や権限チェックが必要なエンドポイントはその旨を別途明記してください。
入力資料
コード: """ {{コード}} """

APIドキュメントの作成をChatGPTに依頼する際、最も頻繁に起きるトラブルは「コードに存在しないパラメータが表に入り込むこと」です。コードだけをそのまま渡すと、AIは一般的なRESTの慣例から pagelimitsort といった項目を勝手に補完してしまいます。そのドキュメントを見て開発した人は、存在しないパラメータを送信して400エラーに遭遇することになります。

課題の段落で「コードに実際に記述されているエンドポイントのみ」と釘を刺しているのはそのためです。抽出する項目をパス・メソッド・リクエスト・レスポンス・エラーと列挙したのも同じ目的です。明確な項目リストを与えないと、AIはパスと1行の説明だけを書いて、肝心なリクエストボディの構造を省略してしまいます。エラーレスポンスを項目に含めているのも同様の理由です。正常系のレスポンスしか書かれていないドキュメントは、フロントエンドの実装においてほとんど役に立ちません。

冒頭でフレームワークを指定するのは、ルーティング規約やデコレーターがフレームワークごとに異なるためです。@RequestParam がクエリなのかボディなのか、req.params がパス変数なのかは、フレームワークが分かって初めて判断できます。形式に「位置(パス/クエリ/ボディ)」の列を含めたのも、この区別を表に残すためです。

制約の「コードから確認不可」と「(推測)」の表記指定は、API仕様書の自動生成に不可欠な安全装置です。空欄のままにしておくとAIは埋めようとしますが、書くべきテキストが決まっていれば、分からないものを分からないと書くようになります。コードを """ で囲んでいるのは、コメントに含まれる「TODO: この部分は無視」といった文章が指示として誤認されるのを防ぐためです。

用語が分からなければAha AIで: hallucination, output-format

悪い例との比較

よくある悪い例

このコードを見てAPIドキュメント作って router.post('/api/orders', auth, async (req, res) => { ... (コード貼り付け)

表は出力されますが、コードにない pagelimit などのパラメータが混ざり、必須か否かやパラメータの位置(クエリ/ボディ等)が抜けているため、そのまま使うとAPI呼び出しに失敗します。エラーレスポンスも省略されがちで、結局フロントエンド開発者がエラー時の挙動を一つひとつ確認する羽目になります。複数のエンドポイントを一度に渡すとフォーマットもバラバラになり、後からドキュメントを統合するのも困難です。

バリエーション

呼び出し例(リクエスト/レスポンス)も必要な場合

呼び出し例(リクエスト/レスポンス)も必要な場合

以下の{{フレームワーク}}のコードのエンドポイントごとに、リクエスト例(curl 1行)と成功・失敗レスポンスのJSON例を作成してください。値はコードで確認できるフィールドのみを使用し、コードになく仮で埋めた値は sample と記載してその箇所を明記してください。

""" {{コード}} """

ドキュメントを読む側がすぐにテストできるよう、実行例を要求するバリエーションです。仮で埋めた値を明記させることで、ダミー値が確定仕様と誤解されるのを防ぎます。

非エンジニア(企画・PM)向けに説明する場合

非エンジニア(企画・PM)向けに説明する場合

以下の{{フレームワーク}}のコードにあるエンドポイントを、企画担当者でも理解できるよう「何をする機能か・いつ呼び出されるか・何が必要か」の3列の表で整理してください。フィールド名や型は書かず、画面上で起きるユーザー体験ベースで説明してください。

""" {{コード}} """

機能範囲を合意・確認する際に使用する形式です。型などの技術詳細を省くことでドキュメントがシンプルになり、機能そのものの仕様についての議論に集中できます。

モデル別の注意

コードが複数ファイルに分かれている場合は、ルーターファイルを1つずつ入力し、最後に「これまでに作成した表を1つに統合してください」と指示してください。

関連プロンプト

最終更新 2026-09-02 · 誤りがありますか? 知らせる