No release in over a year
JapaneseAddressParser is a Ruby gem that parses Japanese address. To detect the address, it uses geolonia/japanese-addresses (https://github.com/geolonia/japanese-addresses) CSV data.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

 Project Readme

CI Status Gem Version Maintainability

JapaneseAddressParser

JapaneseAddressParser は日本の住所をパースすることができる Ruby gem です。

住所のパースに使っているのは geolonia/normalize-japanese-addresses です。 npm のライブラリを Ruby のランタイムから呼び出しているため、Node が実行できる環境でしか動作しません。

こちらのページで機能を試すことができます:デモンストレーション | JapaneseAddressParser

インストール

Gemfile にこの行を追加してください:

gem 'japanese_address_parser'

次にこのコマンドを実行してください:

$ bundle install

もしくは gem install をして直接インストールすることもできます:

$ gem install japanese_address_parser

使い方

address = JapaneseAddressParser.call('東京都港区芝公園4-2-8')

address.class #=> JapaneseAddressParser::Models::Address

prefecture = address.prefecture
prefecture.attributes #=> {:code=>"13", :name=>"東京都", :name_kana=>"トウキョウト", :name_romaji=>"TOKYO TO"}

city = address.city
city.attributes #=> {:code=>"13103", :formatted_code=>"13103", :prefecture_code=>"13", :name=>"港区", :name_kana=>"ミナトク", :name_romaji=>"MINATO KU"}

town = address.town
town.attributes #=> {:name=>"芝公園四丁目", :name_kana=>"シバコウエン 4", :name_romaji=>"SHIBAKOEN 4", :nickname=>nil, :latitude=>"35.656459", :longitude=>"139.74764"}

address.full_address #=> "東京都港区芝公園4-2-8"
address.furigana #=> "トウキョウトミナトクシバコウエン 4"

都道府県・市区町村・町域データの属性

都道府県データの属性

クラス:JapaneseAddressParser::Models::Prefecture

属性 説明
code 都道府県コード "01"
name 名前 "北海道"
name_kana ふりがな "ホッカイドウ"
name_romaji ローマ字 "HOKKAIDO"
市区町村データの属性

クラス:JapaneseAddressParser::Models::City

属性 説明
code 市区町村コード "01101"
formatted_code 整形された市区町村コード
市区町村コードがない場合に "UNKNOWN" が入っています。
"01101" / "UNKNOWN"
prefecture_code 都道府県コード "01"
name 名前 "札幌市中央区"
name_kana ふりがな "サッポロシチュウオウク"
name_romaji ローマ字 "SAPPORO SHI CHUO KU"
町域データの属性

クラス:JapaneseAddressParser::Models::Town

属性 説明
name 名前 "旭ケ丘一丁目"
name_kana ふりがな "アサヒガオカ 1"
name_romaji ローマ字 "ASAHIGAOKA 1"
nickname 小字・通称名
latitude 緯度 "43.04223"
longitude 経度 "141.319722"

都道府県や市区町村、町域のそれぞれの属性の値は geolonia/japanese-addresses が提供している CSV ファイルの値そのままです。

JapaneseAddressParser.call(address)

address の値を解析して、都道府県・市区町村・町域のデータを返します。

なんらかの理由で住所の解析に失敗したときは nil を返します。

JapaneseAddressParser.call!(address)

address の値を解析して、都道府県・市区町村・町域のデータを返します。

なんらかの理由で住所の解析に失敗したときは JapaneseAddressParser::NormalizeError の例外を吐きます。

開発

開発に必要なライブラリをインストールするには、このコマンドを実行してください:

bin/setup

開発環境の構築は Docker を使ってもできます。 MacOS でしか試していないので、他プラットフォームで動かなかったら issue でご報告ください。

docker compose build
docker compose run --rm gemsrc sh

自動テストやリンターを実行するには、このコマンドを実行してください:

rake

貢献方法

イシューやプルリクエストは随時お待ちしています。

特に住所の正規化については漏れているケースがまだまだ数多くありそうです。 「この住所だとうまくパースできないよ」くらいの気軽なもので結構ですので、イシューでのご報告をお願いします。

ライセンス

この gem は MIT ライセンス の下でオープンソースとして利用可能です。

行動規範

JapaneseAddressParser に関してコードを書いたりイシューを追加したりする際は 行動規範 に従ってください。