住所データに関する覚え書き
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)」が用意されている。
- digital-go-jp/abr-geocoder: Address Base Registry Geocoder by digital.go.jp
 - digital-go-jp/abr-geocoder-web: Address Base Registry Geocoder Web Client by digital.go.jp
 
ABR ジオコーダーは API サービスまたは Web サービスを構築するためのツールキットで TypeScript で実装されているようだ。 どこかで API サービスを提供しているってわけじゃないみたい。
バックエンド DB は SQLite。 ABR データを SQLite にインポートするスクリプトも同梱されている。
正規化ルールは以下の通り:
- アドレス・ベース・レジストリの階層構造・表記に基づいた住所の正規化
 - 都道府県省略を補完
 
東京都千代田区→東京都千代田区千代田区→東京都千代田区- 住居表示、地番をハイフン表記に正規化
 
1番3号→1-31番地3→1-3- 全角数字を半角数字に正規化
 
1番3号→1-31−3→1-3- 全角英字を半角英字に正規化
 
DIGITALビル→DIGITALビル- 表記揺れ正規化
 
- JIS 第2水準 => 第1水準、旧字体 => 新字体 変換
 - 半角カナ => 全角カナ 変換
 - 漢数字、全角数字 => 半角数字 変換
 - 全角英字 => 半角英字、全角数字 => 半角数字 変換
 - 揺らぎ => ひらがな 変換
 - 例
 
壱,一,1,1などの表記揺れに対応霞ケ関,霞ヶ関,霞ガ関→霞が関篠ノ井,篠の井,篠之井→篠ノ井
正規化仕様より
Go でコマンドライン版で書けないかなぁ。 仕事ならやるんだけど(笑)
【おまけ1】 Geolonia による住所正規化ツール
Geolonia は ABR を使った API サービスを構築するためのツールを提供している。
さらに正規化ライブラリも提供しているようだ。
Geolonia では有料のサービスも提供していて実績もあるみたいなので,業務で使うなら検討してもいいかもしれない。
【おまけ2】 CSV ファイルエディタ CSVI
CSVI はテキストベースのターミナル上で動作する CSV ファイルエディタだ。
Go 製のツールで Windows および UNIX 系の OS で動作する。 シングルバイナリ構成で Windows, Linux, FreeBSD および macOS 用のバイナリが提供されている。
Ubuntu 機に入れて使っているが,ビュアーとしてもすごく快適。

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



