国の情報を選択ボックスやらタグやらで使いたいなーという場面があると思います。
最初は特定の国を決め打ちで登録すれば良いと思いますが、コードで管理するか国名で管理するか、あるいは何かしらのIDやUUIDで管理するかなど選択肢が多くあるでしょう。
そんなときは国際基準に則った管理をしてしまいましょう!
めちゃくちゃ当たり前のことですが、実際探してみるとあんまり見つからないしXMLで管理されてたり謎のWebサイトからダウンロードしたりしなければならないこともあります。
どのデータを利用すればよいか
Webサイトからスクレイピングしたり、特定の団体がまとめている情報を取得したりするのもいいですが、できれば自動化したいしコード管理できるとなお良いですよね。ということでGithubに頼ってみましょう。はい、ありました!
こちらのパッケージをローカルにcloneしてしまって処理を実行すれば、最新の国情報をJSONで生成してくれます。
いちいち生成するのは面倒という方は、Githubから直接 all
, slim2
,slim3
の各ディレクトリからいずれか必要なファイル形式のファイルのコードをコピペすればOKです。
all
は slim2
,slim3
に加えて region
情報を持っています。例えば国を大陸別で扱えるので、そういうユースケースには最適です。
まとめ
OSSと同じように「そのデータって自分たちで管理する必要があるんだっけ?」というものについてはまずGithubを漁ってみましょう。きっとあなたの役に立つデータをコード化している先駆者がいるはずです。
そして、できればその後のメンテナンスも一緒に協力して作業していくとより良いと思います(例えば1年に1度だけ動くCIを作ってデータを最新化する→PRを出す処理を自動化するとか、PullRequestを閉じるとか)
余談:都道府県はどうすれば?
日本としての悩みごとには国とは別に都道府県があります。
これらについても探してみると、以下2つが該当しました。
ただし、規格がある部分(ここでは01が北海道、11が埼玉というJIS X 0401のコード)は規格に準拠した形でプロダクトも実装する方が、後々利便性や保守性の面で助かる場面が増えると思います。
また、選択ボックスを用意するとして、最後の「県」がいらないなぁーみたいなちょっとした対応については、各自のプロダクト側でやるべきかなと個人的には思います。
そういうGithubリポジトリを作ってくれると喜ぶエンジニアがたくさんいるかも知れませんね😄