LoginSignup
5
5

More than 5 years have passed since last update.

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

Posted at

漢字交じりの住所をある一定のルールで揃えたいときありますよね。
そんな時は、ロケタッチの住所正規化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"

併せて読みたい

5
5
1

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
5
5