AIでAPI設計を考える方法|エンドポイント整理の流れ

AIでAPI設計を考える方法について、用途ごとの考え方と選び方のポイントを整理します。

AIものさし編集部

AIにAPI endpointを列挙させる前に、利用者が行う操作と、システムが管理するresourceを整理します。画面ごとにURLを増やすと責務が重複しやすく、必要なdataや失敗時の約束も曖昧になります。設計の出発点は「誰が何をしたいか」であり、API形式をRESTにするかRPC等にするかは既存systemと要件を見て決めます。

endpoint一覧より先に利用者の操作を記録する

各操作について、actor、目的、対象、前提条件、成功時の結果、失敗時の扱いを書きます。「注文を作る」なら、誰が、どの顧客のために、どの品目を、どの状態から登録するのかが要ります。認証済みというだけで操作権限があるとは限らないため、resource単位のauthorization条件も別にします。閲覧、作成、更新、取消、検索が同じ権限でよいと決めつけないでください。

その後、業務上識別して管理するものをresource候補にします。画面名や動詞からそのままpathを作るのではなく、注文、顧客、コメントのような概念が永続化・参照される単位かを確認します。一時処理や集計、複数resourceを伴う操作は、単純なCRUDに押し込めず、既存のAPI styleと整合するoperationとして別に記述します。RESTが適切かは要件依存であり、標準的な正解として固定しません。

method / path / 意味を一緒に決める

OpenAPI SpecificationではpathsにPath Itemを置き、HTTP methodごとにoperationを記述します。設計表ではpathだけでなく、目的、対象resource、認証・認可、request、response、error、冪等性を同じ行に並べます。一覧と個別取得を分ける場合も、pagination、filter、sort、empty resultの意味を定義します。利用者が必要な情報を一度に得られるかと、不要な情報まで過剰に返さないかの両方を見ます。

表は横にスクロールできます

actor / actionresourceoperation案成功時代表的な失敗
担当者が注文を見るorderGET /orders/許可された注文の概要404または権限方針に沿う応答
利用者が注文を作るorderPOST /orders作成結果と識別子validation / conflict
担当者が状態を変えるorderPATCH /orders/更新後の状態競合 / 権限不足

これは説明用の形です。実際のpathやstatus codeをそのまま採用せず、APIの既存契約、機密性、HTTP semanticsに照らして決めます。特に他者のresource IDを指定されたときに、存在の有無をどこまで明かすかはsecurity上の判断が必要です。

requestとresponseの契約を定義する

operationごとにpath parameter、query parameter、header、bodyの役割を分けます。必須・任意、nullの意味、enum、文字数や範囲、日付とtimezone、文字コード、ページングの境界を明記してください。request schemaでは形式だけでなく、検証エラーをどの単位で返すかも決めます。responseは必須field、nullable、配列の順序、resourceのversion、pagination cursorを定めます。

OpenAPIのschemaへ落とす際は、実装言語の型だけをコピーしません。wire formatで実際に送受信する値、互換性、default値、unknown fieldへの扱いを記述します。成功responseの例だけでなく、認証、権限、入力、対象不存在、競合、rate limit、依存先障害など代表的な失敗responseも載せるとclientの分岐を設計できます。エラー形式を既存サービスで標準化しているなら、その形式を再利用し、APIごとに別の構造を作らないようにします。

互換性と二重送信を設計に入れる

作成・決済・予約など、同じrequestを再送すると副作用が重なる処理は、timeout後のretryを想定します。idempotency keyを使うか、重複検出をどう行うか、同じkeyでpayloadが異なる場合にどうするかを定義します。すべてのPOSTで同じ仕組みが必要とは限りませんが、再送した場合の結果を未定義にしないことが重要です。

APIを変更するときは、既存clientが依存しているfield、error、順序、authentication、paginationの意味を先に確認します。追加fieldでも厳密schemaのclientでは破壊になる場合があり、削除や型変更は当然互換性リスクになります。versionを増やす前に、互換な拡張として実現できるか、移行期間やdeprecationが必要かを整理します。新しいendpointを作るなら、利用者、旧経路との並存期間、移行完了の判定も含めます。

認証・認可・データ露出

API設計では「誰か分かる」認証と「この操作をしてよい」認可を別々に定義します。利用者が自分の注文を見られることと、任意の注文をIDで取得できることは異なります。roleやtenant境界があるなら、一覧検索、個別取得、更新、exportで同じ境界を維持するか確認します。AIには認可表の叩き台を作らせても、resource ownershipやadmin例外は正本のpolicyに基づいて人が決めます。

request/responseへsecret、内部stack trace、不要な個人情報を含めないようにします。ログで何を記録するか、相関IDをどう渡すか、payloadをどこまで記録するかも設計対象です。rate limit、timeout、retry、外部依存障害時のfallbackを記載し、失敗が成功のように見える設計を避けます。これらの条件はシステムごとに異なるため、AIが作った標準らしい値をそのまま仕様にしません。

OpenAPIをレビュー可能な完成物にする

OpenAPIはHTTP APIのinterfaceを記述する仕様です。AIへ生成を頼む場合は、先にoperation表とschema案を確定し、その表からpathsやcomponentsへ変換させます。生成後にYAML/JSONとしてparseできること、operationIdが重複しないこと、参照が解決できること、responseが各operationに対応することを検証します。仕様ファイルがparseできることは、API実装が正しいことやsecurityが十分なことを意味しません。

レビューでは、各user actionから該当operationを逆引きできるか、必要なerrorが欠けていないか、同一概念のfield名や日付形式が揃っているかを見ます。APIを使う側が曖昧な独自解釈をしなくて済むかが基準です。表だけでなく、少数の具体的なrequest/response例を用意すると、nullableやエラー条件の認識差が表面化します。例は仕様に合う検証済みの値を使い、実在のtokenや個人dataを含めません。

小さな設計レビュー表

API案をreviewするとき、operationごとに以下を埋めます。

表は横にスクロールできます

確認欄問い
利用者と権限誰が、どのresourceへ、何をしてよいか
入力境界必須値、範囲、形式、未知fieldの扱い
成功契約status、response schema、識別子、状態変化
失敗契約validation、権限、未発見、競合、依存先失敗
再試行同じrequestを再送したときの結果
互換性既存clientへの影響、移行方法
運用log、相関ID、rate limit、timeout、監視

この表に答えられない項目は、空欄をAIに埋めさせず「未決定」として設計者に返します。特にsecurityとdata retentionは、コード生成で決めてはいけません。

AIものさしの判断

AIをAPI設計に使うなら、最初の生成物はendpoint一覧ではなく、action・resource・権限・contractの対応表です。そこからrequest/response、error、compatibilityを埋め、最後にOpenAPIへ落とします。RESTやversioningを先に決めるのではなく、既存clientとJobに必要なdataを満たし、変更の影響を検証できる設計を選んでください。

最後に最低限の確認を通す

AIの候補を仕様書へ取り込む前に、表の各operationが利用者の操作へ対応しているか、各fieldに定義と例があるか、成功と失敗の双方をclientが扱えるかを確認します。生成されたOpenAPI文書はvalidatorでparseし、参照切れやoperationの重複を検査できます。ただしvalidatorが示すのは文書構造の一部で、認可や業務上の正しさではありません。API ownerは代表的な利用場面を実装者と一緒に確認し、未決定のpolicyを仕様へ混ぜないようにします。

引用・データ出典

公式情報を編集部が見た内容です。Hands-on未実施の記述は本文かここに分けています。

確認日:2026年10月8日

OpenAPI Specification 3.1.(新しいタブで開く)2

OpenAPI Specification:Paths Objec(新しいタブで開く)t

次に読む・使う

この記事の次に必要な情報へ進めます。