ふくふくHukuhuku Inc.
EP.17Open Data 20分公開: 2026-05-10

日本の住所データを業務で扱う完全ガイド:郵便番号・住所・緯度経度・digital-address・what3words を全部つなぐ

郵便番号 ⇄ 住所 ⇄ 緯度経度の正引き・逆引き、Google plus-codes / geohash / h3 / Maidenhead など位置エンコーディングの選び分け、日本郵便デジタルアドレスと法人番号 api の現在地まで。住所まわりの実務を一望する大全。

#住所#geocoding#郵便番号#digital-address#{{what3words|*}}#国土地理院
CO📔 Google Colab で開く(上から順にセルを実行)
シェア

「住所」── 顧客マスタ・配送ラベル・店舗マスタ・営業エリア・ハザードマップ重ね合わせ ── どこにでも出てくるデータです。ところがいざ業務に組み込もうとすると 郵便番号・住所・緯度経度・建物名・部屋番号・法人住所 が独立して存在し、それぞれ別の ・別のデータソース・別の表記ゆれを相手にすることになります。

本記事では、日本の住所データを業務で扱う際に登場する主要なID・座標体系の全体像を整理し、それぞれの 正引き・逆引きの実装パターン業務での使い分け方 を一望します。最後にふくふくでよく構築する顧客マスタ住所エンリッチ・パイプラインの設計まで踏み込みます。

📔 ノートブック付き

本記事の全コードを実行可能なノートブックを `/notebooks/od-17-address-master.ipynb` で配布。郵便番号→住所→緯度経度→Plus Code → what3words までを 1 セルずつ動かせます。ダウンロード後、Google Colab の「ファイル → ノートブックをアップロード」から開いてください。

1. 登場人物の全体像

まず、住所まわりで出てくる主なIDと座標を整理します。それぞれターゲットが違うことが大事。

コード/座標桁数示すもの発行元コスト
郵便番号7桁数字町・大字レベルの住所日本郵便DL/API無料
住所文字列可変建物・部屋まで────
緯度経度(WGS84)小数2つ地球上のピンポイント国際標準無料(実装は要API)
7桁英数住所(ゆうID登録のもの)日本郵便(2025/5〜)無料(要ゆうID)
what3words3単語3m × 3m の正方形what3words 社無料枠あり/有料
Plus Codes4〜12文字緯度経度を符号化Google(オープン仕様)完全無料・オフライン可
可変英数緯度経度を Base32 符号化オープン仕様完全無料
H3 Index15桁16進六角形タイルUber(完全無料
法人番号13桁数字法人ID(住所も連動)国税庁API無料
ポイント

郵便番号 → 住所 は「町まで」、住所 → 緯度経度 で建物が特定でき、緯度経度 → Plus Code / what3words / H3 で別表現に変換できます。これらを連結すると「郵便番号→住所→緯度経度→Plus Code」のような 正引きパイプライン が組めます。

2. 郵便番号 ⇄ 住所

データソース:KEN_ALL.

日本郵便が公開する `KEN_ALL.CSV` が事実上の正本。毎月更新完全無料、`https://www.post.japanpost.jp/zipcode/dl/kogaki-zip.html` から CSV/Lzh で取得できます。約12万行、CP932 エンコーディング、10列以上。生で扱うのは苦行なので、ライブラリかAPI経由が現実的。

ローカル処理:posuto

Python ライブラリ posuto で郵便番号→住所
Python
!pip install -q posutoimport posuto
p = posuto.get('100-0001')print(p.prefecture)   # 東京都print(p.city)         # 千代田区print(p.neighborhood) # 千代田# 住所文字列として整形print(str(p))         # 〒100-0001 東京都千代田区千代田

API:認証不要で叩けるサービス

サービスURL認証レート
zipcloudzipcloud.ibsnet.co.jp/api/search不要緩い
HeartRails Expressgeoapi.heartrails.com不要緩い
国土地理院 検索 APImsearch.gsi.go.jp/address-search/AddressSearch不要アクセス頻度を抑える
zipcloud で住所取得(無料・認証不要)
Python
import requests
r = requests.get("https://zipcloud.ibsnet.co.jp/api/search",                 params={"zipcode": "1000001"})data = r.json()for r in data["results"]:    print(r["address1"], r["address2"], r["address3"])# → 東京都 千代田区 千代田

逆引き:住所 → 郵便番号

posuto は逆引き(住所→郵便番号)を直接サポートしないため、KEN_ALL を pandas で読み込んで町名レベルの正規化マッチをかけます。前処理 EP.07「住所の正規化」 が必要に。

3. 住所 ⇄ 緯度経度(

公的サービス

サービス用途認証コスト精度
国土地理院ジオコーダ住所→緯度経度不要無料(頻度抑制)町・字レベル中心
国土地理院 逆ジオ緯度経度→町丁目不要無料(頻度抑制)町丁目
国土数値情報(位置参照情報)全国住所×緯度経度の正本DL不要無料番地・街区レベル
国土地理院ジオコーダで住所→緯度経度
Python
import requests
def gsi_geocode(address: str):    r = requests.get(        "https://msearch.gsi.go.jp/address-search/AddressSearch",        params={"q": address},        timeout=10,    )    r.raise_for_status()    arr = r.json()    if not arr:        return None    # 先頭結果の coordinates: [lon, lat]    lon, lat = arr[0]["geometry"]["coordinates"]    return {"lat": lat, "lon": lon, "title": arr[0]["properties"]["title"]}
print(gsi_geocode("東京都千代田区千代田1-1"))# → {'lat': 35.685..., 'lon': 139.752..., 'title': '東京都千代田区千代田1-1'}
国土地理院 逆ジオコーダで緯度経度→住所
Python
def gsi_reverse_geocode(lat: float, lon: float):    r = requests.get(        "https://mreversegeocoder.gsi.go.jp/reverse-geocoder/LonLatToAddress",        params={"lat": lat, "lon": lon},        timeout=10,    )    return r.json().get("results")
print(gsi_reverse_geocode(35.6862, 139.7528))# → {'muniCd': '13101', 'lv01Nm': '千代田一丁目'}  (千代田区千代田一丁目)

商用サービス(高精度・有料)

サービス強み料金
Google Geocoding API番地・建物まで網羅、最も正確1000リクエスト/$5前後(要キー)
MapBox地図とセットで使いやすい無料枠あり、超過は従量
Yahoo!ジオコーダ国内住所に強い無料・要アプリID(商用注意)
ArcGISGIS統合プラットフォームサブスク
Geocoding 系 (geocoder.io 等)シンプルAPI従量

OSS:Nominatim / 自前ホスティング

OpenStreetMap データを使った Nominatim を で立ち上げれば、完全オンプレで無制限のジオコーディングが可能。GDPR/個人情報保護法上、住所を外部APIに送れないケースで重宝します。日本の住所精度は商用に劣る(番地まで取れないことも)が、バッチ処理+整合性確認用途に十分。

4. 緯度経度 → 別表現(位置エンコーディング各種)

緯度経度をそのまま扱うと精度桁数が冗長で、口頭伝達もしづらい。これを短いコード人間が記憶しやすい単語に置き換える仕様が複数提案されています。

what3words

3m × 3m のグリッド3つの単語で表す商用サービス。例: `cake.found.tribes`。世界中をカバーし、緊急通報や宅配で使われる事例あり。有料API(無料枠あり、エンタープライズ要相談)。

what3words saas(API キー必要)
Python
!pip install -q what3wordsimport what3words
api = what3words.Geocoder("YOUR_API_KEY")  # accounts.what3words.com で取得res = api.convert_to_3wa(what3words.Coordinates(35.6862, 139.7528))print(res["words"])  # → 例: 'cake.found.tribes'
# 逆も可能back = api.convert_to_coordinates("cake.found.tribes")print(back["coordinates"])  # → {'lat': 35.6862, 'lng': 139.7528}

Plus Codes(Google製・オープン仕様)

Google が 完全オープンで公開している位置コード仕様。4〜12文字で精度を選べる。`8Q7XMP9P+39` のような形式。`pluscodes` Python ライブラリで完全オフライン計算可能、APIキー不要・無料。エチオピアやインドの住所が無い地域で公的に採用された実績あり。

Plus Codes(オフライン計算、APIキー不要)
Python
!pip install -q pluscodesfrom pluscodes import encode, decode
# 緯度経度 → Plus Code(精度10桁=14m四方、11桁=3.5m)code = encode(35.6862, 139.7528, length=10)print(code)  # → '8Q7XMP9P+39'
# Plus Code → 緯度経度area = decode("8Q7XMP9P+39")print(area.center_lat, area.center_lon)  # → 35.6862... 139.7528...

Geohash(オープン仕様、空間検索向き)

Base32 で緯度経度を階層的にエンコード。`xn76vehmpq8h` のような形式。「先頭文字が同じ = 近い」という性質から、DBインデックスで近傍検索を実現するのに使われます(Redis GEO や Elasticsearch がサポート)。完全無料・オフライン計算可。

Geohash(空間インデックスとしてDBで使う)
Python
!pip install -q python-geohashimport geohash
# 緯度経度 → Geohash(精度=桁数: 7桁≈153m, 9桁≈4.8m)gh = geohash.encode(35.6862, 139.7528, precision=9)print(gh)  # → 'xn76vehmp'
# 近隣セルを取得(空間検索用途)print(geohash.neighbors(gh))  # → 周囲8方向のGeohash

H3 Index(Uber発、六角形タイル)

Uber が乗車需要分析のために開発したオープンソースの六角形階層タイルシステム。15階層の解像度、近隣セル計算が高速。配車・配送ゾーン・需要密度マップといった集計用途で強い。

H3(六角形タイルで空間集計)
Python
!pip install -q h3import h3
# 緯度経度 → H3 Cell(解像度9 ≈ 174m辺の六角形)cell = h3.geo_to_h3(35.6862, 139.7528, resolution=9)print(cell)  # → '892f5aa6cc7ffff'
# Cell → 中心の緯度経度print(h3.h3_to_geo(cell))  # → (35.6862..., 139.7528...)
# 周囲のセル(半径2セル分)print(len(h3.k_ring(cell, 2)))  # → 19 (中心+周辺18)

Maidenhead Locator(アマチュア無線)

世界をブロック分けする最古の位置コードの一つ。`PM95ho` のような形式。アマチュア無線の交信記録で長年使われてきました。汎用業務で使うことは少ないですが、地球全体を一望できる粗い地図グリッドとして教育用途・ハム業務系SaaSなどで現役。

比較表:いつどれを使う?

仕様オフライン計算コスト得意な用途
what3words❌(API必要)有料(無料枠)口頭伝達・緊急通報・物流ピンポイント
Plus Codes無料住所が無い地域の代替・公開リンク
Geohash無料DB空間インデックス・近傍検索
H3無料需要密度マップ・配送ゾーン・空間集計
Maidenhead無料アマチュア無線・粗い地球グリッド

5. デジタルアドレス(日本郵便、2025/5〜)

日本郵便が 2025年5月26日に開始し、2026年3月19日に「for Biz」v2.0 に拡張されたサービス。7桁の英数字(例: `A7E2FK2`)で住所を表します。アドレス空間は約 2³⁵ ≈ 340 億通り。

重要な制限を最初に整理

誤解されやすいポイント

デジタルアドレス単体では荷物は届きません。配送ラベルには引き続き郵便番号・住所・氏名の記載が必要。「住所入力の時短ツール」 であって 住所の代替ではないことを最初に押さえてください。

個人向けの仕組み

  • ゆうID に登録した住所に対して、ランダムな7桁英数字が発行される
  • 取得は 郵便局アプリ または Web版、料金は 無料
  • 対応サービス側が住所入力欄でこれを受け取り、API経由で実住所に展開する
  • 現在の主な対応先:楽天市場、複数のクラウドEC・CRM

ビジネスデジタルアドレス(for Biz v2.0)

法人・個人事業主向け。法人の 住所・電話番号・法人番号・その他ビジネス情報まで返却される拡張版。1法人につき1組織 の登録ルール。

API 概要(公開部分)

  • OAuth 2.0 / OpenID Connect 認証、HTTPS(TLS 1.2+)必須
  • 提供スコープ: `searchcode`(コード→住所/ビジネス情報)、`addresszip`(住所→郵便番号)、`token`
  • 料金は無料。ただし利用には 法人/個人事業主としてのビジネスアカウント登録 が必須
  • 詳細仕様(エンドポイント・リクエスト形式)は ログイン後のダッシュボードで公開
  • 送信元IP制限あり、現状 IPv4のみ対応
現時点の評価(2027年6月時点)

Pros: 入力UX改善、引越時の住所変更を一元管理、法人情報を信頼性ある経路で取得。Cons: 配送には使えない、対応サービス数がまだ限定的(鶏卵問題)、API利用に法人登録が必要、IPv4限定。「将来の選択肢として注目しつつ、現時点では対応EC側の実装をサポートする」程度の温度感が現実的。

6. 法人番号 → 法人住所

国税庁が運用する 法人番号公表サイト完全無料・APIキー不要で、13桁の法人番号から会社名・住所・登記情報を返してくれます。顧客マスタ・取引先マスタの法人住所を信頼性ある経路で埋める鉄板APIです。

法人番号API で法人住所を取得
Python
import requests
API_BASE = "https://api.houjin-bangou.nta.go.jp/4"
def fetch_corporation(houjin_no: str, app_id: str):    r = requests.get(        f"{API_BASE}/num",        params={            "id": app_id,            "number": houjin_no,            "type": "12",  # JSON            "history": "0",        },    )    r.raise_for_status()    return r.json()["corporations"][0]
corp = fetch_corporation("XXXXXXXXXXXXX", app_id="YOUR_APP_ID")print(corp["name"], corp["prefectureName"], corp["cityName"], corp["streetNumber"])

より高度に 業界・売上規模・従業員数 などのオープンデータも欲しい場合は gBizINFO API(経産省)も併用。前処理シリーズ EP.08「会社名の名寄せ:法人番号 API を活用する」 で詳しく扱っています。

7. 正引き/逆引き 全パターン早見表

From → To推奨手段コスト
郵便番号 → 住所(町まで)posuto / zipcloud / KEN_ALL無料
住所 → 郵便番号KEN_ALL を読み込んで正規化マッチ無料
住所 → 緯度経度国土地理院ジオコーダ / Google Geocoding無料 / 有料
緯度経度 → 住所国土地理院 逆ジオ / Google無料 / 有料
緯度経度 → Plus Code`pluscodes` (オフライン)無料
緯度経度 → Geohash`python-geohash` (オフライン)無料
緯度経度 → H3`h3` (オフライン)無料
緯度経度 → what3wordswhat3words API無料枠/有料
デジタルアドレス → 住所for Biz API(要法人登録)無料
法人番号 → 法人情報法人番号API(要アプリID)無料
住所 → 法人番号法人番号API のあいまい検索無料

8. 業務適用パターン6選

① 顧客マスタの自動エンリッチ

顧客テーブルに郵便番号と住所しか無い → 緯度経度を埋め、H3 / Geohash も付与してエリア集計に使う。これが最頻出。

顧客マスタを 住所 → 緯度経度 → H3 で一括エンリッチ
Python
import pandas as pdimport h3, time
def enrich(row):    geo = gsi_geocode(row["address"])    if not geo:        return pd.Series([None, None, None])    cell = h3.geo_to_h3(geo["lat"], geo["lon"], resolution=8)    time.sleep(0.2)  # 国土地理院API への礼儀    return pd.Series([geo["lat"], geo["lon"], cell])
df = pd.read_csv("customers.csv")df[["lat", "lon", "h3"]] = df.apply(enrich, axis=1)
# 同じ H3 セル内の顧客数を集計print(df.groupby("h3").size().sort_values(ascending=False).head())

② 配送ゾーン判定

出荷時に住所→緯度経度に変換し、H3 セルや Geohash プレフィックスで配送センター割り当てや料金ゾーンを決定する。検索が O(1) で速く、ゾーン境界の管理が楽。

③ ハザードマップ重ね合わせ

顧客住所を緯度経度化 → 国土数値情報の 浸水想定区域・土砂災害警戒区域 ポリゴンと空間結合(GeoPandas)。BCP・防災施策のベースになる。

④ 営業エリア最適化

顧客緯度経度を)して 担当エリアを自動分割。属人的な「俺のテリトリー」配分を脱却。

⑤ 法人マスタの正規化+名寄せ

取引先マスタの会社名揺れを 正規化 → 法人番号API で同定 → 法人住所で二重照合前処理シリーズ EP.06 / EP.08 と組み合わせるのが王道。

⑥ 緊急通報・物流のピンポイント伝達

「住所が無い・伝えにくい」現場では what3words / Plus Codes が威力を発揮。建設現場・キャンプ場・災害現場・配送ドライバーへの最終地点指示など。

9. 設計上の落とし穴

表記ゆれの吸収を最初に

「東京都新宿区西新宿1-2-3」「東京都新宿区西新宿1丁目2-3」「東京都新宿区西新宿1丁目2番3号」── 同じ場所でジオコーダの結果が変わります。前処理 EP.07「住所の正規化」 を必ず通すこと。

API キャッシュは必須

ジオコーディングAPIは外部依存。同じ住所を毎回叩くのは無駄&迷惑。SQLite/Redis にキャッシュを敷き、TTL は1ヶ月程度(住所側が変わることは稀)。

個人情報保護法上の留意

緯度経度は単独では個人情報に該当しないが、容易照合性 で個人情報扱いになることが多い(個人情報保護委員会の解釈)。社外API(Google等)に送る前に 委託先管理・利用目的の明示 を整える。秘匿性が高い案件は OSS の Nominatim を自社環境で。

公的APIは「礼儀」を

国土地理院・zipcloud は無料で使わせてもらってる立場。並列度を抑える(最大1〜2並列)、0.2秒以上のスリープUser- 設定は基本マナー。バッチ処理は夜間に。

10. ライブラリ・APIの推し早見表

やりたい事推し代替
郵便番号→住所(オフライン)`posuto`KEN_ALL を pandas で
郵便番号→住所(API)zipcloud(無料・認証なし)HeartRails / 国土地理院
住所→緯度経度(無料)国土地理院ジオコーダYahoo!ジオコーダ
住所→緯度経度(高精度有料)Google GeocodingMapBox / ArcGIS
住所→緯度経度(オンプレ)Nominatim(Docker)自前 KEN_ALL+位置参照情報
緯度経度→Plus Code`pluscodes`(公式 OLC 仕様)
緯度経度→空間インデックス`h3` または `python-geohash`S2 (`s2sphere`)
3単語コード`what3words`(API)Plus Codes で代替検討
法人番号→法人住所法人番号API(無料)gBizINFO(追加情報)
住所表記の正規化前処理シリーズ EP.07 のレシピ──

11. ふくふくの提案:住所マスタ・パイプラインの典型構成

顧客マスタ・取引先マスタの住所まわりを整える案件で、ふくふくがよく構築する 典型パイプライン をご紹介します。

  • Step 1: 入力正規化 — 全角/半角・丁目/番地・旧字体を吸収(前処理シリーズ EP.07
  • Step 2: 郵便番号で粗ジオコード — 町レベルの緯度経度をまず付与(`posuto` + 国土地理院)
  • Step 3: 番地レベルでジオコーディング — Google or Nominatim(コスト/秘匿性で選択)
  • Step 4: 空間インデックス付与 — H3 解像度 8〜9 を主に、Geohash も併用
  • Step 5: 法人住所は法人番号で二重照合 — 揺れの吸収+経年変化の検出
  • Step 6: キャッシュ層 — SQLite で結果保存、TTL 30日、住所変更時は invalidate
  • Step 7: 監視 — API 失敗率・キャッシュヒット率・住所変更検出件数を Slack に日次配信

1〜1.5ヶ月で MVP(数千件規模・主要 API 1本)、3〜4ヶ月で本番運用(数十万件規模・複数 API・キャッシュ・監視)が目安です。

12. まとめ

  • 住所まわりは 郵便番号・住所文字列・緯度経度・各種位置コード が独立して存在し、それぞれ別の手段で行き来する
  • 国土地理院・posuto・法人番号API といった無料・公的サービスで大半の業務がまかなえる
  • 緯度経度の別表現は用途で選ぶ:Plus Codes(無料・オフライン)、Geohash/H3(空間検索/集計)、what3words(口頭伝達・緊急用途)
  • 日本郵便デジタルアドレスは注目に値するインフラだが、現時点では「入力時短」用途。配送には使えない、対応EC側の対応を待つ温度感
  • 実装上は 正規化・キャッシュ・公的API への礼儀 が長期運用の決め手

次の話

EP.18 では、 (金融庁の有価証券報告書 API) で上場企業の財務データ を扱います。同業他社の決算をスクリプト1本で集めて、自社の利益率・ROE が業界平均と比べてどうかを可視化。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp