Ruby on Rails 6 で 郵便番号住所検索 な gem
JpAddressとは
日本郵便の「郵便番号データ(www.post.japanpost.jp/zipcode/dl/kogaki/zip/ken_all.zip)」を Rails 6.1 で使用するための gem です。以下の機能を提供します。
-
郵便局提供の郵便番号データをダウンロードして自前DBのテーブル(jp_address_zipcodes)にロードするクラスメソッド。(JpAddress::Zipcode.load_master_data)
-
郵便番号を受け取り住所情報をJSONで返却するAPI(jp_address/zipcodes#search)。
要するに、「郵便番号住所検索 ruby gem」でググった人向けの gem です。お使いのRailsアプリケーションにマウントして使えますので、後必要なのは戻ってくるJSONを加工する手順だけです。
インストール
% gem install jp_address
GemFileに追記
gem 'jp_address'
テーブルの作成
% bundle exec rails jp_address:install:migrations
% bundle exec rails db:migrate
マスターデータのDBへのロード
開発環境
% rails runner -e development 'JpAddress::Zipcode.load_master_data'
本番環境
% rails runner -e production 'JpAddress::Zipcode.load_master_data'
環境にもよりますが、1~3分ぐらいかかると思います。
※ APP_ROOT/tmp/ を作業ディレクトリに使用しています。※ 最初にテーブルをトランケートしますので、毎回「全件insert」になります。
APIのマウント
マウントしたいRailsアプリの config/routes.rb に追記。
mount JpAddress::Engine, at: "/jp_address"
APIの利用
/jp_address にマウントした場合、下記URLへGETリクエストをすることで、JSONを取得できます。後はこれを好きに加工してテキストボックスなどにセットして使ってください。
get
APIを利用するためのサンプル JavaScript
フォームには
-
#zipcode(テキストボックス)
-
#prefecture_id(セレクトボックス。いわゆる都道府県プルダウン)
-
#address(テキストボックス)
の3要素があり、#zipcodeに入れられた値を元にAPIを叩き、#prefecture_id と #address に値をセットするサンプルです。
prefecture_id の選択は、都道府県名で行っています。なので、お使いの都道府県マスターのID値に影響を受けることなく選択できるはずです。
※ JQuery の存在を前提にしています。※ もともと CoffeeScript で書いてあったソースを decaffeinate したものです。
//
作者
Copyright 2016 © Tad Kam, under MIT License.
Tad Kam <[email protected]>