アプリ/フロント基盤

OpenAPIとは|面の変え方5通りのうち、古い呼び手が読めるのは2通りだけだった

何を記述する規格なのか記述から何を作れるのか面を変えると何が起きるのか

面の変え方を5通り並べると、古い呼び手が読めるのは2通りだけでした。

途中に項目を足すと、位置で読む形では5項目のうち3項目がずれます。記述があれば、これを先に検出できます。

この記事の要点

  • 読めるのは2通り
  • 途中に足すと3項目ずれる
  • 記述から呼び手も作れる
  • 確認を足すと99.9%検出

記述1つから、文書も呼び手も検査も作れる

人と機械の両方が読める形で書きます。だから、同じ記述から複数の道具を作れます。

OpenAPIが定めるのは、面の記述の書き方です。仕様は自らをこう定義しています。

OpenAPIの仕様は、HTTPの面に対する、標準の、プログラミング言語に依らない面の記述を定める。これにより、人も機械も、原始の記述や追加の文書、通信の中身を調べることなく、あるサービスの能力を見つけて理解できるという記述です。

「人も機械も」が要点です。機械が読めるので、そこから道具を作れます

作れるもの

仕様は用途を列挙しています。記述は、面を表示する文書の生成の道具、さまざまな言語で受ける側と呼ぶ側を生成する道具、検査の道具、その他多くの用途に使えるという記述です。

  1. 文書。記述から生成するので、実装とずれない
  2. 呼ぶ側の記述。手で書かないので誤りが減る
  3. 受ける側の骨格。項目の検査を自動で入れられる
  4. 検査の道具。実際の応答が記述と合うか確かめる

4番目が、この記事で数える部分です。記述があれば、合っているかを機械が確かめられます

何を書くか

仕様は記述の呼び名も定めています。OpenAPIの記述は、ある面の表面とその意味を形式的に記述するという説明です。

「表面と意味」の両方です。項目の名前と型だけでなく、必須かどうかや値の範囲まで書けます

出典OpenAPI Initiative「OpenAPI Specification」2026-08-18 確認
The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic.
原文OpenAPI Initiative「OpenAPI Specification」 この内容の有効期限2027-02-18

面の変え方5通りのうち、古い呼び手が読めるのは2通りだけ

記述があっても、変え方の制約は消えません。読めるかどうかは足す位置で決まります。

OpenAPIの記述は、面の形を固定します。仕様はOpenAPIの記述は、ある面の表面とその意味を形式的に記述すると述べています。

固定した形を変えると、古い呼び手が読めなくなることがあります。変え方ごとに整理しました。

変え方ごとの影響

text
形を先に決めておく方式で、あとから項目を変えた場合
古い読み手が新しい記録を読めるかを整理する

変え方              古い読み手  理由
末尾に項目を足す                   読める  知らない項目を飛ばせる形なら
途中に項目を足す                  読めない  位置で読む形では、以降がすべてずれる
項目名を変える                   読めない  名前で引く形では見つからなくなる
項目を消す                     読めない  必須として読んでいれば失敗する
既定値つきで足す                   読める  古い記録にはその値が入っているものとして扱える

読めるのは2通りです。末尾に足すか、既定値つきで足すかです。

読めるのは末尾に足す場合と、既定値つきで足す場合だけ。

充足 2 / 4末尾に項目を足している知らない項目を飛ばせる形なら、古い呼び手も読める既定値つきで足している古い記録にはその値が入っているものとして扱える途中に項目を足している位置で読む形では、5項目のうち3項目がずれる項目名を変えている名前で引く形では見つからなくなる面の記述どうしを比べれば、この判定は機械が出せる。手で読む必要はない。
図1 ── 面を変えるときの点検項目

途中に足した場合の影響も数えました。5項目のうち3項目がずれます。

記述があれば先に分かる

この表の判定は、記述どうしを比べれば機械が出せます。手で読む必要がありません。

つまり記述の値打ちは、書くことではなく比べられることにあります。前の版との差から、壊れる変更を見つけられます。

同じ考え方を、表の列に対して適用したのがデータ契約の記事です。形が変わらないまま意味だけ変わる場合は、どちらでも検出できません。

出典OpenAPI Initiative「OpenAPI Specification」2026-08-18 確認
An OpenAPI Description (OAD) formally describes the surface of an API and its semantics.
原文OpenAPI Initiative「OpenAPI Specification」 この内容の有効期限2027-02-18

確認を足していくと、検出率が段で上がる

記述は検査の基準になります。ただし、確認を落とした分はそのまま通り抜けます。

OpenAPIで正しく定義されていれば、呼ぶ側の実装は軽くなります。仕様はOpenAPIによって適切に定義されていれば、利用する側は最小限の実装の論理で、離れたサービスを理解しやりとりできると述べています。

「適切に定義されていれば」が前提です。定義と実際が合っているかは、別に確かめることになります。

確認を1つずつ足す

確認を足したときに何が止まるかを、別の題材で数えた結果が参考になります。券5000枚のうち1983枚に細工をした場合です。

text
券 5000枚。うち細工したもの 1983枚(39.7%)
確認を1つずつ足していったときに、何枚を止められるか

足した確認                    止めた枚数  正しく止めた  誤って止めた  検出率
形として読めるか                            0枚            0枚            0枚     0.0%
署名の方式が想定通りか                       287枚          287枚            0枚    14.5%
署名が合っているか                         844枚          844枚            0枚    42.6%
発行元が合っているか                       1119枚         1119枚            0枚    56.4%
宛先が自分か                           1397枚         1397枚            0枚    70.4%
期限が切れていないか                       1668枚         1668枚            0枚    84.1%
合言葉が使い回しでないか                     1982枚         1982枚            0枚    99.9%

確認を足すごとに、検出率が段で上がります。落とした確認の分は、そのまま通ります。

面の検査でも同じ形になります。必須の項目、型、値の範囲、余分な項目を、それぞれ確かめるかどうかで通る量が変わります。

記述から自動で確かめる

手で書いた検査は、面が変わると古くなります。記述から生成すれば、面と一緒に更新されます

確かめる先は2つです。受ける側の応答と、呼ぶ側の要求の両方を、記述と突き合わせます。

余談 この計測での注意

面の変え方の表は、位置で読む形を前提に整理したものです。名前で引く形では、途中に足しても既存の項目は見つかります。確認を足したときの検出率は、面の検査ではなく引換券の検証を題材にした別の計測で、確認と細工が1対1で対応する形にしてあります。ここで見せているのは、記述があっても変え方の制約は消えないこと、確認を落とした分はそのまま通ることの2つです。

出典OpenAPI Initiative「OpenAPI Specification」2026-08-18 確認
When properly defined via OpenAPI, a consumer can understand and interact with the remote service with a minimal amount of implementation logic.
原文OpenAPI Initiative「OpenAPI Specification」 この内容の有効期限2027-02-18

よくある質問

OpenAPIは何を記述しますか
面の形と意味です。呼び出せる操作と、やりとりする値の形を、機械が読める形で書きます。
記述から何が作れますか
文書、受ける側と呼ぶ側の記述、検査の道具です。仕様も、これらの用途を挙げています。
面を変えると何が起きますか
変え方によります。末尾に足すか既定値つきで足す場合だけ、古い呼び手が読めました。
検査にはどう使いますか
記述と実際の応答を突き合わせます。確認を足していくと、この計測では99.9%まで検出できました。

まとめ

  • 面を機械が読む形で書く
  • 記述から道具が作れる
  • 変え方で壊れるかが決まる
  • 記述は検査の基準にもなる

今日から始められること

  1. いまの面が記述されているか確かめる
  2. 記述と実際の応答が一致するか試す
  3. 面を変えるときの規則を決める
  4. 変更の検出を自動化する

実務で組んだOpenAPIのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る