Googleで「都道府県コード」を検索すると一位に出てくる国土交通省の都道府県コード 〈 ファイル名称:PrefCode 〉が処理に適しないことで国のリテラシーを疑っているツイートが目にしました。該当ページを見ていろんな反応を見て、いくつか疑問が上がってきました。
- 都道府県コードは誰が制定したものなのか
- このページは本当にひどいのか
- 正しそうな取得方法は何なのか
これらについて調べたものを記そうと思います。
都道府県コードは誰が制定したものなのか
詳しくは全国地方公共団体コードのwikipediaを参照すれば良いですが、簡単に話すと、
都道府県コードは(現)総務省が制定した全国地方公共団体コードから派生し、(現)経済産業省が制定している(現)JIS X 0402に規定されているものとなります。
オフィシャルに公式なものですと、JIS X 0401「都道府県コード」で公開されているものとなります。ただJIS X 0401は公文書でありPDFとなっている上で、ダウンロードするためには、新規登録、ログインなど煩雑な手順が必要になります。
このページはひどいのか
個人的に誤解を生みそうな問題点をまとめました。
-
Googleが勝手に一番上に表示した
該当ページをもう少し詳しく見てみましょう。- 紙に印刷しやすそうな形式
- 上位リンクの国土数値情報ダウンロードサイトは一見該当ページへ遷移するリンクがない
- 国土数値情報ダウンロードサイトでは似たような内容のコードリスト「行政区域コード」を提供している
以上から見ると、外部公開を想定していない可能性があり、役所仕事のペンや紙を使う仕事で都道府県コードを参照するためのものだと推測できます。正直そこまでセンシティブな情報でもなく、実際印刷したい人もいると考えると、ブロックするほどでもありませんが、強いて言うならばrobots.txtによるクローラー対策は挙げられます
-
都道府県コードをわかりやすい場所で公開していない
「都道府県コード決定版!!!」みたいなものを作って、一位に来るようにSEOを頑張れば(税金でSEO頑張るって言われると少しうーんって気持ちにもなりますが)、初見で困る人がかなり減ると思われます。
以上を踏まえてこのページは批判されるべきのものなのかどうかを考えると、個人的にはそうではありません。理由は単純です。この表はITエンジニア用に作っていません。明らかに印刷用で、むしろ置いてくれてパッと確認したいときに助かっている人もいると思います。このページに列を分けてるとかで文句をつけてるということは、五十音順の表の並びに文句をつけているのと同じだと思います。
正しそうな取得方法は何なのか
- 総務省が全国地方公共団体コードで公開している「都道府県コード及び市区町村コード」のExcelファイルを使う(以下Python/Pandasの処理例)。
import pandas as pd df = pd.read_excel( "https://www.soumu.go.jp/main_content/000894847.xls", usecols="A,B", names=["dantai_code", "prefecture_name"], dtype=str) df["prefecture_code"] = df["dantai_code"].str[:2] df = df[["prefecture_code", "prefecture_name"]].drop_duplicates()
- 非公式ライブリーやコードスニペットを利用する
Githubなどで検索すれば様々な言語のものが山ほど出てきますので、皆使うんだなって思いました。団体コードは常に変更する可能性があり、できる限り総務省のデータを使うべきですが、都道府県コードはよほどのことがない限り変わらないので利用しても(無論最低限のチェックはしたほうが良いが)さほど問題にはならないと思います。 - 手打ち
タイピングスピードにもよりますが、10分もいらないと思いますので、タイピング練習にいかがでしょうか。
最後に
同じデータでも世の中では様々な人に使われていて、その人たちによって様々な使い方をされているため様々な形式が存在するのは当たり前で、どれが正しい形式というものがありません。データを引っ張ってきて処理する前に、まず
- このファイルの内容は正しいか
- このファイルはこれからの処理に適しているか
- 処理自体にかかる時間はどれくらいnのか(手打ちのほうが速いのか)
を検討するところから始まるべきと考えています。Googleを使っているのはITエンジニアだけではありませんので、一般人が見たいものを一番上に出てくるものも普通にあり得ることだと思いますので、それだけではリテラシーなどの話は出てくることはまずないと思います。