暇人じゃない

jp_prefecture v1.0.0.rc1 をリリースした
RubyGemjp_prefecture

jp_prefecture gem v1.0.0.rc1 をリリースした。

互換性が無くなる変更点は以下:

  • JpPrefecture::Prefecture.find メソッドによる検索処理を変更
  • 古い Ruby や Rails のサポートを終了

今までメジャーバージョンは v0 だったが、まあまあ変更が入るので、この機会に v1 にインクリメントしたいという思いもある。 大げさかもしれないが、影響が心配なので v1.0.0 の Release Candidate を出すことにした。

変更点について

v1.0.0 の変更点について説明してみる。 内容は CHANGELOG とほぼ同じ。

JpPrefecture::Prefecture.find メソッドによる検索処理を変更

JpPrefecture::Prefecture.find(name: '東') を実行すると「青森県」が取得されていた問題への対応。 3 年前に報告していただいたが、そのままだったので申し訳ない気持ち。

find(name:) メソッドはマッピングのすべての項目を検索する処理になっており、「東」が八地方区分情報である「東北」にマッチするため。 対応としては、find(name:) を指定した場合は漢字表記、find(name_e:) は英語表記など、指定した項目のみを検索するように変更した。

影響を受けるアプリケーションがあるのではないかと心配しているので注意を。 実際、自分が作っている CurryBu というサービスで試したときに、都道府県内のカレー屋を表示する実装に影響があった。

もし、これまでと同じ挙動を使いたい場合は find(all_fields:) という指定ができるので、それを使用してほしい。

Ruby 1.9.3 - 2.3 と Rails 3.2 - 4.2 のサポートを終了

タイトルの通り、古い Ruby や Rails のサポートを終了した。

複数の Ruby と Rails の組み合わせでテストしているため、古いバージョンをサポートするには条件分岐を追加する必要がある。 Rails にはバージョンごとに必要な Ruby バージョンがあり (例えば Rails 6.0 を動かすには Ruby 2.6 以上が必要)、条件分岐やテスト対象から除外する設定を追加するのが増えていくのが辛かった。

サポート対象の条件が明確になっておらず申し訳ないが、Ruby/Rails のメンテナンスポリシーで決められているバージョンは最低限サポートし、実装やテストのメンテナンスが困難になった場合はサポートを終了する方針で検討している。 ご意見あれば Issue などでコメントをいただけるとありがたいです。

サポートが終了したバージョンを使っている方は v0.x 系のバージョンを使用してほしい。もし大きな不具合が見つかった場合、可能な限り対応する予定。

Ruby 3.0 をサポートに追加

ついでに、と言っては何だが Ruby 3.0 をサポート対象に追加した。

郵便番号データの更新

郵便番号データを 6 年ぶりくらいに更新した。 郵便番号データ (KEN_ALL.csv) は毎月更新されているので気をつけてほしい。

データを更新する Rake タスクが動かなくなっていたので処理を修正した。 圧縮ファイルが lzh ではなく zip で提供されていることに時代を感じる。

しかし、この Gem の郵便番号データを使っている人はどれくらいいるのだろうか...? 多ければ自動更新するような仕組みを入れると便利かもと考えている。少なければデータの同梱をやめて、必要な方は Rake タスクを実行してデータを用意していただく形にするかもしれない。

その他

その他、いくつか小さな改善を行った。

正式版リリース時期

v1.0.0 正式版は、早ければ 1 週間後、遅くとも 2 月中にリリース予定。

よければ試してみてください。Gemfile で以下のように指定するとインストールできる。

gem 'jp_prefecture', '>= 1.0.0.rc1'

GitHub や Twitter などでご意見お待ちしています。 使っていただいてありがとうございます。

About

chocoby (GitHub / Twitter)

個人事業主のソフトウェア開発者です。 Ruby と Rails を使った Web サービスの開発を得意としています。

CurryBu というサービスを作ったり、jp_prefecture という Gem を作っています。