ガイド

住所と郵便番号を照合する

顧客は、実在する住所と実在する郵便番号を、実際には対応していない組み合わせで入力することがあります。最も多いのは、数字を入れ違えたり、古い郵便番号を新しい住所にコピーしたりするケースです。どちらの項目もそれぞれ単独では有効なので、片方だけを見ても問題はわかりません。

各項目を個別に解決する

完全な住所を/v1/forwardでジオコーディングして、実際にどの郵便番号に解決されるかを確認し、それとは別に、顧客が入力した郵便番号を/v1/postcodeで検索して、それがどのエリアをカバーしているかを確認します。

GET /v1/forward?q=10 Downing Street, London&limit=1
{
  "status": "ok",
  "results": [
    {"formatted": "10 Downing Street, London, UK", "lat": 51.5033, "lon": -0.1276, "type": "address", "precision": "house", "confidence": 0.96, "place_id": "op678", "components": {"postcode": "SW1A 2AA", "city": "London"}}
  ]
}
GET /v1/postcode?code=SW1A 1AA&country=GB
{
  "status": "ok",
  "postcode": "SW1A 1AA",
  "country_code": "GB",
  "results": [{"lat": 51.5014, "lon": -0.1419, "components": {"city": "London", "region": "Greater London"}}]
}

2つの結果を比較する

この例のように、住所検索で得たpostcodeの構成要素が顧客の入力した郵便番号と一致しない場合、住所と郵便番号がそれぞれ単独では実在するものと確認できていても、それは警告すべき不一致です。2組の座標の距離を比較するよりも、2つの構成要素を直接比較するほうが確実です。郵便番号のエリアは小さいことがあり、本当に一致している場合でも、住所の座標とぴったり重なるとは限らないからです。

2つ目の例:早い段階で見つけるべき、より大きな不一致

同じチェックで、はるかに明らかな誤りも見つけられます。それは、住所そのものとはまったく別の国や地域の郵便番号が入力されているケースで、たとえば英国形式の郵便番号が、実際には別の国に解決される住所と組み合わされている場合です。より詳細な郵便番号の比較に進む前に、住所の結果に含まれるcountryの構成要素と、郵便番号検索に使ったcountryパラメータを比較するのは、この種の大きな誤りを早い段階で除外できる手軽な最初のチェックです。

不一致があった場合の対応

黙ってどちらか一方を選んだり、注文をそのまま拒否したりするのではなく、両方の値を並べて顧客に示し、どちらが正しいかを確認してもらいましょう。数字の入れ違いは指摘されればすぐに直せますし、郵便番号が正当に2つのよく使われる値の境界にまたがっているような本当のエッジケースはまれなので、手早く手動で確認すれば対応できます。

避けるべきよくある間違い

郵便番号の構成要素そのものを比較する代わりに、2組の座標を距離のしきい値で直接比較しないでください。郵便番号のエリアは地理的に小さいことがあり、完全に正しい一致であっても、郵便番号の代表点と住所の特定の建物の座標との間にある程度の距離が生じます。また、小さな地域コードが地理的には十分に広く、実際には一致していない組み合わせでも緩い距離のしきい値の範囲内に収まってしまうこともあります。距離から一致を推測しようとするよりも、郵便番号の文字列そのものを比較するほうが、より直接的で確実なチェックです。

考慮しておくべきエッジケース

2つの行政区域の境界にちょうど位置する郵便番号のエリアでは、どちらも正しい場合でも、どのエンドポイントで解決したかによって、返される構成要素の組み合わせが少し異なって見えることがあります。地域名の表記の違いだけといった、近いが完全には一致しない文字列は、まったく異なる郵便番号よりも緩やかに扱ってください。

多数の注文をまとめてチェックする

新しい1件の送信ではなく既存の注文をまとめてチェックする場合、どちらのエンドポイントも一括POSTの配列を受け付けます。そのため、住所を1つの一括リクエストとして/v1/forwardに、郵便番号を別の一括リクエストとして/v1/postcodeに送り、2つの結果配列を位置ごとに比較することで、溜まった注文をチェックできます。

リクエストのコスト

このチェックでは、注文1件につき住所用と郵便番号用の2回のリクエストを使い、どちらもほかの検索と同じように1日の割り当てにカウントされます。そうしなければ配達失敗として表面化する誤りを見つけるためのコストとしては妥当なものです。

注文の発送前に郵便番号の不一致を見つけることは、確認に必要な2回目のリクエストに見合う価値があります。両エンドポイントの詳細はジオコーディングのドキュメント郵便番号検索のドキュメントにあります。