API設計は、ソフトウェアの土台を作る作業です。設計を整えておくと、開発の見通しが立てやすくなり、他チームとの連携もしやすくなります。本記事では、HTTPの標準(RFC 9110)とRESTの考え方を参照しながら、基本の5つのステップを紹介します。なお、命名規則や進め方には、筆者の提案を含みます。要点は「要件を正しく理解し、契約としてのAPIを定義する」「仕様を共有して共通認識を作る」「実装とテストで信頼性を担保する」です。

この記事の根拠と限界(2026年10月29日確認)
- HTTPメソッドとステータスコードの説明は、IETF の RFC 9110(2022年)と RFC 5789 の原文を開いて確認した内容にもとづきます。節番号を付けています。
- RESTの定義、OpenAPI、Pact については、それぞれの公式ページを開いて確認しました(参考文献の一覧を参照)。
- 5つのステップの分け方、命名のルール、チェックリスト、学習の進め方は、筆者の整理・提案です。標準や調査で裏づけられたものではありません。
- 運営者が実際のプロジェクトでこの手順を使った記録は、この記事にはありません。
5ステップの全体像
- ステップ1:要件の理解と目的の定義
- ステップ2:API契約の設計と命名規則
- ステップ3:仕様の文書化と共通理解の形成
- ステップ4:実装とテスト戦略
- ステップ5:デプロイと運用・改善サイクル
この5ステップを回すと、個々の機能が「何を提供し、誰がどう使い、どう動くべきか」が明確な契約になります。契約があると、実装の判断に迷いにくくなり、変更が必要になったときも影響範囲を把握しやすくなります。API設計の背景には、REST(Representational State Transfer)というアーキテクチャスタイルがあります。RESTは、ロイ・フィールディング(Roy Fielding)が2000年の博士論文「Architectural Styles and the Design of Network-based Software Architectures」で定義した概念です。
ステップ1:要件の理解と目的の定義
※このステップの進め方は筆者の提案です。標準や調査で裏づけられたものではありません。
- ドメイン理解を深める
- そのAPIが解決するビジネス課題は何かを言語化します。誰が使うのか、どのデータが必要か、成功の指標は何かを整理しましょう。
- 利用者・クライアント要件の整理
- どのクライアント(モバイル、ウェブ、サードパーティ)にどう使われるかを想定します。最小限の機能から優先度を決め、後追いで拡張する設計を心がけましょう。
- 成果物の定義
- API契約書(OpenAPI仕様書)、データモデル図、例リクエスト/レスポンス、エラーハンドリング方針を「成果物リスト」として定義します。
- 具体例を作る
- 「ユーザー登録」や「注文のステータス取得」など、実務でよくあるユースケースを仮設して、要件を1つのページに落とし込みます。
ステップ2:API契約の設計と命名規則
- エンドポイント設計の原則
- REST寄りならリソース指向・直感的なパス設計を心がけます。例: /users、/orders、/products のように名詞中心に。
- 命名ルールの統一
- 動詞をエンドポイントに含めず、HTTPメソッドで操作を表現するのが基本です(ログインのように、リソースの操作で表しにくいものは、POST /auth/login のように動詞を含めて設計する例もあります)。リソース名は複数形、必要に応じてクエリパラメータやサブリソースでカスタム操作を表現します。
- HTTPメソッドとステータスコードの標準
- HTTPメソッドの意味とステータスコードの分類は、IETF の標準文書で規定されています。現在の正式な規定は2022年発行の RFC 9110(HTTP Semantics)で、2014年の RFC 7231 などを置き換えたものです。独自のルールを作る前に、まずこの標準に合わせると、他チームとの連携がしやすくなります。
- ステータスコードの分類は、RFC 9110 の第15章にあります(2xx は15.3節、4xx のクライアントエラーは15.5節、5xx のサーバーエラーは15.6節)。
- 主なメソッドについて、RFC 9110 の規定の要点を表にまとめます。「安全」は読み取り専用の意味、「冪等」は同じリクエストを複数回送っても、サーバーへの意図した効果が1回の場合と同じであることを指します。
メソッド 定義の節 安全 冪等 規定の要点 GET RFC 9110 9.3.1 はい はい 対象リソースの現在の表現の転送を要求する POST RFC 9110 9.3.3 いいえ いいえ リソース固有の意味にしたがって、本文の表現を処理させる。新しいリソースの作成は用途の一例 PUT RFC 9110 9.3.4 いいえ はい 対象リソースの状態を、本文の表現で作成または置き換える DELETE RFC 9110 9.3.5 いいえ はい 対象リソースと、その現在の機能との関連づけの削除を要求する PATCH RFC 5789 いいえ 一般にはいいえ(設計次第で冪等にできる) RFC 5789 は PATCH を「安全でも冪等でもない」(RFC 2616 の定義上)としつつ、冪等になるように発行することもできる、と書いている(RFC 9110 ではなく別の文書で定義) - 表の「安全」「冪等」は、RFC 9110 の9.2.1節(安全なメソッドは GET・HEAD・OPTIONS・TRACE)と9.2.2節(冪等なのは PUT・DELETE と安全なメソッド)で規定されています。「PUT は更新」「POST は作成」と覚えるより、PUT は「作成または置き換え」、POST は「リソース側の意味に従った処理」と理解したほうが、原文に近くなります。
- OpenAPI/Swaggerの活用
- OpenAPI Specification(OpenAPI Initiative が公開している仕様)を使い、API契約を機械可読で共有可能な形にします。サンプルリクエスト/レスポンス、エラーフォーマット、バージョン情報を含め、検討の土台とします。
- 具体例
- ユーザー情報の取得は GET /users/{id}、新規作成は POST /users、認証は POST /auth/login のように、命名と設計を標準に合わせて統一します。
ステップ3:仕様の文書化と共通理解の形成
※このステップの進め方は筆者の提案です。標準や調査で裏づけられたものではありません。
- 仕様の文書化
- OpenAPIを使い、エンドポイントごとのリクエスト/レスポンス、必須項目、エラーコードを明示します。実装者だけでなくフロント側・QAとも共有して「ここが分かれば動く」という共通言語を作ります。
- 例とエラー定義の共有
- 成功時のレスポンス例、エラー時のステータスコードと意味、フィールドの制約(必須/最大長など)をテンプレとして用意します。
- 共通理解の形成
- レビュー会で「このAPIはこう使うべきだ」という合意を得る場を設けます。
- ドキュメントツールの活用
- チームで利用するドキュメント場所を1つに集約し、更新履歴を残します。CI/CDの段階でOpenAPI定義と実装が一致しているかを自動チェックする方法もあります(一例)。
ステップ4:実装とテスト戦略
- 実装時のポイント
- 最小実装で回す「はじめの一歩」を作って、後から機能追加やパフォーマンス改善を進めます。過剰な最適化は初期段階の遅延になるため避けましょう。
- ユニット/結合テスト
- 各エンドポイントの挙動を個別に検証します。境界値・エラーハンドリング・異常系の検証を含め、堅牢性を高めます。
- 契約テストの活用
- 契約テストは、各アプリケーションを個別にテストし、送受信するメッセージが共有の理解に合っているかを確かめる手法です(Pactのドキュメントによる)。Pact(pact.io)は、利用側(コンシューマー)が期待するやり取りから契約を生成する「コンシューマー駆動契約テスト(Consumer-Driven Contract Testing)」のためのツールです(Pact Docs では「コードファーストのコンシューマー駆動契約テストツール」と説明されています)。なお、OpenAPIの定義と実装が一致しているかを確かめる「スキーマの検証」は、これとは別のアプローチです。
- テスト環境の整備
- モック/スタブ、デモデータ、CIの自動実行など、開発者がすぐに回せる環境を整備します。
ステップ5:デプロイと運用・改善サイクル
※このステップの進め方は筆者の提案です。標準や調査で裏づけられたものではありません。
- デプロイの手順
- 本番移行を段階的に行い、段階ごとに監視とロールバックの準備をする進め方があります。デプロイ前後のチェックリストを用意しておく例もあります。
- モニタリングと運用
- レスポンス時間、エラー率、利用状況を観測します。異常があれば即座に対応できるよう、閾値と通知ルールを設定します。
- バージョニングと後方互換性
- 新機能の追加を新しいバージョンで提供し、旧バージョンのサポート期間を設けて徐々に移行する方法があります(互換性を保てる変更であれば、同じバージョンで提供する場合もあります)。後方互換性を破る変更は事前告知と移行案内を必須にします。
- 改善の回し方
- 実運用で見つかった課題を、次のスプリントで解決するサイクルを確立します。
実践ポイント
- 最初に取り組めるチェックリスト
- 要件を1ページに要約する
- API契約をOpenAPIで初期ドラフトに落とす
- HTTPメソッドの使い分けをRFC 9110のメソッド定義に沿って設計する
- サンプルリクエスト/レスポンスとエラーレスポンスを用意する
- 契約テストの方針を1つ決め、実装と並行して回す
- ツールの例
- OpenAPI/Swagger、Postman、GitHub Actionsを使ったCI/CD、契約テスト用のPactなど。手元の環境に合わせて組み合わせを決めましょう。
まとめ・次のアクション
- 今すぐ取り組む第一歩
- あなたが関わるサービスのAPI契約のドラフトを1つ作成し、同僚と共有して共通理解を得ることから始めましょう。
- 学習の進め方(筆者の例)
- この日数は標準や調査にもとづくものではなく、筆者の例です。計画の例:最初の2週間でOpenAPIの基本を学び、3週間目までに1つのエンドポイントの契約テストを回す。4週間目にはデプロイ手順とモニタリングの基本を整えます。
参考文献・出典(2026年10月29日確認)
- Roy T. Fielding, “Architectural Styles and the Design of Network-based Software Architectures,” PhD dissertation, UC Irvine, 2000(RESTの原典)原文
- IETF RFC 9110, “HTTP Semantics,” 2022(RFC 7231 などを置き換え。HTTPメソッド・ステータスコードの標準)原文
- IETF RFC 5789, “PATCH Method for HTTP,” 2010 原文
- OpenAPI Initiative, OpenAPI Specification(HTTP APIを記述するための仕様)仕様
- Pact Docs — 契約テスト(contract testing)の説明とツール docs.pact.io
あわせて読みたい記事
小さな単位で設計する・読むという点で、次の3本とつながります。
- UNIX哲学入門:1978年の原典で確かめる、小さく作って組み合わせる設計の考え方(小さな部品の設計)
- コードリーディングの基本技法:トップダウンとボトムアップ、kiloを題材にした5日間の練習計画(コードを読む)
- Grace Hopperの「最初のバグ」を所蔵記録で確かめる:記録が述べていること、述べていないこと(不具合の記録)
この記事の内容について質問はありますか?




