Google Maps Platform を使用してロケーション検証機能を構築する

目標

場所の位置を検証する必要があることはよくあります。Google Maps Platform には、このユースケースに役立つサービスがいくつかあります。このドキュメントでは、2 つの主要な位置情報検証サービス(Address Validation API と Geocoding API)の選択について説明します。

Address Validation API は、住所が正確かどうかを検証するのに役立つ Google Maps Platform のサービスです。

Geocoding API によるジオコーディングとは、住所を地理座標に変換するプロセスです。地理座標を使用して、地図上にマーカーを配置したり、地図上の位置を指定したりできます。

Address Validation API と Geocoding API の違いの概要については、こちらをご覧ください。

Address Validation API と Geocoding API の選択

Address-Validation-vs-Geocoding

上記のフローチャートに関する注意事項:

  • ユーザー操作のユースケースとは、ユーザーが結果を操作するユースケースを指します。
  • Places Autocomplete は JavaScript API であるため、ユーザー インターフェースとの統合に適しています。
  • 既存の住所のデータ品質に問題がある可能性があります。ジオコーディングのみが必要な場合でも、Address Validation API を使用して位置情報を取得し、データセットを修正することをおすすめします。

上記のディシジョン ツリーに基づいて、どちらか一方のプロダクトを選択する状況は数多くあります。一方、目標達成のために両方のプロダクトを使用する場合もあります。

次のような場合は、Geocoding API ではなく Address Validation API を使用することをおすすめします。

  • データに疑問がある場合や、住所が間違っているとダウンストリームに悪影響が及ぶ可能性がある場合。これは、Address Validation API が、入力が精度の高い結果を得られなかった理由について詳細なフィードバックを提供するからです。
  • ユーザー入力(スペルミスやフィールドの不足など)を修正する必要があります。これにより、出力結果の精度が向上します。
  • 対象地域では、Geocoding API と比較して Address Validation API から返されるメタデータが多い(建物のタイプが住宅か商業かなど)。

次のような場合は、Address Validation API ではなく Geocoding API を使用することをおすすめします。

  • 主な目的は住所の位置を取得することであり、個々の住所の精度が重要でない場合があります。
    • たとえば、大量のデータセットからヒートマップを生成する場合などです。
  • グローバルなソリューションが必要であり、Address Validation API がすべての対象地域で利用できない。

以下に、Geocoding API と比較した Address Validation API の機能を示す例を示します。

無効な住所の例

1 Fake St, Mountain View, CA 94043, USA

Address Validation API は、この入力を個々の住所要素(道路、市区町村、都道府県など)に分割します。また、アドレスが無効である理由を PREMISE レベルまで詳細にフィードバックすることもできます。

Fake St はカリフォルニア州マウンテンビューに存在しないため、Address Validation API は、返されたコンポーネントレベルの詳細にその旨を反映します。

{
  "componentName": {
    "text": "Fake St",
    "languageCode": "en"
   },
   "componentType": "route",
   "confirmationLevel":"UNCONFIRMED_BUT_PLAUSIBLE"
 }

この場合、検査すべき重要なプロパティは confirmationLevel です。Fake St に対して UNCONFIRMED_BUT_PLAUSIBLE を返すことで、API は、その名前が道路に付けられている可能性はあるが、サポートされている住所データと照合できないと判断しています。

API の結果をフィードバックとして使用すると、この入力の道路コンポーネント(Fake St)に問題があることが推測できます。

Geocoding API で同じ住所を使用すると、こちらで試すことができるジオコーディング ツールのスクリーンショットに示すように、「カリフォルニア」と一致させることができます。

alt_text

ただし、結果は州全体の地理コードであり、入力のどのコンポーネントに問題がある可能性があるかについてのフィードバックは最小限です。

スペルミスの例

76 Buckingamm Palace Road, Londn, SW1W 9TQ, GB

上記の住所には、いくつかの誤字脱字があります。1 つは道路名、もう 1 つは地域です。

Address Validation API と Geocoding API の両方で、これらの間違いを修正して、76 Buckingham Palace Road, London, SW1W 9TQ という結果を得ることができます。ただし、Address Validation API を使用すると、プロセスに関する詳細情報を取得できます。

入力時に誤字脱字があった住所のコンポーネントの例を次に示します。

{
  "componentName": {
    "text": "Buckingham Palace Road",
    "languageCode": "en"
        },
        "componentType": "route",
        "confirmationLevel": "CONFIRMED",
        "spellCorrected": true
     }
}

Address Validation API は、フィールドが修正されたことを示すフラグを返します。このフラグに対してビジネス ロジックを実装して、データ プロバイダ(e コマース購入手続き中の顧客など)と修正内容を再確認できます。

データの欠落とスペルミスの例

Bollschestraße 86, 12587, DE

上記の住所では、道路名のスペルが間違っており、ベルリンという都市(地域)が指定されていません。

Address Validation API は、これらのエラーの両方を修正し、PREMISE レベルの地理コードと、PREMISE レベルで検証された住所を返します。

Bölschestraße 86, 12587 Berlin, DE

この場合、Geocoding API は入力エラーを正常に解決できず、結果として ZERO_RESULTS を返します。

住所に関する追加のメタデータの例

111 8th Avenue Ste 123, New York, NY 10011-5201, US

この住所は、建物内に存在しない部屋番号(Ste 123)を除き、正しいものです。

Address Validation API は、PREMISE(111 8th Ave)の住所を検証し、商業施設であるかどうかなど、物件に関するメタデータを提供できます。

施設:

"business": true

また、レスポンスの uspsData の一部として返される dpvConfirmation 値は S です。

"dpvConfirmation": "S"

dpvConfirmation 値が S の場合、住所は PREMISE レベルで検証されていますが、入力されたユニット番号がその住所に関連付けられていません。

Geocoding API では、この情報を提供できません。

Geocoding API レスポンスについて

概要

Geocoding API を使用する場合、ジオコーディングの結果には、指定された住所の詳細を把握するために使用できるさまざまな手がかりがレスポンスに含まれます。

Geocoding API は、階層内の住所コンポーネントを解決します。

たとえば、123 Example Street, Chicago, 60007, USA は次の順序で解決されます。

/ Example Street/ Chicago/ 60007/ USA は、その順序で評価されます。この場合、最初の一致はシカゴで、より具体的には 60007 の郵便番号です。そのため、その郵便番号の Place_id は次のようになります。

ChIJwRKzf8ixD4gRHiXqucwr_HQ

Geocode API のレスポンスには、次の情報が含まれます。

        "partial_match": true,
           "place_id": "ChIJwRKzf8ixD4gRHiXqucwr_HQ",
           "types": [
               "postal_code"
           ]

Geocoding API を使用すると、この住所がどのような場所に属しているかを確認できます。Geocoding API から返される住所 types のリストについては、こちらをご覧ください。

入力のコンポーネントが解決されなかった場合、API は次を返します。

{
   "results": [],
   "status": "ZERO_RESULTS"
}

番地なしの住所のみを指定してリクエストすると、次のような結果が返されます。

"types": [
  "route"
]

つまり、Geocoding API が番地を見つけたり、番地と一致させることができなかったことを意味します。

注: 住所が存在するかどうかを確認するには、Geocoding API レスポンスで、パラメータ(typespartial_match, results, status) など)が設定されているかどうかを確認します。これにより、住所が存在する可能性の信頼度が徐々に高まりますが、100% 正確になるわけではありません。そのため、Address Validation API が必要になります。

上記の方法を使用すると、Geocoding API レスポンスから得られる住所の精度を高めることができます。ただし、Address Validation API の結果とは異なり、Geocoding API は結果の精度を判断するための正確なフィードバックを返しません。

ロケーション タイプ

このセクションを正しく理解するには、Geocoding API のレスポンスから返されるさまざまな位置情報のタイプを理解する必要があります。

  • ROOFTOP は、返された結果が正確なジオコーディングであり、住所の精度まで正確な位置情報が含まれていることを示します。
  • RANGE_INTERPOLATED は、返された結果が(交差点などの)正確な 2 地点間で補間された近似値(通常は道路上)を反映していることを示します。補間された結果が返されるのは、番地に対してルーフトップ ジオコーディングが使用できない場合が一般的です。
  • GEOMETRIC_CENTER は、返された結果が、ポリライン(道路など)やポリゴン(地域)などの幾何学的な中心であることを示します。
  • APPROXIMATE は、返された結果が上記のいずれでもないことを示します。

Geocoding API から ROOFTOP または RANGE_INTERPOLATEDlocation_type が返された場合、住所が存在することを意味するとは限りません。同様に、Geocoding API から partial_match フラグが true に設定された状態で結果が返された場合でも、適切な結果である可能性があります。

このタイプの誤った照合は、Geocoding API で解決するのが非常に難しい問題です。少なくとも、リクエストとレスポンスの国と地域に関する基本的なポスト処理検証を実装することを検討してください。実際の住所を比較して、スペルミスや不完全な住所がないか確認することもできます。

: Geocoding API を使用する場合は、最初のリクエストと Geocoding API レスポンス間でデータ品質チェックを定期的に行うことをおすすめします。

部分一致と誤った一致

住所が部分一致の場合(Geocoding API で住所を正確に特定できなかった場合)、レスポンスには次のものが含まれます。

"partial_match": true,
"types": [
           "locality",
           "political"
         ]

上記の勤務地の種類よりも重要なのは、レスポンスに partial_match = true 含まれるタイミングです。partial_match は、Geocoding API が元のリクエストと完全に一致する結果を返さなかったものの、リクエストされた住所の一部と一致できたことを示します。

住所が不完全な場合は、元のリクエストを調べることをおすすめします。部分一致は、リクエストで指定された地域内に存在しない住所で発生することがよくあります。また、同じ地域内に複数の場所があるリクエストを行った場合も部分一致が返されます。

たとえば、「21 Henr St, Bristol, UK」は、Henry Street と Henrietta Street の両方の部分一致を返します。リクエストにスペルミスのある住所要素が含まれている場合、Geocoding API は別の住所を提案することがあります。この方法でトリガーされた候補は、部分一致としてマークされません。

合成アドレス

Geocoding API は、Google のデータベースに正確な場所として存在しない「合成」住所の場所を返すことがあります。

このようなシナリオでは、レスポンス オブジェクトに長いプレイス ID と次のプロパティ geometry.location_type=APPROXIMATE が含まれていることがよくあります。

レスポンスでこれらのインジケータが見つかった場合は、入力アドレスを無効としてマークし、別の方法で再検証することを検討してください。

: これは、Address Validation API を使用して住所が存在しない場合に直接フィードバックが返される別の例です。

Address Validation API レスポンスについて

Address Validation API からのレスポンスの理解方法については、すでに優れたドキュメントが用意されているため、ここでは詳しく説明しません。

ベスト プラクティス

地域の指定

Address Validation API または Geocoding API を呼び出す際は、その住所を検索する地域を制限することをおすすめします。2 つの API では、この処理が 2 つの異なる方法で実装されています。

  • Geocoding API - 地域バイアス

    ジオコードが特定の国内にあることがわかっている場合は、地域のバイアスを使用すると、より良い結果が得られます。たとえば、カナダでジオコーディングを行う場合は、リクエストに &region=ca を追加して、カナダに偏重することをおすすめします。リージョン バイアスは、そのリージョン内の結果を優先するだけです。地域外の結果は引き続き取得できます。

  • Address Validation API - 地域コード

    同様に、regionCode フィールドを使用してリクエストで ISO2 コードを渡すと、Address Validation API はより正確な結果を生成します。

場所 ID の保存

今後のリクエスト用に Google Maps Platform の場所に関する情報を保管しておくには、場所の属性として、プレイス ID をデータベースに無期限に保存することをおすすめします。Find Place リクエストは、placeID ごとに 1 回のみ実行する必要があります。ユーザーが取引の詳細をリクエストするたびにプレイス ID を検索することもできます。

常に最新の情報を取得するには、place_id パラメータを使用して Place Details リクエストを 12 か月ごとに実行し、場所 ID を更新します。

: ジオコーディングのベスト プラクティス ガイドもご確認ください。

まとめ

このドキュメントでは、Address Validation API と Geocoding API の主な違いについて説明します。要約すると、次の場合に Address Validation API の使用を検討してください。

  • 特に配送目的で、正確な郵送先住所が必要です。
  • 入力データの品質が低いことが判明している。Address Validation API は入力エラーに寛容で、検証できない住所の構成要素をハイライト表示し、入力データを修正します。
  • 住所について、住宅か商業施設かなどの追加情報が必要です(一部の地域で利用可能)。

次のステップ

住所の信頼性を高めて決済、配送、オペレーションを改善 ホワイトペーパーをダウンロードし、Address Validation で決済、配送、オペレーションを改善する ウェブセミナーをご覧ください。

おすすめの関連情報:

寄稿者

この記事は Google が管理しています。以下は、このページの作成者です。

主な作成者:

Henrik Valve | ソリューション エンジニア

Thomas Anglaret | ソリューション エンジニア

Sarthak Ganguly | ソリューション エンジニア