住所データに関する覚え書き

no extension

Bluesky の TL で見かけた記事から。

書いてる内容がイマイチよく分からなかったので,順を追って整理してみよう。

住所は2つある

実際にやりとりされる住所には通り名とかあったり色々複雑だけど,お役所なんかでやりとりする住所には大きく2つあるらしい。

アドレス・ベース・レジストリ|デジタル庁

「住居表示を実施しているアドレス」というのは住所の最後の方に「○○番○○号」とか付いてるやつ。 一方「住居表示を実施していないアドレス」というのは土地に対する住所だそうで,不動産に絡む手続きなどで使われるらしい。 なんで2つに分かれているかというと根拠となる法律が違うからで,住居表示は「住居表示に関する法律(住居表示法)」,土地の住所は「不動産登記法」に基づいているそうだ1

住所情報の管理主体は3つある

確かに法律は2つに分かれているけど「別に2つに分ける必要なくね?」って思うよね。 実は上述に示す住所の各要素を管理している主体は3つに分かれているらしい。

住所の「表記揺れ」解決で官民の負担削減、災害支援も アドレス・ベース・レジストリが目指す「データを自動的に使える未来」 |デジタル庁ニュース

じゃけこんな面倒臭いことになってるのか orz

都道府県および市区町村は全国地方公共団体コードとしてコード化されている。 街区符号・住居番号・地番はそもそもコードである。

問題は町字 (まちあざ) で,これがコード化されていなのである。

アドレス・ベース・レジストリ

というわけでアドレス・ベース・レジストリ2(Address Base Registry; ABR)が整備されたということのようだ。 ABR では町字にコードが付与されただけでなく街区符号・住居番号・地番にも改めてコード(番号)が振られている3。 各データはダウンロードページから取得できる。

たとえば松江市役所の住所は「島根県松江市末次町86」なので

コード種別 ID 名称
全国地方公共団体コード 322016 島根県松江市
町字コード 0083000 末次町
住居表示フラグ 住居表示なし
住居表示-街区符号
住居表示-住居番号
地番 000860000000000 86

となる。 末次町は「住居表示なし」なので住居表示マスターではなく地番マスターから検索する。

なお町字と郵便番号が対応している場合は,町字マスターに郵便番号が付与されている。 郵便番号が対応していない町字もあるので注意。 ホンマ面倒臭いよな。

ABR データの利用規約は以下を参照のこと。

最後の方に

本利用ルールは、クリエイティブ・コモンズ・ライセンスの表示4.0国際に規定される著作権利用許諾条件。以下「CCBY」といいます。)と互換性があり、本利用ルールが適用されるコンテンツはCCBYに従うことでも利用することができます。

と書かれているので   ライセンス下で利用できるようだ。

住所データの正規化

ABR データだけでは「表記揺れ」は解決できない。 何らかの正規化処理が必要になる。

正規化ツールとして「ABR ジオコーダー(abr-geocoder)」が用意されている。

ABR ジオコーダーは API サービスまたは Web サービスを構築するためのツールキットで TypeScript で実装されているようだ。 どこかで API サービスを提供しているってわけじゃないみたい。

abr-geocoder | ABRジオコーダー(abr-geocoder)は、アドレス・ベース・レジストリ(ABR)で整備された住所・所在地を用いたジオコーダーです。

バックエンド DB は SQLite。 ABR データを SQLite にインポートするスクリプトも同梱されている。

正規化ルールは以下の通り:

Go でコマンドライン版で書けないかなぁ。 仕事ならやるんだけど(笑)

【おまけ1】 Geolonia による住所正規化ツール

Geolonia は ABR を使った API サービスを構築するためのツールを提供している。

さらに正規化ライブラリも提供しているようだ。

Geolonia では有料のサービスも提供していて実績もあるみたいなので,業務で使うなら検討してもいいかもしれない。

【おまけ2】 CSV ファイルエディタ CSVI

CSVI はテキストベースのターミナル上で動作する CSV ファイルエディタだ。

Go 製のツールで Windows および UNIX 系の OS で動作する。 シングルバイナリ構成で Windows, Linux, FreeBSD および macOS 用のバイナリが提供されている。

Ubuntu 機に入れて使っているが,ビュアーとしてもすごく快適。

csvi スナップショット

かなり大きいファイルでもストレスなく開けるっぽいので,普段ターミナル上で作業している人にはオススメである。

ブックマーク


  1. 住居表示がない場合もある。たとえば松江市役所の住所は「島根県松江市末次町86」だが,最後の「86」は街区符号でも住居番号でもなく地番である。 ↩︎

  2. アドレス・ベース・レジストリの法律上の正式名称は「公的基礎情報データベース」と呼ぶらしい。 ↩︎

  3. 例外的に街区符号や地番に数字以外の文字が含まれる場合があるらしい。 ↩︎