オープンソース住所正規化エンジンを地番住所に対応したメジャーバージョンをリリースしました!

Posted by keita-kobayashi on October 10, 2024 · 4 mins read

Geolonia がオープンソースで公開している住所正規化エンジン normalize-japanese-addresses のバージョン 3 を公開しました。

住所マスターの更新

これまでのバージョンでは、国土数値情報や郵便局データを使った住所マスターをベースに動作していました。今回のバージョンでは、住所マスター自体も更新しております。具体的には、デジタル庁が公開しているアドレス・ベース・レジストリ(ABR)を元に作り直しました。

これにより、正規化できる住所の網羅性、精度の向上、更新頻度の安定化が期待されます。

デモサイトのご案内

新バージョンを早速お試しいただけるデモサイトをご用意しました。ぜひご利用ください。

デモサイトはこちら

出力形式の変更点

v3 へのアップグレードの際には、出力形式が変更されているためご注意ください。 v2 はそのまま利用いただく場合は出力形式が変わりませんが、住居表示住所・地番住所の対応は含まれないので、アップグレードをおすすめしております。

出力形式の比較

例えば、「北海道札幌市西区24-2-2-3-3」を入力した場合のレスポンスは以下のようになります。

バージョン 3 のレスポンス

{
  "pref": "北海道", // 都道府県名
  "city": "札幌市西区", // 市区町村名
  "town": "二十四軒二条二丁目", // 大字・丁目名
  "addr": "3-3", // 街区符号・住居符号または地番
  "level": 8, // 正規化レベル
  "point": {
    "lat": 43.074206115, // 緯度
    "lng": 141.315540696, // 経度
    "level": 8 // 位置情報データレベル
  },
  "other": "" // 正規化できなかった文字列
}

以前のバージョンのレスポンス

{
  "pref": "北海道", // 都道府県名
  "city": "札幌市西区", // 市区町村名
  "town": "二十四軒二条二丁目", // 大字・丁目名
  "addr": "3-3", // 正規化できなかった文字列
  "level": 3, // 正規化レベル
  "lat": 43.074273, // 緯度
  "lng": 141.315099 // 経度
}

主な変更点

  • addr フィールドの扱い: 以前のバージョンでは town までしか正規化されず、番地号は簡易的な正規化(例:「3番3号」→「3-3」)を行った後、残りをすべて addr に返却していました。バージョン 3 では、番地号まで正規化し、詳細な情報を提供します。
  • 位置情報の構造変更: 位置情報が point サブオブジェクトに移動し、独立した level を付与しました。地番・住居表示の情報があっても位置情報が無い場合があり、その際は正規化レベルが 8 でも、位置情報レベルは 3 になります。

アップグレード方法

npm を利用している方は、以下のコマンドで新バージョンにアップグレードできます。

npm install --save @geolonia/normalize-japanese-addresses@^3

アップグレード後、必要な部分を新バージョンのレスポンス形式に合わせて修正してください。

注意事項

  • 住所マスターの公開について: 以前は住所マスターのデータも無料で無制限に公開していましたが、新バージョンではデータ量が多いため、公開を一時的に停止または変更・制限する可能性があります。
  • 商用利用について: 商用でのご利用は、ご自身でデータを作成しホスティングすることを強くおすすめします。Geolonia では、有償でのデータ管理・ホスティングサービスを提供予定ですので、ご興味のある方はお問い合わせください。

更新した住所マスターについて

デジタル庁のアドレス・ベース・レジストリを加工し、使いやすい JSON と CSV API に変換するツールを japanese-addresses-v2 で公開しています。

基本的には ABR を利用していますが、一部で引き続き国土数値情報を利用しています。

JSON API

都道府県・市区町村・大字丁目情報は、以前と同様に JSON 形式で公開しています。新バージョンでは、位置情報データを追加し、アドレス・ベース・レジストリに基づいた名前パーツに分けています。

旧バージョン

旧バージョンの API

{
  "北海道": ["札幌市中央区", "札幌市北区", "札幌市東区", ...],
  ...
}

新バージョン

新バージョンの API

{
  "meta": {"updated": 1727945098},
  "data": [
    {
      "code": 10006,
      "pref": "北海道",
      "point": [141.347906782, 43.0639406375],
      "cities": [
        {
          "code": 11011,
          "city": "札幌市",
          "ward": "中央区",
          "point": [141.35389, 43.061414]
        },
        ...
      ]
    },
    ...
  ]
}

その他のエンドポイントについては、レジストリの README をご確認ください。

CSV API

JSON API は都道府県・市区町村・町字/丁目の情報を提供しますが、住居表示住所・地番住所はデータ量が多いため、別のファイルフォーマットを検討しました。市区町村ごとに住所を一つのファイルにまとめ、部分的な読み込みが可能な CSV を採用しています。

余談: 当初は Protobuf の API を検討しましたが、gzip 圧縮後のファイルサイズが CSV とほとんど変わらなかったため、CSV を採用しました。今後圧縮率向上できるようなファイルフォーマットなどあればそれで提供していきたいと考えています。詳しくはGitHub Issueを参照してください

サンプル

フォーマットの詳細は、japanese-addresses-v2 の README をご参照ください。

おわりに

最後までお読みいただき、ありがとうございました。今回のバージョンアップによりレスポンスの形式が変更されていますので、アップグレードを検討される際は慎重にご判断ください。

引き続き従来バージョンの住所マスターはホスティングする予定ですので、アップグレードはご都合の良いタイミングで行っていただければ幸いです。

ご不明な点やご懸念がありましたら、お気軽にお問い合わせください。また、どのようにご利用いただいているか教えていただけるとより良いライブラリを作ることができるので、どうぞよろしくお願い致します。



Geolonia Maps を無料で試してみる

Geolonia では、ウェブ地図や位置情報を利用したウェブアプリケーションや、モバイルアプリケーションの開発を承っています。

お問い合わせ