サイトのAPI図鑑B版
掲載情報が正確でない可能性があります。
API基礎・入門

APIバージョン管理の方法とベストプラクティス【後方互換性の保ち方】

URLパス・ヘッダー・クエリパラメーターによるAPIバージョニングの方法と選び方、後方互換性の保ち方、廃止(Deprecation)の進め方を実践的に解説します。

#APIバージョニング#後方互換性#API設計#Deprecation

なぜAPIバージョン管理が必要か

APIは一度公開すると、多くのサードパーティアプリケーションや社内システムが依存します。機能改善・セキュリティ対応・設計の見直しによって既存の動作を変更する必要が生じたとき、バージョン管理の仕組みがなければすべての利用者のシステムが一斉に壊れる危険性があります。適切なバージョン管理によって、既存の利用者に影響を与えながら新しい機能を安全に提供できます。

APIバージョニングの方式

1. URLパスバージョニング(最も一般的)

バージョン番号をURLパスに含める方式です。

  • 例:https://api.example.com/v1/users、https://api.example.com/v2/users

メリットは直感的でデバッグしやすく、ブラウザのアドレスバーやcurlコマンドで簡単に確認できることです。ほとんどのAPIゲートウェイでルーティング設定も容易です。デメリットはURLが「純粋なリソース識別子」でなくなることで、REST原則から外れるという意見もあります。実用性を重視する観点では最も広く採用されています。

2. リクエストヘッダーバージョニング

カスタムヘッダーにバージョンを指定する方式です。

  • 例:Accept: application/vnd.myapi.v2+json
  • 例:X-API-Version: 2

URLをクリーンに保てますが、curlやブラウザでのテストが手間になります。MicrosoftのREST API Guidelainesでも推奨されており、大規模なエンタープライズAPIで採用されています。

3. クエリパラメーターバージョニング

クエリパラメーターにバージョンを指定する方式です。

  • 例:https://api.example.com/users?version=2

URLパスを変えずにバージョンを指定できます。ただし、クエリパラメーターはキャッシュの挙動に影響することがあります。

後方互換性を保つためのルール

新しいバージョンを発行せずに変更を加えられる「後方互換性のある変更」と、新バージョンが必要な「破壊的変更」を区別することが重要です。

後方互換性のある変更(マイナー・パッチ変更)

  • 新しいオプショナルフィールドの追加(既存クライアントは無視できる)
  • 新しいエンドポイントの追加
  • 新しいオプショナルリクエストパラメーターの追加
  • レスポンスのフィールドに新しい値の追加(enumの拡張)

破壊的変更(メジャーバージョンアップが必要)

  • 既存フィールドの削除・名前変更
  • フィールドのデータ型変更(string→integer等)
  • 必須パラメーターの追加
  • エンドポイントのURLの変更
  • HTTPステータスコードの変更
  • 認証方式の変更

API廃止(Deprecation)の進め方

古いバージョンのAPIを廃止する際は、利用者への影響を最小化するため段階的なプロセスが重要です。

  1. 廃止予告(Deprecation Notice):廃止予定日を告知する。レスポンスヘッダーにDeprecationやSunsetヘッダーを追加して機械的に検知できるようにする
  2. 移行ガイドの提供:旧バージョンから新バージョンへの移行手順を詳細にドキュメント化する
  3. 移行支援期間の設定:最低6ヶ月から1年の移行期間を設ける
  4. 利用状況のモニタリング:旧バージョンのAPIトラフィックをモニタリングし、利用が続いているユーザーに個別連絡する
  5. 廃止実施:廃止日以降のリクエストに410 Goneを返すか、新バージョンにリダイレクトする

バージョニングの現場での設計パターン

パターン1:メジャーバージョンのみ管理

v1・v2のようなメジャーバージョンのみをURLに含め、マイナー変更は後方互換を保ちながら同一バージョン内に取り込む。最も一般的なパターンです。

パターン2:日付ベースバージョニング

Stripeが採用している方式で、2024-01-15のような日付をバージョンとして使います。「どの時点の仕様か」が明確でメジャーバージョンの意味が曖昧にならないメリットがあります。

まとめ

APIバージョン管理は「利用者との長期的な信頼関係」を保つための重要な仕組みです。最初からバージョニング戦略を設計に組み込み、後方互換性のルールを明確にし、廃止プロセスを丁寧に進めることで、利用者が安心してAPIを使い続けられる環境を提供できます。

よくある質問

Q.セマンティックバージョニングとAPIバージョニングは同じですか?

異なります。セマンティックバージョニング(SemVer)はソフトウェアリリースのバージョン番号規則で、MAJOR.MINOR.PATCHの形式です。APIバージョニングは外部公開APIの後方互換性を管理するためのバージョン番号体系で、多くの場合v1・v2のようなメジャーバージョンのみを公開します。

Q.後方互換性のある変更と非互換の変更はどのように区別しますか?

後方互換性のある変更(追加変更)の例:新しいフィールドの追加、新しいエンドポイントの追加、オプショナルパラメーターの追加。後方互換性を壊す変更の例:既存フィールドの削除・名前変更、必須パラメーターの追加、レスポンスの構造変更、HTTPステータスコードの変更。

Q.APIを廃止するときにどのくらいの告知期間が必要ですか?

一般的に最低6ヶ月から1年の移行期間を設けることが推奨されます。エンタープライズ向けAPIや多くのユーザーに利用されているAPIでは、それ以上の期間が必要な場合もあります。廃止予定の告知はドキュメント・メール・Deprecatedヘッダーを通じて行います。

関連記事