概要
デジタル庁から abr-geocoder という正規化ツールが発表されていたため、使用してみます。
環境
OS: Windows 11 Pro
Node.js: v20 latest
手順
abr-geocoder のインストール
適当なディレクトリに npm で abr-geocoder をインストールします。
npm が無い場合は Node.js をインストールします。
データに50GBほど必要とするため、容量に余裕のあるドライブで実施してください。
npm install @digital-go-jp/abr-geocoder
npm link @digital-go-jp/abr-geocoder
データダウンロード
データダウンロードします。
デフォルトだと C ドライブのユーザーディレクトリ(C:\users\***\.abr-geocoder)に保存してしまうので、data サブディレクトリを作成してそちらに保存します。
abrg download -d ./data/
データ量が多いため、ダウンロードには、おおよそ1時間ほどかかります。
PS D:\Code\abr-geocoder> abrg download -d ./data/
download: ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0% | 0/1 | ETA: 0s
大量のエラーが出力される場合があります。
この場合は無視して良いと思います。
--------> retry!!! Error: read ECONNRESET
at TLSWrap.onStreamRead (node:internal/stream_base_commons:218:20) {
errno: -4077,
code: 'ECONNRESET',
syscall: 'read'
}
{
kind: 'download',
dataset: 'town_pos',
packageId: 'ba-o1-205907_g2-000006',
useCache: true,
lgCode: '205907'
}
また、ダウンロードが停止する場合もあります。進捗表示のまま固まります。
この場合はCtrl+Cでキャンセルして再実行します。
download: ███████████████████████░░░░░░░░░░░░░░░░░ 58% | 6303/10806 | ETA: 3h15m
データダウンロード(補完)
だいたい、データダウンロードで失敗するので、データダウンロードが一旦完了したら、再度ダウンロードを行い補完します。
abrg update-check -d ./data/ --yes
データ量
ダウンロード完了すると、これくらいのデータ量があります。
やたらとデータ量があります。

サーバー開始
サーバーをスタートします。
データディレクトリを変更したため -d でデータを指定する必要があります。
abrg serve start -d .\data\
ブラウザ等で以下のURLにアクセス
http://localhost:3000/geocode?address=東京都千代田区紀尾井町1-3
結果
[
{
"query": {
"input": "東京都千代田区紀尾井町1-3"
},
"result": {
"output": "東京都千代田区紀尾井町1-3",
"others": [],
"score": 1,
"match_level": "residential_detail",
"coordinate_level": "residential_detail",
"lat": 35.679107172,
"lon": 139.736394597,
"lg_code": "131016",
"machiaza_id": "0056000",
"rsdt_addr_flg": 1,
"blk_id": "001",
"rsdt_id": "003",
"rsdt2_id": null,
"prc_id": null,
"pref": "東京都",
"county": null,
"city": "千代田区",
"ward": null,
"oaza_cho": "紀尾井町",
"chome": null,
"koaza": null,
"blk_num": "1",
"rsdt_num": "3",
"rsdt_num2": null,
"prc_num1": null,
"prc_num2": null,
"prc_num3": null
}
}
]
色々と試してみましたが、品質は悪くないと思います。
メモリ消費が激しい
ストレージだけでなく、メモリもかなり消費します。
私の環境では5GBほど消費していました。サーバーは最低でも8GBのスペックは用意する必要があると思います。

所感
品質は悪くはないのですが、やたらとデータ量が重い・初期化に時間がかかる点は非常にネックです。
失敗すると止まってしまうため自動化が困難です。
55GBはコンテナにすると大きすぎますし、VMで個別ダウンロードも止まってしまうためあまり現実的ではありません。
メモリ消費もかなり激しいので少々コストが重いと思います。
本番で運用することを考えると、厳しい点がいくつかあります。
もう少しクオリティアップしていただく必要があるかなという印象です。経産省のimiツールは軽かったのですが・・・
とはいえ、公式からこういったツールが発表されていることは非常に評価できますし、今後に期待したいところです。
参考資料
コマンドヘルプ
> abrg
====================================
= abr-geocoder version: 2.2.0
====================================
abrg <inputFile> [outputFile] [options]
指定されたファイルに含まれる日本の住所を緯度経度に変換します
コマンド:
abrg update-check [options] データセットのアップデートを確認します
abrg download [options] アドレス・ベース・レジストリの最新データをダウンロードします
abrg <inputFile> [outputFile] [options] 指定されたファイルに含まれる日本の住所を緯度経度に変換します [デフォルト]
abrg debug <command> デバッグ用のコマンド
abrg serve <command> REST apiサーバーとしてジオコーディング機能を提供します
位置:
inputFile 日本の住所を1行ごとに記入したテキストファイルへのパス。'-'を指定すると、標準入力から読み取ります [文字列]
outputFile 出力するファイルのパス。省略すると、標準出力に出力します。 [文字列]
オプション:
--help ヘルプを表示 [真偽]
--version バージョンを表示 [真偽]
-d, --abrgDir データを格納するディレクトリを指定します。デフォルトは (home)/.abr-geocoder です
[文字列] [デフォルト: "C:\Users\***\.abr-geocoder"]
--target 検索ターゲットを指定します。デフォルトは'all'
[文字列] [選択してください: "all", "residential", "parcel"] [デフォルト: "all"]
--fuzzy 指定した1文字をワイルドカードとして処理します [文字列]
-f, --format 出力フォーマットを指定します。デフォルトは'json'
[文字列] [選択してください: "csv", "json", "ndjson", "geojson", "ndgeojson", "simplified"] [デフォルト: "json"]
--debug デバッグ情報を出力します [真偽]
--silent プログレスバーを表示しません [真偽]
コメント