エムスリーテックブログエムスリーテックブログ読者になるエムスリーテックブログエムスリー(m3)のエンジニア・開発メンバーによる技術ブログです2024-07-30市区町村マスタを手に入れろ、そして更新し続けろ全国の市区町村の名前とコードをデータベーステーブル化したもの、すなわち市区町村マスタはITシステムを作っていれば何かしらの場面で必要になるものです。その市区町村マスタを作るための元データはどこから手に入れたらいいものか。「作る」というのもありますが、市区町村は再編されるものですから最新の変更にどう追従するか、しかもそれを自動化できるかというのも大いに気になるところですね。Unit1(製薬プロモーション)およびUnit9(治験臨床研究支援)のエンジニアです。今回は私も皆様とまったく同じように市区町村マスタのデータ源に悩んでいろいろ調べましたので、それで得た知見を共有させていただこうと思います。今回は代表的な3つのデータソースをご紹介し比較していきます。hiringほしいのはこんな感じのデータソースですよね公共機関によって提供されている認証なしでアクセスできる公共機関によって提供というのは、一次情報であるかそれに近いというデータの信頼性もさることながら、今後も安定してデータを提供し続けてくれるという期待があります。前書きにも書いたとおり、更新し続けなければなりませんからね。認証なしでアクセスできるというのは、まあプログラマ都合ですね。GET一発で取得できるのと比べるとログインセッション作ってからアクセスしろってのでは急に手間が増えてしまいます。それに認証の前提として利用申込をしたり決裁取って年間払い契約したりが必要だと、仕事がプログラマで完結しないんですよね。それでクイックに試作できなくて話が進まないなんてありがちなことです。そんな思いを胸にWeb検索してみましょう。公共団体と言っていいでしょう。ここのマスタはCDメディアによる販売です。自動化には向きません。地方自治体を所管する省庁ですから一次情報源そのものです。最新データを.xlsxファイルで公開しています*1。その通りですね、日本郵便データが第二の候補です。日本郵便データ、「KEN_ALL.CSV」の取り扱いには苦手意識をお持ちの方も多いかもしれません。以前に比べると今は性質の良いCSVとして再編されたUTF版が出ており、これは自動化処理にも向いています*2。diffを取ってみると、意外な点で相違点が出てくることがわかりました。総務省データは郡名がありません。政令指定都市の区名がありません。日本郵便データは郡名も区名も含んでいますが、結合していてカラムとしては分かれていません。パースして分離する必要があるってことですが、「大和郡山市」のように郡でないのに「郡」の字を含んでいる市町村もあることを思い出すと、機械的に分割する難しさがわかると思います。日本郵便データは北方領土の市区町村を含んでいません。日本郵便データは、正式名と違う町村名があります。八丈島八丈町と三宅島三宅村。*3こうしてみると、特に郡名や区名がほしい場合に総務省データでは足りないし日本郵便データでも機械的には難しそうな分割が必要で、最初から分割されているデータはないものか、と欲が出てきます。思い起こすのが、そう、デジタル庁です。デジタル庁のサイト内を探してみると、ありました第三の候補。https://catalog.registries.digital.go.jp/rc/dataset/ba-o1-000000_g2-000002/resource/07b45993-c322-46e9-8010-bc54612bb67c郡名、区名も含まれているそれらが市町村名と別カラムに分かれているGoogle検索で上位に出てこないので知名度は低いかもしれませんが、大変有用なデータソースですので、皆様是非頭の片隅にとどめおかれれば。デジタル庁に感謝しつつ、あらためてそれぞれのdiffを取って相違点を調べてみます。上の解説で書いた以外にもいくつか違いがありますので、それも含めて比較表を作りました。含むまとめWeb検索で引っかかりにくいので見落とされがちですがデジタル庁の市区町村マスタデータは収録内容・形式において決定版と言ってもよいものです。マスタが必要になったときには是非ご利用を。正式な自治体名以外が住所で使われている自治体があり、総務省データと日本郵便データの両方まで参照することではじめてすべての表記パターンが得られることもわかりました。3つのデータソースともすべて使って収集することにしましょうか、それとも正式な表記以外の住所表記はアドホックに追加するコードを書きましょうか、実装上の選択肢ですね。良いマスタの維持は良いデータソースからです。データソースの性質をしっかり押さえて利用していきましょう。hiring私達エムスリーのエンジニアのお仕事は、降ってきた仕様をただ実装するようなものではなくそれで本当に実現したい世界とは何かを考えて議論して合意してまでを含むものです。市区町村マスタというほしいものがあったとき、市区町村って変わりますよねとかその追従はある程度自動でできてないとしんどいですよねとまず考えるのはその典型ですね。カジュアル面談もやっています。使うというねじれがあるようなのです*4:高知県。正式な自治体名は檮原町だが町役場も略記の梼原町を使っている*5:福岡県。2023の9日目の記事です。9注目記事はてなブログをはじめよう!m3techさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。