ユースケース

距離順に並べる店舗検索を作る

ほとんどの店舗検索は、地図の見た目をした一覧にすぎません。買い物客は州を選び、次に都市を選び、実際にどの拠点が一番近いかとは何の関係もないアルファベット順の一覧をスクロールします。数十店舗を展開するある家庭用品チェーンは、それは本末転倒だと判断し、代わりに距離を軸にツールを作り直しました。

作り直しは入力から始まりました。新しい検索では、買い物客にドロップダウンから選ばせる代わりに、住所や地区名を入力し始めると、/v1/autocompleteを使って入力に合わせて候補を表示するようにしました。このエンドポイントは住所の一部を受け取り、まさにこの種のリアルタイム検索ボックスに合った形で候補を返します。そのため、「Oak」と入力した買い物客には、住所全体を入力して店舗のデータベース内の何かと一致することを祈る代わりに、選択できる実在の通りや場所の名前の短い一覧が表示されます。

買い物客が候補を選ぶか、ページがおおよその位置を使うことを許可すると、チェーンにはもう1つ必要なものがありました。座標で表した出発地点です。住所を入力した買い物客の場合、それは選ばれた候補を/v1/forwardでジオコーディングすることで得られました。このエンドポイントは、指定した住所に対して緯度と経度のフィールドを含む位置の一致を返します。何も入力しなかった買い物客の場合、サイトは/v1/ipにフォールバックしました。これは訪問者のIPアドレスを読み取り、都市や地域とともに座標を返すため、何も尋ねることなく妥当な出発地点を検索に提供できます。

店舗一覧そのものは、1回の一括処理で一度だけジオコーディングされました。一括リクエストでは各店舗の住所が1件の課金対象として数えられるからです。すべての店舗の座標がそろえば、順位付けは単なる計算です。買い物客の地点からすべての店舗までの距離を計算し、並べ替えて、最も近い5店舗を表示します。ドロップダウンメニューも、アルファベット順のスクロールも、店舗がどの近隣の町の名前で登録されているかを推測する必要もありません。

チェーンは、ツールが約束できることについて誠実であり続けました。ジオコーディングが返すのは入力内容に対する一致であり、住所が入力どおりに存在することを保証するものではないため、検索では順位付けした一覧に必ず確認の手順を組み合わせ、提示された場所が少し違っている場合に買い物客が出発地点を調整できるようにしました。この小さな確認は、順位付けロジックのどの部分よりも重要でした。出発地点が間違っていれば、どれだけ完璧な距離計算でも役に立たないからです。

検索のトラフィックは控えめで、オートコンプリートとジオコーディングを合わせて月に数千回の検索程度であり、My Geocodeのキーに付いている1日あたりの無料枠に十分収まっていました。店舗検索の通常の小売トラフィックが、プリペイドクレジットやUnlimitedキーのほうが有利になる水準に近づくことはめったにないため、チェーンは日々料金体系について考える必要はありませんでした。それでも、1リクエストあたり€0.0001で余裕を確保できるとわかっていたことで、マーケティング施策や新店舗の開店案内があっても何も支障が出ないと安心できました。

店舗検索は小さな機能ですが、買い物客がどこかへ車で向かうと決める前の最後の一歩であることが多く、順位付けを正しくすることで、どの店舗が来店を得るかが変わります。フィールドの形式やレート制限を含む両エンドポイントの詳細は、/docs/address-autocomplete/、/docs/forward-geocoding/、/docs/rate-limits/にあります。