面の変え方を5通り並べると、古い呼び手が読めるのは2通りだけでした。
途中に項目を足すと、位置で読む形では5項目のうち3項目がずれます。記述があれば、これを先に検出できます。
人と機械の両方が読める形で書きます。だから、同じ記述から複数の道具を作れます。
OpenAPIが定めるのは、面の記述の書き方です。仕様は自らをこう定義しています。
OpenAPIの仕様は、HTTPの面に対する、標準の、プログラミング言語に依らない面の記述を定める。これにより、人も機械も、原始の記述や追加の文書、通信の中身を調べることなく、あるサービスの能力を見つけて理解できるという記述です。
「人も機械も」が要点です。機械が読めるので、そこから道具を作れます。
仕様は用途を列挙しています。記述は、面を表示する文書の生成の道具、さまざまな言語で受ける側と呼ぶ側を生成する道具、検査の道具、その他多くの用途に使えるという記述です。
4番目が、この記事で数える部分です。記述があれば、合っているかを機械が確かめられます。
仕様は記述の呼び名も定めています。OpenAPIの記述は、ある面の表面とその意味を形式的に記述するという説明です。
「表面と意味」の両方です。項目の名前と型だけでなく、必須かどうかや値の範囲まで書けます。
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
記述があっても、変え方の制約は消えません。読めるかどうかは足す位置で決まります。
OpenAPIの記述は、面の形を固定します。仕様はOpenAPIの記述は、ある面の表面とその意味を形式的に記述すると述べています。
固定した形を変えると、古い呼び手が読めなくなることがあります。変え方ごとに整理しました。
形を先に決めておく方式で、あとから項目を変えた場合 古い読み手が新しい記録を読めるかを整理する 変え方 古い読み手 理由 末尾に項目を足す 読める 知らない項目を飛ばせる形なら 途中に項目を足す 読めない 位置で読む形では、以降がすべてずれる 項目名を変える 読めない 名前で引く形では見つからなくなる 項目を消す 読めない 必須として読んでいれば失敗する 既定値つきで足す 読める 古い記録にはその値が入っているものとして扱える
読めるのは2通りです。末尾に足すか、既定値つきで足すかです。
読めるのは末尾に足す場合と、既定値つきで足す場合だけ。
途中に足した場合の影響も数えました。5項目のうち3項目がずれます。
この表の判定は、記述どうしを比べれば機械が出せます。手で読む必要がありません。
つまり記述の値打ちは、書くことではなく比べられることにあります。前の版との差から、壊れる変更を見つけられます。
同じ考え方を、表の列に対して適用したのがデータ契約の記事です。形が変わらないまま意味だけ変わる場合は、どちらでも検出できません。
An OpenAPI Description (OAD) formally describes the surface of an API and its semantics.原文OpenAPI Initiative「OpenAPI Specification」 この内容の有効期限2027-02-18
記述は検査の基準になります。ただし、確認を落とした分はそのまま通り抜けます。
OpenAPIで正しく定義されていれば、呼ぶ側の実装は軽くなります。仕様はOpenAPIによって適切に定義されていれば、利用する側は最小限の実装の論理で、離れたサービスを理解しやりとりできると述べています。
「適切に定義されていれば」が前提です。定義と実際が合っているかは、別に確かめることになります。
確認を足したときに何が止まるかを、別の題材で数えた結果が参考になります。券5000枚のうち1983枚に細工をした場合です。
券 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つです。
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
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る