都道府県をシステムで扱う時、多くの場合JISX0401の規格に基づいたコードが振り分けられることがほとんどかと思います。
都道府県は全部で47件と数が少ないためプログラム中にハードコードされる実装も多いかと思いますが1、
そもそも規格があるのだから規格に沿ったライブラリを公開してそれを利用するほうが、規格という共通認識・その実装の再利用といった観点から良いはずです。
多くのプログラミング言語には、JISX0401に沿った都道府県の情報を得るライブラリが存在しているかと思いますが、Golangにおいてはその存在が確認出来なかったため今回実装して公開を行いました。
ライブラリの名称は過去Rubyを利用していた時代に愛用していたchocoby/jp_prefectureをリスペクトし、同じ名前をつけさせていただきました。
https://github.com/diverse-inc/jp_prefecture
使い方
以下のimport文を追加することで、ライブラリを利用出来るようになります。
import pref "github.com/diverse-inc/jp_prefecture"
都道府県の情報を全件取得するにはList
関数を呼び出します。
取得出来る都道府県情報は、JISX0401で定義されたコード順に並んでいます。
prefs := pref.List()
取得出来る都道府県情報は、Prefecture
というインターフェースを通してアクセスすることが出来ます。
prefs[0].Code() // 1
prefs[0].Kanji() // "北海道"
prefs[0].Kana() // "ほっかいどう"
prefs[0].Roma() // "hokkaidou"
また、このライブラリはコード、漢字名、かな名、ローマ字名での検索機能を持っており、個別の都道府県情報を取得するのにも利用出来ます。
// コードで検索
prefInfo, ok := pref.FindByCode(1)
prefInfo.Kanji() // "北海道"
// 漢字名で検索 末尾の「都」、「府」、「県」は省略可
prefInfo, ok := pref.FindByKanji("東京")
prefInfo.Kanji() // "東京都"
// かな名で検索 末尾の「と」、「ふ」、「けん」は省略可
prefInfo, ok := pref.FindByKana("きょうと")
prefInfo.Kanji() // "京都府"
// ローマ字名で検索 末尾の「-to」、「-fu」、「-ken」は省略可
prefInfo, ok := pref.FindByRoma("okinawa")
prefInfo.Kanji() // "沖縄県"
// 存在しないキーで検索すると、都道府県情報はnilとなり、okがfalseになります。
prefInfo, ok := pref.FindByCode(0)
prefInfo // nil
ok // false
-
市区町村まで含めて扱う場合は、国土交通省が公開している市区町村検索APIなどを利用するケースのほうが多いためハードコードされることはないと思います。 ↩