なぜこう書くのか
APIドキュメントの作成をChatGPTに依頼する際、最も頻繁に起きるトラブルは「コードに存在しないパラメータが表に入り込むこと」です。コードだけをそのまま渡すと、AIは一般的なRESTの慣例から page、limit、sort といった項目を勝手に補完してしまいます。そのドキュメントを見て開発した人は、存在しないパラメータを送信して400エラーに遭遇することになります。
課題の段落で「コードに実際に記述されているエンドポイントのみ」と釘を刺しているのはそのためです。抽出する項目をパス・メソッド・リクエスト・レスポンス・エラーと列挙したのも同じ目的です。明確な項目リストを与えないと、AIはパスと1行の説明だけを書いて、肝心なリクエストボディの構造を省略してしまいます。エラーレスポンスを項目に含めているのも同様の理由です。正常系のレスポンスしか書かれていないドキュメントは、フロントエンドの実装においてほとんど役に立ちません。
冒頭でフレームワークを指定するのは、ルーティング規約やデコレーターがフレームワークごとに異なるためです。@RequestParam がクエリなのかボディなのか、req.params がパス変数なのかは、フレームワークが分かって初めて判断できます。形式に「位置(パス/クエリ/ボディ)」の列を含めたのも、この区別を表に残すためです。
制約の「コードから確認不可」と「(推測)」の表記指定は、API仕様書の自動生成に不可欠な安全装置です。空欄のままにしておくとAIは埋めようとしますが、書くべきテキストが決まっていれば、分からないものを分からないと書くようになります。コードを """ で囲んでいるのは、コメントに含まれる「TODO: この部分は無視」といった文章が指示として誤認されるのを防ぐためです。
用語が分からなければAha AIで: hallucination, output-format
悪い例との比較
このコードを見てAPIドキュメント作って router.post('/api/orders', auth, async (req, res) => { ... (コード貼り付け)
表は出力されますが、コードにない page や limit などのパラメータが混ざり、必須か否かやパラメータの位置(クエリ/ボディ等)が抜けているため、そのまま使うとAPI呼び出しに失敗します。エラーレスポンスも省略されがちで、結局フロントエンド開発者がエラー時の挙動を一つひとつ確認する羽目になります。複数のエンドポイントを一度に渡すとフォーマットもバラバラになり、後からドキュメントを統合するのも困難です。
バリエーション
呼び出し例(リクエスト/レスポンス)も必要な場合
以下の{{フレームワーク}}のコードのエンドポイントごとに、リクエスト例(curl 1行)と成功・失敗レスポンスのJSON例を作成してください。値はコードで確認できるフィールドのみを使用し、コードになく仮で埋めた値は sample と記載してその箇所を明記してください。
""" {{コード}} """
ドキュメントを読む側がすぐにテストできるよう、実行例を要求するバリエーションです。仮で埋めた値を明記させることで、ダミー値が確定仕様と誤解されるのを防ぎます。
非エンジニア(企画・PM)向けに説明する場合
以下の{{フレームワーク}}のコードにあるエンドポイントを、企画担当者でも理解できるよう「何をする機能か・いつ呼び出されるか・何が必要か」の3列の表で整理してください。フィールド名や型は書かず、画面上で起きるユーザー体験ベースで説明してください。
""" {{コード}} """
機能範囲を合意・確認する際に使用する形式です。型などの技術詳細を省くことでドキュメントがシンプルになり、機能そのものの仕様についての議論に集中できます。
モデル別の注意
コードが複数ファイルに分かれている場合は、ルーターファイルを1つずつ入力し、最後に「これまでに作成した表を1つに統合してください」と指示してください。
関連プロンプト
最終更新 2026-09-02 · 誤りがありますか? 知らせる