bim.json は、 1 つの建物 = 1 つの JSON ファイルで建築確認申請に必要な全ての情報を 表現する オープン規格です。SHA-256 で改竄防止、Ed25519 で建築士署名、CAS で 永久履歴管理 — つまり 「建物の Git」です。
bim.json の JSON は 5 つの層で構成されます。上層から下層へ「誰が・何を・どう設計し・どう検査し・どう署名したか」を順に記述。
$schema / spec_version / slug / version{n, parent_hash, change_summary}
このファイルが何で、何の派生で、いつ作られたかを宣言。SHA-256 で永久 address 化。
applicant 建築主 / designer 設計者 / supervisor 工事監理者 / contractor 施工者
site 敷地 / zoning 用途地域 / permit_classification 申請区分 / road_access 道路
mep 設備系統 / ground_investigation 地盤 / barrier_free バリアフリー / rooms[] 部屋
id / cls (IFCWALL/IFCWINDOW/IFCCOLUMN…) / shape (box/cylinder) / x,y,z,w,d,h (mm)
material{code,name,thickness_mm,u_value_w_m2k} / structural{load_bearing,…} / product_code
3D viewer · 平面図 · 断面図 · 立面図 · 構造図 · 設備系統図 は全部この elements[] から自動生成。
overall_pass / checks[{name, passed, spec_ref, _note}]
各 check は 条文参照付き: 例 {"name":"建ぺい率", "passed":true, "spec_ref":"法 53 条"}
signatures[{architect_id, pubkey, signature, signed_at, solana_memo_tx?}]
attachments[{uri, kind, mime, sha256, size_bytes}] — 画像・IFC・PDF を hash 検証付きで参照
署名対象は L1-L4 全体の SHA-256。後から L4 だけ書き換えても署名は無効化される。
これだけで bim.json v1 として valid:
{ "$schema": "https://bim.house/spec/v1.json", "spec_version": "1.0", "project": { "slug": "my-cabin", "name": "週末小屋", "address": "北海道川上郡標茶町", "site_area_m2": 200, "zoning": "都市計画区域外", "proposed_floors": 1, "proposed_structure": "木造軸組 + SIPs", "applicant": {"is_owner": true}, "designer": {"designer_name": "濱田優貴", "office_name": "株式会社イネブラ"} }, "elements": [ {"id": "w1", "cls": "IFCWALL", "shape": "box", "x": 0, "y": 0, "z": 0, "w": 3000, "d": 200, "h": 2700, "material": {"code": "SIPS-AESS-180mm", "u_value_w_m2k": 0.18}} ], "audit": {"overall_pass": true} }
| 項目 | bim.json v1 | IFC | Revit (.rvt) | SketchUp |
|---|---|---|---|---|
| 形式 | JSON | EXPRESS / XML | バイナリ独自 | バイナリ独自 |
| サイズ (戸建) | 30-200 KB | 5-50 MB | 50-300 MB | 10-100 MB |
| 編集ツール | テキストエディタ可 | 専用ソフト | Revit (商用) | SketchUp |
| 確認申請 | そのまま提出可 | 変換必要 | 図面 export 後 | 不可 (意匠のみ) |
| 建築士署名 | Ed25519 内蔵 | 不可 | 不可 | 不可 |
| 履歴管理 | append-only CAS | 不可 | worksharing | 不可 |
| 3D viewer | ブラウザ即時 | 専用 viewer | Revit | SketchUp |
| 標準化 | JSON Schema 2020-12 | ISO 16739 | Autodesk 独自 | Trimble 独自 |
| ライセンス | MIT | buildingSMART | 商用 | 商用 |
attachments[] に IFC を hash 検証付きで添付する。
bim.json の最大原則。Server 起動時に spec/projects/*.bim.json が CAS (Content-Addressed Storage) に v1 として seed され、
編集の度に sha256 が連鎖して append-only 履歴が積み上がる。
v1 (genesis) sha256: abc123… by: bim.house seed
└ v2 (修正) sha256: def456… by: 濱田優貴 (mail@yukihamada.jp)
parent: abc123…
└ v3 (建築士 OK) sha256: 789xyz… by: 田中設計事務所
parent: def456…
signatures: [Ed25519 by 一級建築士 田中, signed_at: 2026-05-14]
solana_memo_tx: 5oQ… ← Solana 公開チェーンにも anchored
任意の過去版は /api/cas/<sha256> で immutable に取得、/api/cas/<sha256>/verify で改竄チェック。
elements[].cls は IFC クラス名を流用。supervisor が null でも designer から推定可。/spec/editor で visual + text 双方向編集。最小サンプルから始められる。
# 新バージョン submit (auto-hash + author 自動記録) curl -X POST https://bim.house/api/entity/project/my-cabin \ -H "x-author-name: 濱田優貴" \ -H "x-author-email: mail@yukihamada.jp" \ -H "x-change-summary: 初回 commit" \ --data @my-cabin.bim.json # → {ok:true, version_n:1, sha256:"abc123…", author_name:"濱田優貴"} # 履歴を見る curl https://bim.house/api/history/project/my-cabin # 過去版を取得 curl https://bim.house/api/cas/abc123… # 検証 curl https://bim.house/api/cas/abc123…/verify
# ajv-cli で local validation
npx ajv-cli validate -s spec-v1.json -d my-cabin.bim.json
attachments[] に SHA-256 検証付きで添付する設計。/permit/<slug> で自動生成 (26 書類フルセット)。これを印刷して紙申請。電子申請 XML (/spec/permit-xml-v1.xsd) も将来 国交省 BIM ガイドライン整合予定。X-Author-Name ヘッダなしなら author_id="anonymous" で記録。ただし建築士署名は実名 + 一級建築士番号 + Ed25519 pubkey 必須。attachments[] で参照、bim.json 側は project metadata のみ作る方針も可。bim.json と書いて OK。MIME 型は application/vnd.bim+json。拡張子は .bim.json (μ なし)。/spec/v1.json (JSON Schema 2020-12)