移行

ジオコーディングだけのためにMapboxの静的地図とタイルから移行する

Mapboxはセットとして導入されることがよくあります。ジオコーディング、静的地図画像、ベクタータイル、Mapbox GLの描画ライブラリが、すべて1つのアクセストークンと1つのアカウントの下にあります。プロジェクトに地図の機能一式が必要な場合、このまとめ方は理にかなっていますが、範囲を絞った移行を難しくします。ジオコーディングのプロバイダーだけを変えたいチームが、ジオコーディングの呼び出しと地図描画のコードで設定やトークン、さらには同じリクエストのラッパー関数まで共有していることに気づくかもしれないからです。

この種の移行の本当の最初のステップは、技術的なものではなく、範囲の決定です。地図タイルと静的地図画像はMapboxに残し、ジオコーディングの呼び出しだけを他に移すと明確に決めておくことで、よくある失敗を避けられます。境界があいまいなまま移行を始め、両方の関心事に関わるコードを中途半端に変更してしまうという失敗です。

My Geocodeはジオコーディング、IP、タイムゾーン、標高、郵便番号を検索するAPIです。地図タイルや静的地図画像は描画しないため、Mapbox連携のその部分の代わりにはならず、代わりになるのは住所検索の部分だけです。Mapbox互換ホストは、Mapbox Geocodingが返すGeoJSONのFeatureCollectionの構造を、centerplace_namecontextの各フィールドも含めて再現しており、違いは著作権、利用規約、プライバシーに関する文言だけです。詳細なリファレンスは/compatibility/mapbox/にあります。

切り離しのための実践的な手順です。

  • コードベースの中でMapboxのアクセストークンが読み込まれているすべての箇所を見つけ、それぞれの呼び出し箇所がジオコーディング、タイルの描画、またはその両方のどれを行っているかを判断します。ラッパー関数の中には、これまでの経緯から住所検索と地図のプレビューを1回の呼び出しにまとめているものがあるためです
  • ジオコーディング専用の呼び出しを、別のホストの別のキーを使うように移し、タイルと静的地図の呼び出しは既存のトークンのまま変更せずにMapboxに向けておきます
  • フロントエンドの地図コンポーネントが、ジオコーディングの結果と地図タイルが同じ座標参照系や投影法の規則に基づくと想定していないかを確認します。問題になることはまれですが、手早く確認しておく価値があります

ジオコーディング互換ホストの認証は、キーをX-API-KeyAuthorization: Bearer、HTTP Basic認証、クエリパラメータのいずれかで送る形で動作します。キーなしで1日あたり2,500リクエストが無料、さらにキーごとにネットワーク単位でカウントされる1日あたり2,500リクエストが無料で、その後は1リクエストあたり€0.0001のプリペイドクレジット、または月額€50のUnlimitedキーとなり、このホストを含むすべてのエンドポイントに同じ料金が適用されます。

地図描画用と住所検索用の2つのプロバイダーを並行して使うのは、解消すべき一時的な状態ではなく、長期的に安定した構成です。多くの本番アプリケーションが、地図とジオコーディングを意図的に別々のベンダーに分けています。2つの機能はコストを左右する要因も技術的な要件も異なり、最初にそうだったからといって1つのアカウントにまとめる義務はありません。