【えーぴーあいばーじょにんぐ】

APIバージョニング とは?

最終更新:
💡 使う版を分けて、新しい仕様へ移る道を作る

APIの仕様を版として区別し、互換性に影響する変更と利用者の移行を管理する設計・運用。パスやヘッダーなどで版を指定する。新旧の提供期間、変更点、終了予定を伝えることも含む。

📌 このページのポイント
APIの版:移行する道を作る既存アプリ旧仕様を利用/api/v1/users旧仕様のAPI移行したアプリ変更を確認・試験/api/v2/users新仕様のAPI旧版の終了予定と、移行手順も伝えよう
パスで版を区別する架空の例。新旧の提供期間や指定方法はAPIごとに異なり、ヘッダーで版を指定する方式もあります。
ひよこ ひよこ
APIにも版が必要なの?
ペンギン先生 ペンギン先生
たとえば返却するnameという項目を削除すると、それを読むアプリが動かなくなるかもしれない。互換性に影響する変更を扱うため、旧仕様と新仕様を別の版として提供する方法があるよ。番号を付けるだけで安全になるのではなく、版ごとの約束を守ることが大切なんだ。
ひよこ ひよこ
どうやって版を選ぶ?
ペンギン先生 ペンギン先生
パスで/api/v1/usersのように示す方式や、ヘッダーで指定する方式があるよ。GoogleのAPI設計指針はRESTのパスに主要な版を含める。一方GitHubのREST APIはX-GitHub-Api-Versionヘッダーに公開日形式の版を指定する。どのAPIでも同じ書き方ではないんだ。
ひよこ ひよこ
機能を足すたびにv2、v3になる?
ペンギン先生 ペンギン先生
必ずしもそうではないよ。提供元が互換性を保てると判断した追加は、同じ版に入ることもある。GitHubの資料でも、項目の削除や型変更と、任意パラメータなどの追加を区別している。利用する側も、追加項目で壊れない扱いになっているかを確かめよう。
ひよこ ひよこ
古い版は、ずっと使える?
ペンギン先生 ペンギン先生
提供期間はAPIごとの方針次第だよ。終了予定があれば、変更点と移行手順を確認して、利用する版やアプリを更新する。非推奨の案内と、完全に停止する日は別の意味になる場合もある。既定の版に任せきりだと、その切り替えの影響を受ける可能性もあるね。
ひよこ ひよこ
新しい版に変えれば終わり?
ペンギン先生 ペンギン先生
返却される型、必須項目、認証条件などの変更を読んで、アプリが動くかテストするよ。新旧を提供する期間を使い、利用者が段階的に移れるようにする。方式の選択だけでなく、互換性の方針と終了時の案内まで含めて運用しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「APIバージョニング」って出てきたら「APIの仕様を版で区別して、利用者の移行を管理すること」と思えばだいたいOK!
📖 おまけ:英語の意味
「API Versioning」 = APIの版の管理
💬 利用するAPIの仕様を区別する話だよ。ソースコードのGit履歴や、SDKの配布バージョンとは分けて考えよう。

参考資料

← 用語集にもどる