Posted at

RubyからロケタッチのAPIを利用して住所を正規化する方法

More than 3 years have passed since last update.

漢字交じりの住所をある一定のルールで揃えたいときありますよね。

そんな時は、ロケタッチの住所正規化APIが便利です。


APIの使い方

address引数の値を利用して、結果がJSONで返ります。

https://api.loctouch.com/v1/geo/address_normalize?address=[正規化処理したい住所]

query
入力データ

result.address
正規化後の住所

result.resion_id
JSI X 0402 に定められた市区町村コード

result.zip
郵便番号

result.normalize.region
都道府県、郡、市区町村

result.normalize.number
住所の数字部分(一部の住所では数字以外も入る)

result.normalize.build
ビル名部分

is_error
正規化失敗した場合は 1 を返す

より詳しい情報はこちら

http://tou.ch/developer/api_all?uri=geo%2Faddress_normalize


実装サンプル

今回は手軽に使えるHTTPクライアント、Faradayを使います。

require "faraday"

require "json"
require "pp"

address = "東京都渋谷区渋谷二丁目21番地-1"
res = Faraday.new(:url => "https://api.loctouch.com").get("/v1/geo/address_normalize", {address: address})
body = JSON.parse(res.body)
pp body

実行すると、このように結果を取得できます。

$ ruby address_normalizer.rb

{"is_error"=>0,
"query"=>"東京都渋谷区渋谷二丁目21番地-1",
"code"=>200,
"result"=>
{"zip"=>"1500002",
"region_id"=>"13113",
"normalize"=>
{"number"=>"2-21-1", "region"=>"東京都渋谷区", "town"=>"渋谷", "build"=>""},
"address"=>"東京都渋谷区渋谷2-21-1"}}

便利ですね!


おまけ

次のように、curlコマンドとjqコマンドをセットで利用しても便利です。

$ curl -s "https://api.loctouch.com/v1/geo/address_normalize?address=東京都渋谷区渋谷二丁目21番地-1" | jq '.result'

{
"zip": "1500002",
"region_id": "13113",
"normalize": {
"number": "2-21-1",
"region": "東京都渋谷区",
"town": "渋谷",
"build": ""
},
"address": "東京都渋谷区渋谷2-21-1"
}

$ curl -s "https://api.loctouch.com/v1/geo/address_normalize?address=東京都渋谷区渋谷二丁目21番地-1" | jq '.result.address'
"東京都渋谷区渋谷2-21-1"


併せて読みたい