目的
社内向けに開発した住所正規化ツールをAddressianと命名して一般公開するに至りました。
サービスの紹介を兼ねて、使い方を記事にしたいと思います。
Addressianの特徴
Addressianの住所正規化のベースになっているのは、国土交通省の位置参照情報と日本郵便の郵便番号データCSV(通称 KENALL)です。自社の顧客データで正常に動作することを目的にしましたので、全てのパターンというよりは人間がやりがちな表記揺れに対応するように作られています。
一般的な特徴
- 登録に必要なのはGoogleアカウントのみです。登録後すぐに使えます。
- FREEプランがあります。クレジットカード登録不要で、月100回リクエストまで無料です。
- REST APIで使えます。現在はREST APIのみ対応しています。
- お支払いはクレジットカードのみです。
- お問い合わせはサイト上のFORMからのみ対応しています。
技術的な特徴
- 一回のリクエストで最大100件同時に変換できます。無料枠で100回リクエストできるので、最大10,000件の住所を毎月変換可能です。
- EXCEL(2016以降)やGoogle Spread Sheetから呼び出せます。
- 丁目番地の表記揺れに対応しています。例えば百三号でも一〇三号でもアラビア数字の103に変換します。
- ビル名等を取得できます。番地以降の数字はビルの階数として取得します。
- 表記の好みに合わせられるようにtype1, type2,...を準備してます。(四丁目3-2、4-3-2等)
- 丁目あり住所と丁目なし+地番が混在する地域でも、ほぼ正しく変換します。
- 新しく追加された地名や変更された地名にも対応してます。
- 旧地名には対応してません。
登録とAPIキーの取得
Addressianの公式サイトから新規登録又はログインして、APIキーの確認からAPIキーを取得します。Googleアカウントがあれば数秒で登録できます。
ブラウザで動作確認
curlで動作確認する方法については、公式ページに記載しておりますので確認してください。 とりあえずブラウザ(今回はGoogle Chrome)を使ってREST APIを投げて、APIキーが正しいか確認します。
下記のURLの{APIキー}をサイトからコピーしたAPIキーに置き換えて、アドレスバーに入力してください。
https://s32y6jl1f8.execute-api.ap-northeast-1.amazonaws.com/api/address_normalizer?key={APIキー}&address=新宿区西新宿2-1-1
東京都新宿区西新宿二丁目1-1
が取得できれば成功です。
※ 古いブラウザやcurlを使う場合は、addressの新宿区西新宿2-1-1
をURLエンコードする必要があります。
Google Spread Sheetから呼び出す
Google Spread Sheetで、WEB情報を取得する方法はいくつかありますが、CSVをセルに展開できるIMPORTDATA
メソッドを使用します。
住所は、ENCODEURL
をつかってURLエンコードする必要があります。
画像の例では、わかりやすいようにURLを要素ごとにセルを分けて、最後に住所を結合しています。
セルB8を、長く記述するとこのようになります。
= IMPORTDATA(https://s32y6jl1f8.execute-api.ap-northeast-1.amazonaws.com/api/address_normalizer?key=APIキー&address=ENCODEURL("鹿児島県鹿児島市中央町10"))
取得する項目を指定する
取得する項目を選択するには、target
を指定します。 利用方法にあるレスポンスのキー値をカンマ区切りで指定します。レスポンスは、カンマ区切りで指定した順番に並びます。
今回は、zip_code(郵便番号7桁), normalized_address_type1(漢数字丁目タイプ), building(ビル名等)を設定しました。
複数の住所をまとめて変換する
Addressianは、POSTとGET両方とも1リクエストに100件までの住所を設定できます。
GETリクエストの場合は、URLのaddressパラメータに住所をカンマ区切りで設定します。
また住所に,
が含まれる場合には、CSVと同様に"
で囲むと一括りとして認識されます。
Google Spread Sheetでは、JOIN
またはTEXTJOIN
を使えば簡単に指定範囲をデリミタ(区切り文字)でまとめることができるので便利です。
Spread SheetでJOINを使って住所を"
で括り、まとめてREST APIに投げるには、下記のように記述します。
= IMPORTDATA($B$5 & ENCODEURL("""" & JOIN(""",""", A9:A38) & """"))
このように複数住所をまとめて変換すると、リクエスト数を抑えることができます。
Google Spread Sheetでは、渡せる文字数に制限があります。実際に一度に変換できる住所は、30件程度が限界かと思います。その辺りは工夫していただければと思います。
まとめ
住所正規化REST APIであるAddressianについてお伝えしました。
プログラミングに慣れていなくても、EXCELやSpread Sheetが使える方なら利用できるように作ったつもりです。
ぜひ、お試しいただければと思います。
また、自社で開発したAPIを公開するのは今回が初めてですので、至らない部分も多いかと思います。
ご意見やご感想をいただけると幸いです。