移行

Mapbox Geocodingからの移行

Mapbox Geocodingは結果をGeoJSONのFeatureCollectionとして返します。これは意図的な選択で、出力をそのままMapbox GLやGeoJSONに対応した他の地図ライブラリに渡しやすくしています。各フィーチャーにはcenterの座標ペア、place_nameの文字列、そして含まれる地域、国、郵便番号を表すcontext配列が含まれます。認証にはアクセストークンを使い、通常はクエリパラメータとして渡します。多くのチームは同じトークンをWeb地図のタイルとジオコーディングの呼び出しの両方で使っています。

1つのトークンを二重に使っている点には、移行前に注意しておく価値があります。ジオコーディングの呼び出しと地図描画の呼び出しが、アプリケーションコードの中で見た目以上に絡み合っていることが多いからです。ジオコーディングのリクエストを新しいホストに向け、地図タイルは今の場所に残せるように両者をきれいに切り分けることが、たいてい最初に下すべき本当の判断になります。

My GeocodeのMapbox互換ホストは、centerplace_namecontextの各フィールドを含むFeatureCollectionの構造を再現しているため、response.features[0].centerを前提に作られたコードは切り替え後もそのまま動作します。レスポンスのうちMapbox本来のものと異なるのは、著作権、利用規約、プライバシーに関する文言だけです。フィールドのリファレンスは/compatibility/mapbox/にあります。

この移行を行うチーム向けの実践的な注意点をいくつか挙げます。

  • フロントエンドがクライアントサイドのJavaScriptから直接Mapbox Geocodingを呼び出している場合は、どのプロバイダーに移るかにかかわらず、まずその呼び出しをサーバーサイドのプロキシに移すことを検討する価値があります。APIキーをブラウザのコードから切り離せるからです
  • 認証にはX-API-Keyヘッダー、Authorization: Bearerヘッダー、HTTP Basic認証、クエリパラメータのいずれも使えるため、既存のMapboxクライアントがアクセストークンにどの方式を使っていても、いずれかに対応するはずです
  • 結果を特定の地域に寄せるためにMapboxのproximityやバウンディングボックスのパラメータを使っている場合は、そのまま引き継がれると想定する前に、互換ホストのドキュメントで対応するパラメータ名を確認してください

料金体系からは、多くの地図プラットフォームで利用段階に応じて膨らんでいくトークンの料金段階がなくなります。ここでは、キーなしで1日あたり2,500リクエストが無料で、さらに各キーにもネットワーク単位でカウントされる1日あたり2,500リクエストの無料枠が付いています。その後は1リクエストあたり€0.0001のプリペイドクレジット、または月額€50のUnlimitedキーとなり、この互換ホストを含むすべてのエンドポイントが同じ料金です。

Mapboxはジオコーディング単体ではなく、地図タイルや静的地図画像と組み合わせて使われることが多いため、対象範囲をはっきりさせておく価値があります。My Geocodeはジオコーディング、IP、タイムゾーン、標高、郵便番号を検索するAPIであり、タイルやベースマップのプロバイダーではありません。既存の地図描画はそのままに住所検索だけを新しいホストに移すチームは、しばらくの間、タイル用とジオコーディング用の2つのプロバイダーを並行して使うことになると考えてください。これは急いで解消すべき一時的な状態ではなく、作業を分担する一般的で安定したやり方です。