システム アーキテクチャ
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)
(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 + auditGitHub 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列
(建築費・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.html | REIT取引ボード (フィルタ+カード+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:00 | disclosures.json (TDnet 直近30日) |
dump-nfm.yml | 平日 7/9/11/13/15/17時 | nfm_news.json (NFM 公開見出し、午後投稿を当日反映) |
dump-gnews.yml | 平日 7:30/9:30/.../17:30 | gnews.json (NewsPicks / The Information を Google News RSS 経由) |
fetch-macro.yml | 平日 08:00 | macro_data.json (三鬼/三幸/不動産経済研/JREI/REINS/建設物価/CPI の7ソース統合) + office_history.json (オフィス市況の月次履歴を累積) |
fetch-bank-reports.yml | 平日 09:30 | data/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:00 | TDnet と japan-reit.com / JMF xj-storage 突合、未取込/灰色を Issue 起票 |
audit-data.yml | 日曜 06:00 | data.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.js の KData 配列を直接パース。 | kensetu-bukka.or.jp |
| 総務省統計局 | 消費者物価指数 (CPI) 全国 / 東京都区部中旬速報。長期月次CSV zmi2020aa.csv (2020-01〜) で総合/コア/コアコアの時系列取得。 | stat.go.jp/data/cpi |
| 国土数値情報 (MLIT) | 用途地域 A29 / 区域区分 A09 / 駅 N02 静的 GeoJSON | nlftp.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 |