LINKED OPEN DATA CHALLENGE 2026 ・ データ活用部門
この作品とデータについて
うちの不動産カルテ Web は、異なるオープンデータを「住所(位置)」という共通軸でつなぎ、人が読める1枚のカルテへ変換するWebアプリです。
課題
住まいを探すとき、物件そのものの情報は物件サイトで手に入ります。しかし、駅までの距離、周辺の施設、ハザードマップ、地形、周辺の建物、過去の取引事例といった「その場所」の情報は、国・自治体・コミュニティがそれぞれ別のサイト・別の形式(住所検索、GeoJSONタイル、CityGML由来の属性、OpenStreetMapのタグ)で公開しています。候補が複数あれば、住所を打ち直しながら何枚ものタブを行き来することになります。
解決
住所を1回入力するだけで、位置を共通キーとして複数のオープンデータを関連付け、1枚の不動産カルテとして確認できます。各項目には出典と取得日時を付け、データ同士がどのキーでつながったかも画面で確認できます。結果はJSON-LDとして機械可読に出力でき、他のツールでも再利用できます。
iOSアプリ「うちの不動産カルテ」(ヒーローズ・リーグ2026応募作品)と同じデータ・判定方法をWebへ移植し、インストールなしで試せるようにしました。
使用しているオープンデータ
Web版が実際に呼び出しているデータだけを載せています。各項目のIDは、カルテのJSON-LDで出典を指すIRIとしても使っています。
住所検索(AddressSearch)
- 提供者
- 国土地理院
- 用途
- 入力住所を緯度経度へ変換し、正規化住所を得る
- つながるキー
- 住所文字列 → 緯度経度
- 取得経路
- 利用者のブラウザから直接(キー不要の公開API)
- IRI
https://yutaroulabs.com/apps/fudosan-karte/web/about/#source-gsi-address
逆ジオコーダ(LonLatToAddress)
- 提供者
- 国土地理院
- 用途
- 緯度経度から市区町村コード・町名を得る
- つながるキー
- 緯度経度 → 市区町村コード
- 取得経路
- 利用者のブラウザから直接(キー不要の公開API)
- IRI
https://yutaroulabs.com/apps/fudosan-karte/web/about/#source-gsi-reverse
標高API
- 提供者
- 国土地理院
- 用途
- 地点の標高と、最寄り駅までの直線上5点の標高から坂の目安を求める
- つながるキー
- 緯度経度
- 取得経路
- 利用者のブラウザから直接(キー不要の公開API)
- IRI
https://yutaroulabs.com/apps/fudosan-karte/web/about/#source-gsi-elevation
地理院タイル(淡色地図)
- 提供者
- 国土地理院
- 用途
- 周辺マップの背景地図
- つながるキー
- 緯度経度 → タイル座標(z15)
- 取得経路
- 利用者のブラウザから直接(キー不要の公開API)
- IRI
https://yutaroulabs.com/apps/fudosan-karte/web/about/#source-gsi-tiles
OpenStreetMap(Overpass API)
- 提供者
- OpenStreetMap contributors
- 用途
- 最寄り駅(2km以内)と周辺施設(800m以内)
- つながるキー
- 緯度経度(半径検索)
- 取得経路
- YutarouLabsのWorker経由(APIキーはサーバー側Secretのみ)
- IRI
https://yutaroulabs.com/apps/fudosan-karte/web/about/#source-osm
不動産価格(取引価格・成約価格)情報(XIT001)
- 提供者
- 国土交通省 不動産情報ライブラリ
- 用途
- 市区町村単位の過去の取引事例
- つながるキー
- 市区町村コード(5桁)+年
- 取得経路
- YutarouLabsのWorker経由(APIキーはサーバー側Secretのみ)
- IRI
https://yutaroulabs.com/apps/fudosan-karte/web/about/#source-reinfolib-trade
国土数値情報(学校)(XKT006)
- 提供者
- 国土交通省 不動産情報ライブラリ(国土数値情報)
- 用途
- 最寄りの小学校・中学校と直線距離
- つながるキー
- タイル座標(z14、地点から半径1kmに重なるタイル)
- 取得経路
- YutarouLabsのWorker経由(APIキーはサーバー側Secretのみ)
- IRI
https://yutaroulabs.com/apps/fudosan-karte/web/about/#source-reinfolib-school
防災情報(XKT025 液状化・XKT026 洪水・XKT027 高潮・XKT028 津波・XKT029 土砂災害)
- 提供者
- 国土交通省 不動産情報ライブラリ
- 用途
- 地点が各ハザード区域に含まれるかの判定
- つながるキー
- タイル座標(z14)+点の内外判定
- 取得経路
- YutarouLabsのWorker経由(APIキーはサーバー側Secretのみ)
- IRI
https://yutaroulabs.com/apps/fudosan-karte/web/about/#source-reinfolib-hazard
3D都市モデル(Project PLATEAU)建築物LOD1
- 提供者
- 国土交通省 Project PLATEAU・各データ整備自治体
- 用途
- 周辺建物の高さ・配置、簡易3D表示、日照阻害リスク・開放感の参考評価
- つながるキー
- 緯度経度 → 空間ID(ズーム18)
- 取得経路
- YutarouLabsのWorker経由(APIキーはサーバー側Secretのみ)
- IRI
https://yutaroulabs.com/apps/fudosan-karte/web/about/#source-plateau
Wikidata
- 提供者
- Wikimedia Foundation / Wikidata contributors
- 用途
- 市区町村を外部LOD(Wikidataの項目)へリンクする
- つながるキー
- 全国地方公共団体コード(6桁・P429)
- 取得経路
- 利用者のブラウザから直接(キー不要の公開API)
- IRI
https://yutaroulabs.com/apps/fudosan-karte/web/about/#source-wikidata
取得日時・基準日(取引事例の対象年、PLATEAUの整備年度、標高データの種別)は、カルテ作成時にデータごとに表示します。データの再配布はしていません(各APIから都度取得します)。
データのつながり
住所は、そのままでは他のデータと結び付きません。そこで住所を緯度経度に変換し、各データが必要とするキー(市区町村コード、タイル座標、空間ID、半径検索)を導いてリンクしています。
- 住所(利用者の入力)
- 緯度経度 ← 国土地理院 住所検索API
- 国土地理院 標高API → 標高・坂の目安(駅までの直線上5点)
- 国土地理院 逆ジオコーダ → 市区町村コード
- 不動産情報ライブラリ XIT001 → 過去取引事例(市区町村単位)
- 検査数字付き団体コード → Wikidata(P429)→ 外部LOD(市区町村の項目)
- タイル座標(z14) → 不動産情報ライブラリ XKT006 / XKT025〜029 → 最寄りの小中学校・ハザード区域(点の内外判定)
- 半径検索 → OpenStreetMap(Overpass API) → 駅・周辺施設(OSMノードIDでリンク)
- 空間ID(ズーム18) → Project PLATEAU → 周辺建物・簡易3D
- タイル座標(z15) → 地理院タイル → 周辺マップ
- 緯度経度 ← 国土地理院 住所検索API
カルテ画面の「このカルテのデータのつながり」では、実際に使ったキーの値(市区町村コード、タイル番号など)と、各データの取得状態をこの形で表示します。
LOD / Linked Dataへの取り組み
1. カルテをJSON-LDで出力
カルテは、利用者のブラウザ内でJSON-LDに変換されます。画面に埋め込まれるほか、「JSON-LDを見る / ダウンロード」から取り出せます。独自語彙は作らず、次の既存標準を使っています。
| 語彙 | 使いどころ |
|---|---|
| schema.org | Dataset(カルテ全体)、Place/GeoCoordinates(調査地点)、AdministrativeArea(市区町村)、PropertyValue(標高・ハザード区域・距離などの値)、TrainStation(駅)、ItemList |
| GeoSPARQL | geo:hasGeometry/geo:asWKT(CRS84のWKTの点) |
| Dublin Core Terms | dcterms:license・dcterms:rights(各出典の利用条件) |
| PROV-O | prov:wasDerivedFrom(値ごとの出典)、prov:qualifiedUsage+prov:atTime(どのデータをいつ取得したか) |
| owl / rdfs | sameAs(Wikidata)、rdfs:seeAlso(Wikipedia日本語版・DBpedia Japanese) |
JSON-LDの構造(抜粋・値は説明用の記号)
{
"@context": {
"@vocab": "https://schema.org/",
"geo": "http://www.opengis.net/ont/geosparql#",
"dcterms": "http://purl.org/dc/terms/",
"prov": "http://www.w3.org/ns/prov#",
"xsd": "http://www.w3.org/2001/XMLSchema#"
},
"@type": "Dataset",
"name": "うちの不動産カルテ",
"about": {
"@type": "Place",
"geo": { "@type": "GeoCoordinates", "latitude": "(緯度)", "longitude": "(経度)", "elevation": "(標高m)" },
"geo:hasGeometry": { "geo:asWKT": { "@value": "<http://www.opengis.net/def/crs/OGC/1.3/CRS84> POINT(経度 緯度)", "@type": "geo:wktLiteral" } },
"containedInPlace": {
"@id": "http://www.wikidata.org/entity/Q…",
"@type": "AdministrativeArea",
"identifier": [{ "@type": "PropertyValue", "propertyID": "全国地方公共団体コード(検査数字付き6桁)", "value": "(6桁の団体コード)" }],
"sameAs": "http://www.wikidata.org/entity/Q…"
}
},
"variableMeasured": [
{ "@type": "PropertyValue", "name": "洪水浸水想定区域(想定最大規模)", "value": "該当区域外",
"prov:wasDerivedFrom": { "@id": "https://yutaroulabs.com/apps/fudosan-karte/web/about/#source-reinfolib-hazard" } }
],
"hasPart": { "@type": "ItemList", "itemListElement": [
{ "@type": "TrainStation", "name": "…", "sameAs": "https://www.openstreetmap.org/node/…" }
] },
"prov:wasGeneratedBy": { "@type": "prov:Activity", "prov:qualifiedUsage": [
{ "@type": "prov:Usage", "prov:entity": { "@id": "https://yutaroulabs.com/apps/fudosan-karte/web/about/#source-gsi-elevation" },
"prov:atTime": { "@value": "(取得日時)", "@type": "xsd:dateTime" } }
] }
}2. 外部LODへのリンク(Wikidata)
市区町村を、国土地理院の逆ジオコーダが返す市区町村コードから算出した検査数字付きの全国地方公共団体コード(6桁)で、Wikidataのプロパティ P429(団体コード) と照合します。名前が似ているだけの別自治体へ誤ってリンクしないよう、次の条件をすべて満たすときだけ sameAs を付けます。
- P429が一致し、廃止日(P576)を持たない項目がちょうど1件であること
- その項目の日本語名が、国土地理院が返した正規化住所に含まれていること
条件を満たさない場合はリンクせず、その理由を画面に表示します。リンクの目的は、カルテの市区町村を、統計・行政・百科事典など他のLinked Dataから辿れるようにすることです。
3. 出典のIRI化と、OpenStreetMapへのリンク
このページの各出典(#source-…)は安定したIRIとして使い、カルテ内の値から prov:wasDerivedFrom で参照します。このページ自体にも、出典一覧を DataCatalog として記述したJSON-LDを埋め込んでいます。駅・施設は OpenStreetMap のノードURL(https://www.openstreetmap.org/node/…)へ sameAs でリンクします。
構成
- 画面:YutarouLabs(Astro製の静的サイト)内の1ページ。取得・判定・JSON-LD生成はすべてブラウザで行います。
- ブラウザから直接:国土地理院(住所検索・逆ジオコーダ・標高・地理院タイル)、Wikidata Query Service。いずれもキー不要のCORS対応公開APIです。
- Worker経由:不動産情報ライブラリ(APIキーが必要)、PLATEAU分析(CORS非対応)、OpenStreetMap(Overpass API。連絡先つきのUser-Agentでミラーを順に試し、取得できないときだけブラウザから直接)。サイトのCloudflare Workerが
/api/karte/*で受け、許可したパラメーターだけを既存のYutarouLabs API(Cloudflare Workers)へ渡します。APIキーはCloudflare Secretとしてサーバー側にのみあり、ブラウザへは渡しません。 - 障害時:データごとに独立して取得し、1つが取得できなくても他は表示します。取得できなかった欄は「現在このデータを取得できません」と表示し、0点や「該当区域外」に置き換えません。
プライバシー
- 入力した住所・検索結果は、利用者のブラウザのメモリ上にだけあり、YutarouLabsのデータベース等に保存しません。検索履歴も保存しません。
- 住所の文字列は、国土地理院の住所検索APIへブラウザから直接送られます。YutarouLabsのWorkerへは送りません。
- Workerへ送るのは、市区町村コード・タイル番号・緯度経度(PLATEAU分析)だけです。Workerはこれらを記録しません(Cloudflareの通常のアクセスログを除く)。
- 住所をURLのクエリパラメーターに入れません。結果を公開URLとして発行したり、公開データセットにしたりしません。JSON-LDはブラウザ内で生成し、ダウンロードは利用者の操作でのみ行います。
- 連続実行を防ぐため、カルテの作成ごとに「私はロボットではありません」の確認をお願いし、次の作成まで10秒あけています。Cloudflare Turnstileによる確認を有効にしている場合、Turnstileが確認のためにブラウザの情報を処理します。確認後に発行するCookieには有効期限と署名だけを入れ、利用者を識別する値・住所・座標は入れません。
- アクセス解析(Google Analytics)には、検索の開始・完了・取得できたデータ数・エラー種別だけを送ります。住所・緯度経度・物件名・検索結果の本文は送りません。
ライセンス
- ソースコード(うちの不動産カルテ Web の画面・取得処理・Worker):MIT License
- 独自に作成した説明資料・図・JSON-LDの構成:CC BY 4.0(クレジット:YutarouLabs)
- 表示・出力するデータ:各データ提供元の利用条件に従います(上の「使用しているオープンデータ」を参照)。OpenStreetMap由来の駅・施設はODbL 1.0、不動産情報ライブラリの情報は同ライブラリのAPI利用規約に従います。
このサービスは、国土交通省不動産情報ライブラリのAPI機能を使用していますが、提供情報の最新性、正確性、完全性等が保証されたものではありません。
注意事項
うちの不動産カルテは、公開データにもとづく参考情報をまとめて表示するものです。次のことは行いません。
- 不動産査定
- 資産価値の判定
- 法的判断
- 災害に対する安全性の保証
過去の取引事例は、市区町村等の過去取引事例であり、対象物件の価格・資産価値を示すものではありません。ハザードは区域データに含まれるかどうかを示すもので、「該当区域外」は災害が起きないことを意味しません。最寄りの小中学校は直線距離で近い学校で、通学区域を示すものではありません。坂の目安は直線上の標高差によるもので、道路の勾配ではありません。PLATEAUによる日照阻害リスク・開放感は、LOD1の簡易な建物形状にもとづく参考評価です。
住まいを決める際は、現地の確認、自治体の一次情報、専門家への相談とあわせてご利用ください。
継続公開と更新
本サービスは YutarouLabs(https://yutaroulabs.com)の一部として、少なくとも2027年3月31日まで公開を継続します。データは各提供元から都度取得するため、提供元の更新がそのまま反映されます。外部APIの仕様変更や障害時は、該当する欄だけが「取得できません」となり、他の欄は引き続き表示されます。