システム アーキテクチャ
J-REIT 取引・マクロ指標・不動産ニュースを集約する静的サイトの構成図。
1. データフロー
外部ソース → loader/ → Google Sheets / viewer/*.json → Cloudflare Pages。
ニュース系(TDnet / NFM / マクロ)と取引マスタは独立経路。
flowchart LR
IR["各REIT IR
japan-reit.com"]
TD["TDnet
適時開示"]
NFM["日経不動産
マーケット"]
MACRO["三鬼 / 不動産経済研
JREI"]
GSI["国土地理院"]
LOADER["loader/
main.py + scrapers"]
SHEETS[("Sheets
取引マスタ")]
REPO[("repo
viewer/*.json")]
UI["Cloudflare Pages
index / board /
dev-map / glossary"]
IR --> LOADER
GSI --> LOADER
LOADER --> SHEETS --> LOADER
LOADER --> REPO
TD --> LOADER
NFM --> LOADER
MACRO --> LOADER
REPO --> UI
2. 公開ページ
| ページ | 役割 | 参照JSON |
|---|---|---|
index.html | マクロ指標+ニュース2列+リサーチ巡回ルート+GPT連携 | macro / disclosures / nfm_news |
board.html | REIT取引ボード(フィルタ+カード+Leaflet地図) | data.json |
dev-map.html | 開発マップ(用途地域+容積算定+周辺NOI) | MLIT XKT API (Pages Functions経由) |
glossary.html | 用語ナレッジ(dev-mapからディープリンク) | — |
architecture.html | このページ | — |
3. 収集ジョブ
loader/main.py のサブコマンドを GitHub Actions cron で実行し、main へ直接コミット。
| Workflow | 頻度 (JST) | 出力 |
|---|---|---|
dump-disclosures.yml | 毎日 19:00 | disclosures.json (TDnet 直近30日) |
dump-nfm.yml | 毎日 19:00 | nfm_news.json (NFM 公開見出し) |
fetch-macro.yml | 毎月 | macro_data.json |
fetch-tdnet.yml | 平日 23:00 | 新規開示 → Issue 作成(手動レビュー) |
手動コマンド: add (取引追加) / fix (訂正・空欄化) / export (Sheets→data.json)。外部ID = sha1(REIT+物件名+取引日+種類)[:16] で冪等。
4. データソース
| ソース | 用途 | URL |
|---|---|---|
| TDnet 適時開示 | J-REIT 取得/譲渡リリース | release.tdnet.info |
| 日経不動産マーケット | 取引・開発ニュース見出し | nfm.nikkeibp.co.jp |
| 各REIT IR / japan-reit.com | 取引マスタ補完 (PDF) | eir-parts.net / xj-storage 等 |
| 三鬼商事 | 主要都市オフィス空室/賃料 | e-miki.com |
| 不動産経済研究所 | 新築分譲マンション動向 | fudousankeizai.co.jp |
| 日本不動産研究所 | 期待利回り / 価格指数 | jrei.jp / reinet.or.jp |
| MLIT XKT | 用途地域 GeoJSON | nlftp.mlit.go.jp |
| 国土地理院 | 住所→緯度経度 | msearch.gsi.go.jp |