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 に関してコードを書いたりイシューを追加したりする際は 行動規範 に従ってください。