はじめに
住所を緯度経度に変換するジオコーダーを過去の住所にも対応させた「歴史的ジオコーダー」の開発について、その考え方と具体的な構築手順を紹介します。講演者は、ROIS-DS人文学オープンデータ共同利用センター(CODH)および国立情報学研究所の北本朝展氏で、研究協力者として山本智子氏(ROIS-DS CODH)が加わっています。現代の住所を対象とするPython版ジオコーダーjageocoderを土台に、明治期(1907年)の旧東京市15区の住所を解析・可視化できるようにするまでの取り組みを扱います。地図やGISで近代以降の歴史資料を地理情報化したい研究者・アーキビストにとって、作業の進め方を知る手がかりとなる内容です。
住所とジオコーディングとは
住所は地名の一種でありながら、行政区分に対応した階層構造を持つ点に特徴があります。たとえば「東京都千代田区一ツ橋二丁目1番2号」のように、都道府県から番号までが入れ子状に並び、地名を細分化する番号によって位置を指定します。
日本の住所には、大きく分けて2つの体系が併存しています。ひとつは地番住所で、法務局が土地ごとに定めた番号であり、その土地の所有権に対応し、日本全国を覆っています。もうひとつは住居表示住所で、市町村が建物(特に玄関)につけた番号であり、郵便配達など日常の利用に便利なように整備された、より新しい体系です。ただし住居表示住所は日本の一部にしか対応していません。このほか、京都市の通り名のように地域ごとの特殊な住所体系も存在します。
もうひとつの特徴として、日本の住居表示住所は街区(ブロック)に番号をつける街区方式を採っており、道路方式が主流の欧米とは異なります。
住所を緯度経度に変換し、地図上に位置を示す処理をジオコーディングと呼びます。住所を入力するだけで地図上にマーカーが立つこの機能は、多くの地図サービスが備える基本的な機能です。一方、施設名などで検索して表示するPoint of Interest(POI)は、施設が独自の緯度経度を持つ場合もありますが、住所のような階層構造を持たない点でジオコーディングとは異なります。
日本の住所が抱える課題
日本の住所を機械的に扱おうとすると、いくつもの困難に直面します。まず、今のところ日本全体を網羅した住所データベースは存在しません。そのうえ日本の住所はとにかく複雑で、パターン化が困難です。たとえば「長野県長野市南長野県町」のように、ひとつの住所のなかに都道府県名を表す文字列が2回現れる例があり、単純な処理では破綻してしまいます。
さらに、表記揺れ、異体字、複数の表記法、部分的な省略といった問題にも対応しなければなりません。こうした難しさはしばしば「住所の闇」「住所の沼」と語られ、関連する解説記事も数多く公開されています。ジオコーディングは、一見単純に見えて実際には手強いこの対象を扱う処理です。
jageocoder——現代日本の住所ジオコーダー
この講演で土台となるのが、情報試作室の相良毅氏が開発するオープンソースのPython版ジオコーダーjageocoderです。jageocoderは現代の日本の住所を可能な限り網羅的にカバーし、豊富な機能と高速な処理を備えています。Pythonスクリプトとして実行できるため、一件ずつ操作しなくても大量のデータを一括で処理できます。住所から緯度経度への変換(ジオコーディング)に加え、その逆のリバースジオコーディングや、サーバを立ち上げてAPI経由で利用する機能なども備えています。
数ある機能のなかで、後の歴史的ジオコーダーにとって鍵となるのが、住所データベースを目的に合わせて変更できる点です。住所データベースを差し替えられることが、後述する過去の住所への拡張を可能にします。
jageocoderが定義する住所は、都道府県(Pref)、郡・支庁・島(County)、市町村・特別区(City)、政令市の区(Ward)、大字(Oaza)、小字・丁目(Aza)、街区・地番(Block)、住居番号・枝番(Bld)の8階層に分かれ、各階層の地名がつながって住所になります。これらがすべて書かれていれば完璧な住所ですが、実際には都道府県や郡などが省略されることが多く、省略された部分を補って解析するのが難しい点に課題があります。住所ジオコーディング(Jageocoder)のデモページで「東京都千代田区一ツ橋2-1-2」を入力すると、街区レベルにあたる住所レベル7まで解析でき、正規化された住所として「東京都 千代田区 一ツ橋 二丁目 1番」が得られます。ハイフンをひらがなやカタカナで書くといった揺れにもjageocoder側で対応できます。
jageocoderが参照する住所データベースは、開発者の相良氏が複数の出典から構成しています。そこには、CODHの歴史的行政区域データセットβ版地名辞書、国土交通省の位置参照情報(大字町丁目レベル・街区レベル)、Geoloniaの住所データ、国土地理院の電子国土基本図(地名情報)、日本郵便の郵便番号データ、デジタル庁のアドレス・ベース・レジストリ、法務省の登記所備付地図データなどが含まれます。これだけ多くの省庁・機関が、重複ではなくそれぞれの目的でデータを作っているために全体は複雑で、これらを扱うだけでも大きな労力がかかります。
現代の住所を対象とした応用事例
歴史的ジオコーダーに進む前に、jageocoderは現代の住所を対象として、発電所データの地図化、歴史地名データの位置推定、テキストからの地名抽出などに応用されてきました。
エレクトリカル・ジャパン
エレクトリカル・ジャパンは、FIT制度に登録され運転を開始した発電所384,138件を地図上にマッピングした事例です。地方の発電所には字レベルの細かい住所が多く、そうした住所は一般的な地図サービスでは検索できないため、ジオコーディングが難しいデータセットです。そこで、可能な限り詳細なレベルまで住所を解析できるように、jageocoderを改良しました。ただし、山の中にある水力発電所などは住所が「国有林」などとしか書かれていない場合があり、正確な位置までは特定できないという限界も残ります。
『日本歴史地名大系』地名項目データセット
『日本歴史地名大系』地名項目データセットは、平凡社が刊行した『日本歴史地名大系』の地名の場所を推定した事例です。この文献の地名には平成の大合併以前の住所が記録されているため、そのまま現在のジオコーダーに入れても位置が特定できません。そこで、大合併以前の住所に対応する現代住所の候補をjageocoderを用いて探したうえでジオコーディングし、地名の推定緯度経度として地図上にマッピングしました。この作業を通じて、歴史的な住所の変換もjageocoderで限定的には可能であることが示されています。ただしあくまで限定的で、自動化できる部分もある一方、手動で対応しなければならない部分も多く残ります。
GeoNLP
GeoNLPは、テキスト中に出現する地名と住所を自動的に抽出し、辞書中の地名とリンクするソフトウェアです。この住所部分のエンジンにjageocoderが使われています。地名辞書を拡張すれば適用範囲を広げることもでき、GeoNLPもPython版のオープンソースソフトウェアとして提供されています。
歴史的ジオコーダーへの拡張と近代東京アドレスジオコーディングデータセットの継承
ここまでは現代の住所が対象でしたが、これを過去の住所に延長できるかが次の課題です。前述のとおりjageocoderは住所データベースを入れ替えられるため、過去の住所データベースを用意して差し替えれば、過去の住所も同じように地図に対応づけられるはずです。この考え方に基づき、過去の住所データベースを作成するツールjageocoder-dbtoolを開発し、歴史的ジオコーダーを実現しました。
その出発点となったのが、石川和樹氏・中山大地氏(東京都立大学)による『近代東京アドレスジオコーディングデータセット』です。これは、東京郵便局(現東京中央郵便局)が1907(明治40)年に旧東京市15区を対象として作成した「東京郵便局 明治40年 東京市十五區番地界入地圖」を基にしたもので、各区1枚ずつ計15枚から構成され、地番や主な建築物の名称などが記載された、一般に郵便地図(逓信地図)と呼ばれる地図です。作成方法の詳細は、石川氏・中山氏による地理学評論の論文にまとめられています。
このデータセットは独自のジオコーディングシステムとして公開されていましたが、いくつかの課題を抱えていました。担当者の異動によりシステムの維持が困難になっていたこと、表記揺れへの対応はなされていたものの、利用者側が独自の表記揺れルールを加えることは難しかったこと、ウェブ経由の変換方法しかなく数万件規模の一括変換には向いていなかったこと、地図表示など新機能の導入による改良の余地が大きかったことです。そこで中山大地氏に申し入れて利用許諾を得るとともに、元となるシェープファイル形式のデータを取得し、そこから新しいデータセットを構築しました。
旧東京市15区住所データセットの構築
旧東京市15区住所データセットの構築は、取得したシェープファイルを歴史的ジオコーダーで使える形に整える作業と、最も手間のかかった表記揺れ・異体字への対応から成ります。
公開までの流れ
作成にあたっては、地理データ・住所データ・表記揺れデータの3つを用意する必要がありました。地理データについては、GISで扱うシェープファイル形式をウェブで使いやすいGeoJSON形式に変換し、住所などの誤りを修正したうえで、区画の代表点を独自に推定しました。住所データについては、GeoJSONの属性に含まれる住所の文字列を、jageocoder-dbtoolを用いてjageocoderの住所辞書形式に変換しました。さらに、実際のデータ(関東大震災死亡者データ)を用いて典型的な表記揺れや異表記を収集し、辞書を強化しました。こうして作成した辞書データ(住所データと表記揺れ辞書データを統合したもの)と、修正済みのGeoJSONデータを合わせて公開しました。
jageocoder-dbtoolは、GeoJSON形式の地図データからjageocoder用の住所データベースを作成するツールで、GeoJSON形式からテキスト形式を経て住所データベースへと変換します。住所の表記揺れや異表記は個別にテキスト形式で作成し、変換時に統合します。辞書を使う優先順位を決められるため、表記揺れ辞書を優先的に利用することで、実データに含まれる不正確な住所にも対応できます。
表記揺れ・異表記辞書
表記揺れ・異表記辞書は、現実に出てくる住所を、住所データベース中のエントリにマッピングするための対応を一件ずつ記述したものです。たとえば「東京府東京市小石川區大塚辻町」を「東京府東京市小石川區小石川大塚辻町」として扱うよう指定します。これは、実際には省略されて書かれている住所でも、「小石川」があるものとして扱ってジオコーディングするルールです。同様に、「神田區一ツ橋通」をデータベース中の「一ッ橋通町」に変換するといった対応も記述します。
こうした表記揺れの典型的なパターンとして、区と町名の間に入る地域名があります。たとえば小石川区には、小日向、小石川、関口といった共通の接頭辞を持つ町名が多くあります。この地域名は日常の会話ではあまり意識されず省略されがちで、実データに頻出するこうした省略形に対応するため、地域名を補うルールが多く求められます。
異体字への対応
異体字については、jageocoderが標準で地名異体字辞書を持っているため、頻出する異体字はこちらに登録します。利用例が多くない異体字は、表記揺れ・異表記辞書のなかで個別に処理します。頻出する異表記も辞書に登録し、たとえば「深川霊岸町」については複数の異なる表記に対応します。異体字のうち、Unicodeとして適当でない書き間違いに近い文字は、無理に異体字として登録せず住所データ側を修正して対応します。辞書を拡張するか元データを修正するかは、どれだけ例外的かという観点から判断する、微妙なバランスの上に成り立っています。
公開したデータセットとマップ
こうして公開したのが旧東京市15区住所データセットです。住所件数は56,089件で、辞書データはjageocoderにインストールして利用でき、GeoJSONデータはオリジナルデータの表記揺れを修正し、区画代表点を独自に推定したものです。ライセンスはCC BYで、オープンデータとして公開しています。
このデータセットを検索するためのインターフェースが旧東京市15区住所マップです。住所をポリゴンとポイントのデータに変換し、地図上部のボックスに住所を入力すると、ジオコーディングした結果を代表点(赤い点)とポリゴン(多角形)で表示します。たとえば「鹿鳴館」を調べると、その住所が東京府東京市麹町区内山下町であったことがわかり、現在のどのあたりかを地図上で確認できます。ただし、この例では一丁目一番地までしか特定できず、番地までは判明しません。
歴史的ジオコーダーの作成手順と今後の展開
以上の取り組みをふまえ、歴史的ジオコーダーを作成する手順は次のように整理できます。まず、古地図に記された住所のポイントやポリゴンをGIS上でトレースし、GeoJSON形式のデータを作成します。測量が正確でない時代の地図では、その前に古地図のジオレファレンス(位置合わせ)が必要となり、特に地図の歪み方への対応が難しくなります。もっとも1907年の地図のように測量されている場合は、比較的簡単に位置を合わせられます。基礎データができたら、現実の住所データを対象に表記揺れや異体字・異表記の辞書追加を行いながら精度を高め、この精度向上のループが限界を迎えたところで歴史的ジオコーダーが完成します。
同じ手順は他の都市・時代にも適用でき、特別な技術というより必要なのは労力です。いったん作成すれば歴史資料を大量に一括処理できるため、一件ずつ処理する場合に比べて作業効率は大幅に向上します。さらに、表記揺れなど現実データのクリーニング方法を共有化することで、担当者による見落としやばらつきが減り、作業品質も安定かつ向上すると北本氏は見込んでいます。こうして、近代以降の歴史資料の自動マッピングに向けて歴史的ジオコーダーの開発を支援していきたい、という展望が示されました。
この取り組みは、文部科学省「人文学・社会科学のDX化に向けた研究開発推進事業」のもとで2024年12月から進むDiHuCo(DHコンソーシアム)という枠組みの中に位置づけられます。ROIS-DS CODHはこの中で地図・地誌類領域の人文DXを担当し、研究実践ハブにおいてDHユースケースの開発やガイドラインの執筆などを担っています。明治・大正・昭和といった近代の資料を一括して地理情報にすることで、人文学・社会科学のDX化が大きく進むと北本氏は期待を寄せています。
講演情報
- イベント:第26回CODHセミナー - 歴史的ジオコーダーの開発と関東大震災に関する利用事例
- 講演日:2026-06-25
- 講演者:北本 朝展(ROIS-DS人文学オープンデータ共同利用センター/国立情報学研究所)
- 講演資料:人文学研究データリポジトリ(プレゼン資料)
- 講演動画:YouTube
関連リンク
- Jageocoder - A Python Japanese geocoder
- 住所ジオコーディング(Jageocoder)デモ
- jageocoder-dbtool(GitHub)
- 歴史的ジオコーダー
- 旧東京市15区住所データセット
- 旧東京市15区住所マップ
- エレクトリカル・ジャパン - 発電所マップと夜景マップから考える日本の電力問題
- 『日本歴史地名大系』地名項目データセット
- GeoNLP - テキストを自動的に地図化する地名情報処理ソフトウェア
- 国勢調査町丁・字等別境界データセット 地名ビジュアル検索
- とにかく日本の住所のヤバさをもっと知るべきだと思います|inuro
- 明治期東京におけるアドレスジオコーディングシステムの構築
- DHコンソーシアムプロジェクト(DiHuCo):研究実践ハブ/地図・地誌類領域
この記事は、講演記録を基に生成AIを利用して作成したユースケース記事です。