システム アーキテクチャ

J-REIT 取引・マクロ指標・不動産ニュースを集約する静的サイトの構成図。

1. データフロー

外部ソース → loader/ → Google Sheets / viewer/*.json → Cloudflare Pages。 ニュース系(TDnet / NFM / マクロ)と取引マスタは独立経路。

外部ソース
取引マスタ
TDnet 適時開示
各REIT IR / japan-reit.com
eir-parts / xj-storage
ニュース
日経不動産マーケット
Google News RSS
(NewsPicks / The Information)
金融機関レポート NEW
三菱UFJ銀行 経済・産業レポート
みずほリサーチ&テクノロジーズ
三井住友銀行 経済・業界動向レポート
マクロ指標
三鬼商事 / 三幸エステート
不動産経済研究所
JREI REIS / 東日本レインズ
建設物価調査会 NEW
総務省統計局 CPI NEW
地理・建物
国土数値情報 (A29/A09/N02)
国土地理院
建設データバンク
株価・API
deveryman-ir Sheets (GViz)
MLIT XKT API
取込・中継
loader/
main.py + scrapers + audit
GitHub Actions cron で実行
Pages Functions
MLIT XKT API 中継 (MLIT_API_KEY) / 所有ピン手修正 commit (geocode-override) / ニュース → Notion DB 送信 (save-to-notion) / Gemini AI 中継 (gemini, GEMINI_API_KEY 秘匿・タスク許可制)
ストレージ
Google Sheets
取引マスタ (transactions タブ)
add/fix/export 経由
repo / viewer/*.json
data.json / macro_data.json / disclosures.json / gnews.json / nfm_news.json / data/bank_reports.json + 表紙PNG
+ data/*.geojson
公開UI (Cloudflare Pages)
index.html
不動産関連レポート
(建築費・CPI・オフィス・マンション・期待利回り・REINS) / 株価 / ニュース3列
trs-board.html
取引ボード + 地図 + TDnet バー
holdings.html
所有ボード (REIT保有物件)
dev-map.html
開発マップ + 用途地域 + 事業性試算 (6アセット×lease/sale)
glossary.html
用語ナレッジ

2. 公開ページ

ページ役割参照JSON
index.htmlデベ6社株価+IRニュース / 不動産ニュース3列 (NFM/NewsPicks/The Information) / 不動産関連レポート (建築費指数/CPI/オフィス市況/新築マンション/期待利回り/REINS) / 金融機関レポート (MUFG/みずほ/SMBC 表紙サムネ付)macro_data.json / nfm_news.json / gnews.json / data/bank_reports.json / deveryman-ir Sheets (GViz CSV)
trs-board.htmlREIT取引ボード (フィルタ+カード+Leaflet地図) + 地図下に J-REIT 適時開示バーdata.json (581件) / disclosures.json
dev-map.html開発マップ (用途地域+容積算定+周辺NOI+事業性試算 6アセット×lease/sale)静的 GeoJSON (A29/A09/N02/建設PJ/再生地域) + MLIT XKT API (Pages Functions経由)
glossary.html用語ナレッジ (dev-map / board からディープリンク)
architecture.htmlこのページ

3. 収集ジョブ

loader/main.py のサブコマンドを GitHub Actions cron で実行し、main へ直接コミット。

Workflow頻度 (JST)出力
dump-disclosures.yml毎日 19:00disclosures.json (TDnet 直近30日)
dump-nfm.yml平日 7/9/11/13/15/17時nfm_news.json (NFM 公開見出し、午後投稿を当日反映)
dump-gnews.yml平日 7:30/9:30/.../17:30gnews.json (NewsPicks / The Information を Google News RSS 経由)
fetch-macro.yml平日 08:00macro_data.json (三鬼/三幸/不動産経済研/JREI/REINS/建設物価/CPI の7ソース統合) + office_history.json (オフィス市況の月次履歴を累積)
fetch-bank-reports.yml平日 09:30data/bank_reports.json + data/bank_reports/*.png (MUFG / みずほ / SMBC の最新各4件 + PDF表紙サムネ。Akamai WAF回避に curl_cffi の Chrome TLS模倣)
fetch-tdnet.yml平日 23:00新規開示の add ペイロード生成 → 取込
verify-ingestion.yml日曜 07:00TDnet と japan-reit.com / JMF xj-storage 突合、未取込/灰色を Issue 起票
audit-data.yml日曜 06:00data.json 全件サニティチェック。ハードエラー (外部ID重複/論理重複/緯度経度欠損) で Issue 起票 + job 失敗
fetch-construction-projects.yml月曜 09:00建設データバンク 大型建設PJ (延床≥5000㎡ × 首都圏) を viewer/data/construction.geojson に差分更新

手動コマンド: add (取引追加) / fix (訂正・空欄化、空文字上書き可) / export (Sheets→data.json) / verify-ingestion --days N (取込漏れチェック)。外部ID = sha1(REIT+物件名+取引日+種類)[:16] で冪等。

4. 補完・監査ツール

取引データの誤抽出検知・取込前検査・開示突合を loader/ 配下のスクリプト群で行う。

audit_data.py 監査
data.json 全件サニティチェック (外部ID形式/重複・論理重複・緯度経度欠損/域外・NOI利回り異常・譲渡P/A<0.85・持分%×P/A一致・座標共有)。creds不要で audit-data.yml が週次実行しハードエラーで Issue 起票。--json でレポート出力、--fail-on で CI ゲート化。
audit_inline.py 取込時
add 取込前に各行を検査 (NOI/鑑NOI/還元の3カラムコピー、譲渡case の取得=帳簿価額ルール違反 等)。--strict で警告時中断。
verify-ingestion.yml 検証
fallback_fetcher を用い TDnet と japan-reit.com / JMF xj-storage を突合。TDnet未取込・タイトルパターン外(灰色)を週次で Issue 起票する。
fallback_fetcher.py 突合
TDnetで拾えない開示を japan-reit.com / JMF xj-storage API で補完取得。verify-ingestion から呼ばれ、TDnet漏れ検知に使う。
macro_fetcher.py マクロ
三鬼/三幸/不動産経済研 (KPI+履歴)/JREI REIS (期待利回り+outlook)/REINS (中古住宅+賃貸)/建設物価調査会 (建築費指数)/総務省統計局 (CPI 長期月次) の7ソースを fetch-macro.yml で平日 08:00 取得し macro_data.json に統合。

5. データソース

ソース用途URL
TDnet 適時開示J-REIT 取得/譲渡リリースrelease.tdnet.info
日経不動産マーケット取引・開発ニュース見出しnfm.nikkeibp.co.jp
NewsPicks (Google News 経由)業界・経済・テック・不動産の見出し
(401 直接スクレイプ不可のため site:newspicks.com + post-fetch タイトルフィルタ)
news.google.com/rss
The Information (Google News 経由)米テック発の AI / Big Tech / Finance 見出し
(paywall SPA のため Google News 中継)
news.google.com/rss
deveryman-ir Sheets主要デベ6社株価 + IRニュース (companies / news タブ)GViz CSV (read-only, 認証不要)
各REIT IR / japan-reit.com取引マスタ補完 (PDF直リンク)eir-parts.net (JSONP) / 各社固有 yearly archive
xj-storage (Pronexus WizLabo)JMF 全開示 PDF index (3199件、company=89530)xj-storage.jp/public-list/GetList.aspx
三鬼商事主要都市オフィス空室/賃料 (大規模ビル中心、母集団は ナレッジ参照)e-miki.com
三幸エステート主要都市オフィス空室/賃料 (中規模ビル含む)sanko-e.co.jp
不動産経済研究所新築分譲マンション 発売戸数・平均価格 (首都圏/近畿圏、月次履歴+12ヶ月移動平均)fudousankeizai.co.jp
日本不動産研究所 REIS不動産投資家調査 期待利回り (5アセット×サブカテゴリ + outlook)jrei.jp / reinet.or.jp
東日本レインズ中古住宅市場 (マンション/戸建) + 賃貸取引動向 (首都圏)reins.or.jp
三菱UFJ銀行 経済・産業レポート内外経済見通し / ASEAN・インド・豪州月報 / MUFG Focus USA 等の最新PDF (リンク + 1ページ目サムネ)bk.mufg.jp/report/whatsnew
みずほリサーチ&テクノロジーズみずほ経済ウィークリー / QE解説 / 経済EXPRESS 等の最新PDF。レポート一覧は assets/json/reports.json (React SPA の data source) を直接取得mizuhobank.co.jp/corporate/mhri
三井住友銀行 経済・業界動向レポート産業調査レポート / マンスリー・レビュー / グローバル経済と主要産業の動向 等の最新PDF (Shift_JIS の <table> を複数セクション横断パース)smbc.co.jp/hojin/report
建設物価調査会建築費指数 (主要10都市×22建物種×11指数、2015年=100)。indexgraph/k-city10-Data.jsKData 配列を直接パース。kensetu-bukka.or.jp
総務省統計局消費者物価指数 (CPI) 全国 / 東京都区部中旬速報。長期月次CSV zmi2020aa.csv (2020-01〜) で総合/コア/コアコアの時系列取得。stat.go.jp/data/cpi
国土数値情報 (MLIT)用途地域 A29 / 区域区分 A09 / 駅 N02 静的 GeoJSONnlftp.mlit.go.jp
MLIT reinfolib XKT API防火 (014) / 地区計画 (023) / 高度利用 (024) / 都市計画道路 (030) を Cloudflare Pages Functions で中継 (MLIT_API_KEY 秘匿、24h CDN cache)www.reinfolib.mlit.go.jp
Notion DB sinkトップページのニュース行から「📌 保存」で 1 記事を Notion DB に追記 (Pages Functions save-to-notion 経由、NOTION_TOKEN / NOTION_DATABASE_ID + Bearer APP_SECRET)。クライアントの Obsidian 送信は obsidian://new URI で同マシン Vault に直接書き出し。api.notion.com/v1/pages
Gemini API (Google AI Studio)トップ: 本日のAI要約 / data.json 自然言語Q&A。開発マップ: 地点の開発所見 / 規制Q&A / 複数地点一括評価。Pages Functions gemini 経由でキー秘匿 (GEMINI_API_KEY)、タスク許可制+入力上限+任意KVレート制限。無料枠 (gemini-2.5-flash) 想定。generativelanguage.googleapis.com
建設データバンク大型建設PJ (延床≥5000㎡ × 首都圏) の差分取得kensetsu-databank.co.jp
内閣府都市再生緊急整備地域 20地区 (中心点+面積→半径円)chisou.go.jp
国土地理院住所→緯度経度 (geocode) / ハザードマップmsearch.gsi.go.jp / disaportal.gsi.go.jp