LoginSignup
0
0

[Google Address Validation API(V1)] Javaで住所を検証する

Last updated at Posted at 2024-05-23

Google Address Validation API(V1)をJavaで使ってみました。
今回の記事はAPIを利用するにあたり準備する必要があるものを記事にしました。

Address Validation APIとは
デベロッパーは住所の正確性を検証できます。
住所が指定されると、解析された住所の各要素の正確性に関する情報、ジオコード、
解析された住所の配送可能判定の結果が返されます。

残念ながら執筆時点では日本の住所には対応していないようです。

No 目次
1 Address Validation APIを使用するための準備
1 プロジェクトの作成
2 Address Validation APIの設定
3 APIを使用するためのキー取得
1 サービス アカウント
2 OAuth2.0 クライアントID
2 Address Validation APIを使ってみる
1 googleライブラリの読み込み
2 BAddressValidationClientインスタンスを取得
1 サービスアカウントを利用する場合
2 OAuth 2.0 クライアントIDを利用する場合
3 プログラムの実行
3 対応している地域/国
4 APIを叩いてみる

1. Address Validation APIを使用するための準備

設定は下記から行います。
⧉Google クラウド プラットフォーム

やることは下記の3つです。
1. GCPプロジェクトの作成
2. Address Validationの有効化
3. プログラムで使用するキーの取得

1.1. プロジェクトの作成

まずはGCPでプロジェクトを作成します。
詳細はこちらの記事を参照ください
⧉[Google Sheets API] Google Sheets API v4をJavaで操作する(1.1. プロジェクトの作成)

1.2. Address Validation APIの設定

Address Validation APIを使えるようにします。

No 手順
1 メニューの 「APIとサービス」 -> 「ライブラリ」 を選択します。
2 Validation と入力して「Address Validation API」を検索します。
3 「有効にする」ボタンを押して「Address Validation API」を使用可能にします。

1.3. APIを使用するためのキー取得

プログラムからAPIを実行するための準備を行います。
サービスアカウント、OAuth2.0を利用する方法があります。

1.3.1. サービス アカウント

同じ内容を下記の記事に掲載してますので、下記の記事を参照ください。
⧉[Google Sheets API] Google Sheets API v4をJavaで操作する(1.3. Googleサービスアカウントの作成)

1.3.2. OAuth2.0 クライアントID

同じ内容を下記の記事に掲載してますので、下記の記事を参照ください。
⧉[Google Drive API v3] JavaでDrive APIを使う(1.3.2. OAuth2.0 クライアントID)

2. Address Validation APIを使ってみる

2.1. googleライブラリの読み込み

Address Validation APIを使用するためにライブラリのパスを設定します。
私の環境はpom.xmlで下記を指定しています。
Javaのバージョンは21を使用しています。

<dependencies>
    <dependency>
        <groupId>com.google.api-client</groupId>
        <artifactId>google-api-client</artifactId>
    </dependency>
    <dependency>
        <groupId>com.google.maps</groupId>
        <artifactId>google-maps-addressvalidation</artifactId>
        <version>0.36.0</version>
    </dependency>
    <!-- OAuth2.0でAPIを使う場合は下記を追加してください。 -->
    <dependency>
        <groupId>com.google.oauth-client</groupId>
        <artifactId>google-oauth-client-jetty</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>libraries-bom</artifactId>
            <version>26.38.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2.2. AddressValidationClientインスタンスを取得

2.2.1. サービスアカウントを利用する場合

コード中の「JSONファイルのパス」は、
⧉[Google Sheets API] Google Sheets API v4をJavaで操作する(1.3. Googleサービスアカウントの作成)
で取得したJSONファイルのパスを指定してください。

private static AddressValidationClient getAddressValidationClient() throws Exception{
    try(InputStream input = new FileInputStream("JSONファイルのパス")){
        GoogleCredentials credentials = GoogleCredentials
                .fromStream(input)
                .createScoped(Arrays.asList("https://www.googleapis.com/auth/cloud-platform"));
        
        AddressValidationSettings settings = AddressValidationSettings.newBuilder()
                .setCredentialsProvider(FixedCredentialsProvider.create(credentials)) 
                .build();
        
        return AddressValidationClient.create(settings);
    }
}

2.2.2. OAuth 2.0 クライアントIDを利用する場合

コード中の「JSONファイルのパス」は、
⧉[Google Drive API v3] JavaでDrive APIを使う(1.3.2.1 認証情報の作成)
で取得したJSONファイルのパスを指定してください。

コード中の「認証情報を保存するフォルダパス」は、
認証情報が保存されるフォルダのパスを指定してください。
このコードを実行するとOAuth同意画面が表示されます。
ユーザーが同意をすると認証情報を保存するフォルダにファイルが生成されます。
このファイルが存在した場合は、再度実行してもOAuth同意画面は表示されません。

private static AddressValidationClient getAddressValidationClient() throws Exception{
    HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
    GsonFactory jsonFactory = GsonFactory.getDefaultInstance();
    
    try(Reader reader = new InputStreamReader(new FileInputStream("JSONファイルのパス"))){
        GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(jsonFactory,reader);
        
        GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                transport, jsonFactory, clientSecrets, 
                Arrays.asList("https://www.googleapis.com/auth/cloud-platform"))
            .setDataStoreFactory(new FileDataStoreFactory(new java.io.File("認証情報を保存するフォルダパス")))
            .build();
        
        LocalServerReceiver receiver = new LocalServerReceiver.Builder().build();
        Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
        UserCredentials credentials = UserCredentials.newBuilder()
                .setClientId(clientSecrets.getDetails().getClientId())
                .setClientSecret(clientSecrets.getDetails().getClientSecret())
                .setRefreshToken(credential.getRefreshToken())
                .build();

        AddressValidationSettings settings = AddressValidationSettings.newBuilder()
                .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
                .build();
       
        return AddressValidationClient.create(settings);
    }
}

2.3. プログラムの実行

プログラムを動かします。

public static void main(String[] args) throws Exception{
    try(AddressValidationClient client = AddressValidationClient.create()){
        PostalAddress.Builder address = PostalAddress.newBuilder();
        address.addAllAddressLines(Arrays.asList("678 Lafayette Ave Suite 2B"));
        
        ValidateAddressRequest.Builder builder = ValidateAddressRequest.newBuilder();
        builder.setAddress(address.build());
        
        ValidateAddressResponse res = client.validateAddress(builder.build());
        System.out.println(res);
    }
}

3. 対応している地域/国

地域コード 国/地域 Address Validation API Response AddressMetadata
AR アルゼンチン
AU オーストラリア
AT オーストリア
BE ベルギー
BR ブラジル
BG ブルガリア
CA カナダ
CL チリ
CO コロンビア
HR クロアチア
CZ チェコ
DK デンマーク
EE エストニア
FI フィンランド
FR フランス
DE ドイツ
HU ハンガリー
IE アイルランド
IT イタリア
LV ラトビア
LT リトアニア
LU ルクセンブルク
MY マレーシア
MX メキシコ
NL オランダ
NO ノルウェー
NZ ニュージーランド
PL ポーランド
PT ポルトガル
PR プエルトリコ
SG シンガポール
SK スロバキア
SI スロベニア
ES スペイン
SE スウェーデン
CH スイス
GB 英国
US 米国

4. APIを叩いてみる

4.1. v1

メソッド 概要 記事
validateAddress 住所を検証 ⧉[Google Address Validation API(V1)] Javaで住所を検証して結果をフィードバックする
provideValidationFeedback 住所の検証結果をフィードバック ⧉[Google Address Validation API(V1)] Javaで住所を検証して結果をフィードバックする


おしまい。。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0