iOSアプリ「うちの不動産カルテ」を、PLATEAU AWARD 2026の一般部門に本エントリーしました。

うちの不動産カルテは、もともと住所からハザードや周辺施設などを調べるアプリでした。今回の応募に向けて、国土交通省の3D都市モデル「Project PLATEAU」を組み込み、文字・数値・2Dの地図が中心だった不動産情報に、周辺の都市空間を立体的に把握する視点を加えました。

同じアプリをほかのコンテストにも出していますが、この記事では技術面をいちばん詳しく書いています。

紹介動画

動画が表示されない場合は、YouTubeで見るからご覧ください。

PLATEAU AWARDとProject PLATEAU

Project PLATEAUは、国土交通省が進める3D都市モデルの整備・活用・オープンデータ化のプロジェクトです。建物の形状や高さ、用途などを持つ3D都市モデルが、オープンデータとして公開されています。

PLATEAU AWARDは、この3D都市モデルを活用した作品を募集する開発コンテストです。2026年は一般部門の本エントリー締切が2026年11月19日、一次審査が12月5日・6日のオンラインプレゼンと案内されています。最新の情報はPLATEAU AWARD 2026 特設サイトでご確認ください。

応募内容

項目 内容
作品名 うちの不動産カルテ
応募部門 一般部門
応募状況 本エントリー済み
提出物 紹介動画、作品説明のPDF資料

なぜ不動産アプリに3D都市モデルを組み合わせたか

住まいを選ぶときに気になることの中には、地図や数値の一覧だけでは分かりにくいものがあります。周りを高い建物に囲まれていないか。南側にどのくらいの高さの建物があるか。冬に日差しが遮られやすい位置ではないか。

こうしたことは、これまで現地に行ってみないと分からないことでした。一方で、PLATEAUには建物の形と高さが3D都市モデルとして整備されています。これを使えば、内見の前に「この時間帯の様子は現地でよく確かめよう」と気づくための材料を出せると考えました。

ここで意識したのは、PLATEAUを3Dで表示するだけで終わらせないことです。建物の形・高さ・配置を、住環境の参考指標に変換して、既存のカルテ(ハザード・駅・周辺施設・過去の取引事例など)と同じ画面で比べられるようにしました。

使っているPLATEAUデータ

PLATEAU配信サービスのcitygml/spatialid_attributesを使っています。物件の座標を囲む空間ID(ズーム18)を指定して、周辺の建築物の属性とLOD1の外接範囲(建物を高さのある箱として表した範囲)を取得します。

  • 建物の高さは、計測高さ(bldg:measuredHeight)を優先して使います。欠けている場合だけ、LOD1の外接範囲の上下の高度差を使い、その旨を記録します。
  • 用途・階数・建築面積などは、データにある場合だけ使います。ない値は推測しません。
  • 対応地域の一覧はアプリに固定していません。公式APIが建築物属性を返した地域を対応地域として扱うので、PLATEAUの整備地域が広がればアプリを更新しなくても対応できます。

処理の流れ

PLATEAU配信サービスからCloudflare Workerを経てiOSアプリで表示するまでの構成図
PLATEAU 3D住環境分析の構成(技術構成図)

CityGMLや3D Tilesの本体をiPhoneに直接取得するのではなく、Cloudflare Workerで必要な指標と建物だけに整えてからアプリに返す構成にしました。

観点 iPhoneで直接取得 Workerで解析(採用)
転送量 大きくなりやすい 必要な指標と建物だけ
仕様の違いや欠損 アプリの更新が必要 Workerで吸収できる
キャッシュ 端末ごと 空間ID単位で共有
計算方法の更新 App Storeの更新が必要 方式のバージョンを付けて段階的に更新

PLATEAU配信サービスは試験提供のため、Worker側でタイムアウトを設け、空間IDごとの結果を7日間キャッシュし、対象外の地域と一時的な障害を区別して返すようにしています。

何を計算しているか

距離・方位・遮蔽仰角

物件から各建物までの距離は、建物の範囲のうち物件に最も近い点までの距離で求めます。方位は、建物の中心への向きを8方向(北・北東・東…)に分けます。

そこから、ある方向で「空がどのくらいの角度まで建物に遮られているか」を表す遮蔽仰角を求めます。

遮蔽仰角 = atan2(max(建物の高さ − 目線の高さ, 0), max(建物までの距離, 1))
目線の高さ = 1.5m + (住戸階 − 1) × 3.0m

住戸の階を変えると目線の高さが変わるので、同じ建物でも遮られ方が変わります。

日照阻害リスクの参考評価

周辺建物の高さと対象地点からの距離をもとに遮蔽仰角を求め、太陽高度と比較して日照阻害リスクを参考評価しています。

太陽高度は、選んだ季節(冬至・春分秋分・夏至)の太陽の位置から計算します。南は正午の太陽高度、南東・南西はその時間帯の代表的な高さを使い、その方向で最も大きい遮蔽仰角と比べて、高・中・低の3段階にします。

周辺に建物があるのに高さを取れた建物が70%未満のときは「評価不能」とし、低リスクにはしません。窓の位置や地形、樹木、壁面の細かな形までは考慮していないので、あくまで参考評価です。実際の日照を示すものではありません。

開放感の参考評価

周辺建物の配置・高さなどから、周囲の開け具合を参考評価しています。8方向それぞれの最大の遮蔽仰角を使い、空がどのくらい見えていそうかを0〜100の目安で表します。

開放感 = round(100 × (1 − 8方向の平均(min(最大遮蔽仰角, 45°)) ÷ 45°))

このほか、建物の密度(1ヘクタールあたりの棟数)や、最寄りの高い建物も出しています。

結果の返し方

Workerの応答は、PLATEAUから得た客観的な値と、このアプリ独自の参考評価をはっきり分けています。計算方法にはバージョン(現在はplateau-environment-v2)を付け、注意事項と一緒に返します。アプリの画面やPDFでも、この2つを分けて表示しています。

アプリに追加したこと

既存の生活環境カルテのすぐ後に、「3D住環境(PLATEAU分析)」を追加しました。

  • 分析の条件:分析半径(50/100/200m)、季節(冬至・春分秋分・夏至)、住戸の階を変えて再分析できます。
  • 地図上の建物:分析した建物を高さごとに色分けし、分析半径の円や南の方向と一緒に地図に重ねます。
  • 簡易3D表示:SceneKitでLOD1の範囲を立体にし、選んだ季節の正午の太陽の位置から影を落とした周辺モデルを、回して確認できます。CityGMLや3D Tilesは端末に送らず、Workerの応答だけから作っています。
  • 想定浸水深×階数の目安:不動産情報ライブラリの浸水想定区域に含まれる浸水深と、PLATEAUで分かる建物の階数を組み合わせて、おおよそ何階まで浸水が想定されるかの目安を出します。床の高さや構造は考慮しない概算です。
  • 生活環境カルテ・物件比較・PDF:開放感と日照阻害リスクを生活環境カルテの屋外環境に加え、物件比較とPDFにも反映しました。

他の公的データとの統合

3D住環境は、既存のカルテと同じ住所・座標から取得しています。

データ 使っている内容
Project PLATEAU 周辺建物の高さ・配置・階数・用途
不動産情報ライブラリ 過去の取引事例、最寄りの小中学校、ハザード(浸水深を含む)
国土地理院 住所検索、逆ジオコーダ、標高(坂の目安)
OpenStreetMap 最寄り駅、周辺施設

PLATEAUと不動産情報ライブラリのハザードを組み合わせた「想定浸水深×階数の目安」のように、別々のデータを同じ地点で重ねることで、単独では出せない情報を作れるのが、データを統合する意味だと考えています。

実際の使い方

  • 内見の前に:候補物件の周りに高い建物があるか、どの方向が開けているかを確かめて、内見で見るべき点を決める
  • 候補を比べるときに:同じ条件(季節・階)で複数の物件を比較表に並べる
  • 家族と相談するときに:出典付きのPDFにして共有する

応募資料と動画

提出物として、紹介動画と作品説明のPDF資料を用意しました。応募にあたっては、利用したデータとソフトウェアの提供元・ライセンスを一覧にまとめ、審査で動作を確認してもらうための手順も整理しています。

今後改善したいこと

  • 最寄り駅の取得元を、国土数値情報(鉄道データ)へ切り替える作業を進めています。
  • PLATEAUの整備地域が広がるのにあわせて、対応地域を増やしていきます(アプリの更新は不要な構成にしています)。
  • 計算方法は、方式のバージョンを付けたまま、実際の使われ方を見ながら見直していきます。

同じアプリの、ほかのコンテスト

アプリの機能は「うちの不動産カルテ」アプリページにまとめています。

App Storeで「うちの不動産カルテ」を見る

※日照阻害リスク・開放感・浸水深の目安は、3D都市モデルの建物形状や区域データからの参考評価で、現況や実際の日照・見え方を保証するものではありません。