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

APIバージョニング とは?

💡 古い「注文書」も使えるように、バージョンを分けて管理する仕組み
📌 このページのポイント
APIバージョニング ― 新旧バージョンの共存 APIサーバー /v1/users 既存API(安定版) /v2/users 新API(機能追加) /v3/users 最新API(開発中) 既存アプリA v1を継続利用 既存アプリB v1を継続利用 新規アプリ v2を採用 ✓ 後方互換性を維持 既存クライアントが壊れない ✓ 段階的な移行 新バージョンへ順次切替 ✓ 古い版の廃止予告 Deprecation通知で移行促進
バージョン別エンドポイントで既存・新規クライアントが共存
ひよこ ひよこ

APIってバージョン管理が必要なの?

ペンギン先生 ペンギン先生

APIを公開したあとに「このフィールドをなくしたい」「レスポンスの形を変えたい」と思っても、すでに使っているクライアントが壊れてしまうんだ。バージョニングをしておけば古いクライアントはv1を使い続けて、新しい機能はv2に移行する、という対応ができるよ。

ひよこ ひよこ

URLにバージョンを入れる方法ってどんな感じ?

ペンギン先生 ペンギン先生

`/api/v1/users` と `/api/v2/users` みたいにパスにバージョン番号を入れるのが一番分かりやすくて多くのAPIで使われているよ。他にも `?version=2` のクエリパラメータや、`Accept: application/vnd.api+json;version=2` というHTTPヘッダーで指定する方式もあるんだ。

ひよこ ひよこ

どの方式が一番いいの?

ペンギン先生 ペンギン先生

URLパス方式が最も分かりやすくてキャッシュもしやすい。ヘッダー方式はURLが汚れないけどブラウザで直接試しにくい。それぞれトレードオフがあるから、チームの用途に合わせて選ぶんだよ。

ひよこ ひよこ

古いバージョンのサポートはいつ終わらせればいいの?

ペンギン先生 ペンギン先生

ここが実際の運用で一番難しいんだよ。「v1は〇月〇日で廃止します」と告知しても、使い続けるクライアントがいることが多くて、廃止しきれないことがある。一般的には非推奨(deprecated)の期間を設けて、移行ガイドを作り、APIのレスポンスに「この版は廃止予定です」というヘッダーを付ける。社内APIでも外部APIでも「古いバージョンがいつまでも残る」問題は世界中で起きていて、セマンティックバージョニングの思想と組み合わせてライフサイクルを明文化することが大切だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
APIバージョニング」って出てきたら「既存の利用者を壊さずにAPIを変更するための、バージョン管理の設計方法だな」と思えばだいたいOK!
📖 おまけ:英語の意味
「API Versioning」 = APIのバージョン管理
💬 「Versioning」はバージョンを付けて管理すること。ソフトウェアのリリース管理と同様の考え方をAPIに適用したものだよ
← 用語集にもどる