移行

MapQuest Geocodingからの移行

MapQuest Geocodingは長く提供されてきたサービスで、それを使って構築された連携の多くは、現在の地図APIの波よりも前から存在しています。キーはMapQuestの開発者アカウントで発行され、クエリパラメータとして送信します。レスポンスはresults配列の中にネストしたlocations配列を返し、それぞれにlatLngオブジェクトと、市区町村を表すadminArea5やZIPコード・郵便番号を表すpostalCodeなどのフィールドに分かれた住所構造が含まれます。

これほど古い連携には、特有の技術的負債が潜んでいることがあります。MapQuestを呼び出すコードは、すでにチームにいない人が書いたものかもしれず、誰も下した覚えのない判断に言及したコメントが残っていることもあります。それは移行を避ける理由にはなりませんが、今移行を担当している人が既存コードを十分に理解していると決めつけず、徹底的にテストする理由にはなります。

My GeocodeのMapQuest互換ホストは、resultsとlocationsの配列構造をlatLngや住所のフィールドとともに再現しており、変わるのは著作権、利用規約、プライバシーに関する文言だけです。詳細は/compatibility/mapquest/にあります。多くの場合、ホストとキーを更新するだけで変更は完了します。ネストしたresults[0].locations[0].latLngによるアクセスも、引き続き同じ形のデータを返すはずです。

このような古い連携で作業を進める際の妥当な手順です。

  1. コードベースの中でMapQuestのホストやキーを参照しているすべての箇所を見つけます。古いコードでは、設定から読み込まずに両方をハードコードしていることがあるためです
  2. どのプロバイダーに移るかにかかわらず、まだであればそれらの参照を設定に移します
  3. 本番環境に手を付ける前に、ステージング環境を互換ホストに向け、実際の本番の住所のサンプルを旧来の結果と比較します

新しい側の認証ではX-API-Keyヘッダー、Authorization: Bearerヘッダー、HTTP Basic認証、クエリパラメータのいずれも使えるため、旧来のMapQuestキーがどのように送られていても、対応する方式があります。

料金は一律で、アカウントの料金段階を選ぶ必要はありません。キーなしで1日あたり2,500リクエストが無料、さらにキーごとにネットワーク単位でカウントされる1日あたり2,500リクエストが無料で、その後は1リクエストあたり€0.0001のプリペイドクレジット、または月額€50のUnlimitedキーとなります。この互換ホストを含むすべてのエンドポイントが同じ料金なので、古い契約で量に応じた料金段階の跳ね上がりという形で存在していた変動要素がなくなります。

何年もほとんど手をかけずに静かに動き続けてきたMapQuestの連携にとって、このような移行の目標は、移行後も同じように静かに動き続けることです。レスポンスの形も同じ、コードも同じで、裏側のホストとキーだけが変わります。