Repo-lab
開発ツール

ifc-lite とは?ブラウザで動く BIM/IFC ファイル解析ツールキットの使い方

⭐ 413 stars GitHub →

ifc-lite は IFC ファイルをブラウザ上でパース・表示・クエリ・編集・エクスポートできる TypeScript ツールキットです。Rust 製コアを WASM にコンパイルし、WebGPU レンダラーと組み合わせることでクライアントサイドのみで BIM データを処理できます。51 の npm パッケージから必要な機能だけを選んで使えるモジュラー設計が特徴です。

GitHub で 413 スターを獲得しており、27 名のコントリビューターによって活発に開発されています。ライセンスは MPL-2.0 です。

ifc-lite とは:BIM/IFC ファイル TypeScript 使い方の全体像

IFC(Industry Foundation Classes) は建築・土木・設備(AEC)業界で広く使われるオープンな BIM データフォーマットです。ArchiCAD、Revit、Vectorworks などほぼすべての BIM ソフトウェアが IFC の入出力に対応しており、異なるソフトウェア間でのデータ交換標準として機能します。

従来、IFC ファイルをプログラムから扱うには IfcOpenShell(C++ / Python)や web-ifc などが主な選択肢でした。しかし、ブラウザで動くネイティブ品質のビューアを構築したり、IFC データをクエリ・編集するには環境構築のハードルが高い状況でした。

ifc-lite はこの課題を解決します。Rust コアを WebAssembly(WASM)にコンパイルすることで、ブラウザ・CLI・サーバーサイドを問わず一貫した API で IFC ファイルを操作できます。

インストール方法:npm パッケージで IFC TypeScript 使い方をすぐ始める

React テンプレートから始める(最速)

npx create-ifc-lite my-viewer --template react
cd my-viewer && npm install && npm run dev

これだけで WebGPU IFC ビューアが localhost:3000 で起動します。ドラッグアンドドロップ、階層表示、プロパティ表示、2D 図面生成まで内蔵されています。他のテンプレート: basic, threejs, babylonjs, server, server-native

既存プロジェクトに追加する

必要なパッケージだけをインストールできます:

# パース + 表示に必要な最小構成
npm install @ifc-lite/parser @ifc-lite/geometry @ifc-lite/renderer

# クエリ・検索機能を追加
npm install @ifc-lite/query

# IDS バリデーション
npm install @ifc-lite/ids

CLI としてインストール

npm install -g @ifc-lite/cli
ifc-lite info model.ifc

BIM WebGPU ブラウザでの IFC ファイル処理:主要機能の使い方

IFC ファイルのパース

import { IfcParser } from '@ifc-lite/parser';

const parser = new IfcParser();
const buffer = await fetch('model.ifc').then(r => r.arrayBuffer());
const store = await parser.parseColumnar(buffer, {
  onProgress: ({ phase, percent }) => console.log(`${phase}: ${percent}%`),
});

console.log(`${store.entityCount} entities, schema ${store.schemaVersion}`);

パフォーマンス: STEP トークナイズは約 1.2 GB/s、フルパースは約 50 MB/s で動作します。

3D ビューア(WebGPU)

import { IfcParser } from '@ifc-lite/parser';
import { GeometryProcessor } from '@ifc-lite/geometry';
import { Renderer } from '@ifc-lite/renderer';

const renderer = new Renderer(canvas);
await renderer.init();

const store = await parser.parseColumnar(buffer);
const meshes = [];
for await (const event of geometry.processAdaptive(new Uint8Array(buffer))) {
  if (event.type === 'batch') meshes.push(...event.meshes);
}
renderer.loadGeometry(meshes);
renderer.requestRender();

ストリーミングレンダリングにより、ファイル全体の解析が完了する前から最初のメッシュが画面に表示されます。

エンティティのクエリ

import { IfcQuery } from '@ifc-lite/query';

const query = new IfcQuery(store);

// 外壁の耐力壁をすべて取得
const walls = query
  .ofType('IfcWall', 'IfcWallStandardCase')
  .whereProperty('Pset_WallCommon', 'IsExternal', '=', true)
  .whereProperty('Pset_WallCommon', 'LoadBearing', '=', true)
  .execute();

console.log(`${walls.length} 件の外壁耐力壁が見つかりました`);

SQL クエリも DuckDB-WASM 経由で利用可能です:

const result = await query.sql(`
  SELECT type, COUNT(*) AS n FROM entities GROUP BY type ORDER BY n DESC LIMIT 10
`);
console.table(result.rows);

CLI からの IFC 操作

ifc-lite info model.ifc                               # スキーマ、エンティティ数、階層情報
ifc-lite query model.ifc --type IfcWall --json        # 壁エンティティをJSONで出力
ifc-lite schedule model.ifc --preset door             # ドアスケジュール生成
ifc-lite ids model.ifc requirements.ids               # IDS バリデーション
ifc-lite clash model.ifc --matrix --bcf clashes.bcf   # クラッシュ検出
ifc-lite diff model-v1.ifc model-v2.ifc               # 2モデルの差分比較
ifc-lite merge arch.ifc struct.ifc mep.ifc --out fed.ifc  # フェデレーション
ifc-lite mcp model.ifc                                # MCP サーバー起動(AI エージェント連携)

こんな人に向いている:BIM 開発者・建設テック企業

ifc-lite は以下のような方に特に適しています:

  • フロントエンドエンジニア(建設テック企業): Revit/ArchiCAD からエクスポートした IFC ファイルをブラウザで表示・検索できる社内ツールを構築したい場合
  • バックエンドエンジニア(設計事務所・ゼネコン): BIM モデルの自動チェックや IDS バリデーションを CI パイプラインに組み込みたい場合
  • AEC テック系スタートアップのエンジニア: IFC データを活用した AI アプリケーションや MCP サーバーを構築したい場合
  • データエンジニア(BIM コンサルタント): IFC モデルを Parquet 形式に変換して DuckDB / Polars で大規模分析を行いたい場合

ifc-lite との違い・なぜ今このツールか

ifc-lite vs IfcOpenShell

IfcOpenShell は成熟した Python/C++ ライブラリですが、ブラウザでの動作は基本的に不可能です。ifc-lite は WebAssembly により同等の機能をブラウザ上で実現し、99.9%+ の幾何演算精度で IfcOpenShell との互換性を検証済みです。

ifc-lite vs web-ifc

web-ifc は IfcOpenShell の WASM ラッパーです。ifc-lite はネイティブ(サーバー/CLI)環境でパフォーマンスのベンチマーク比較で上回ることが多く、正確算術(exact-arithmetic)CSG カーネルを採用しているため幾何演算の精度が高い点が差別化要因です。

なぜ 2026 年に注目されているか

建設・不動産業界での DX 推進と、AI エージェントへの BIM データ連携(MCP プロトコル)需要が急増しています。ifc-lite mcp model.ifc で MCP サーバーを起動し、Claude Code などの AI エージェントが自然言語で BIM モデルを問い合わせる使い方が可能になっています。

使う前に知っておきたいこと

ブラウザ要件

  • WebGPU が必須: Chrome/Edge 118+、Firefox Nightly が対象
  • Safari は WebGPU 対応が限定的(2026 年時点で改善中)
  • WebGPU 非対応環境では Three.js / Babylon.js(WebGL)を代替として使用可能

ライセンス(MPL-2.0)

MPL-2.0 ライセンスにより、ifc-lite のソースコードに変更を加えた場合はそのファイルをオープンソースで公開する必要があります。ただし、ifc-lite を組み込んだアプリケーション全体をオープンソースにする義務はありません(LGPL より商用利用しやすい)。

パフォーマンス要件

  • 大規模モデル(500 MB+)にはデスクトップアプリ(Tauri ラッパー)またはサーバーモードを推奨
  • WebGPU レンダラーは GPU メモリを使用。GPU 非搭載の仮想マシンでは Satori OGP 等の代替が必要
  • WASM モジュールは約 2.6 MB(gzip 圧縮後)

既知の制限・対応中

  • IFC5(IFCX)対応は実験的段階(Issues で進捗確認可能)
  • ドキュメントテンプレートへの MCP 操作は API 制限あり

関連ツール・おすすめサービス

  • DigitalOcean — BIM サーバーのデプロイ先として人気。App Platform で Node.js/Rust サーバーが手軽に構築可能
  • Vercel — ifc-lite を使ったブラウザビューアを Next.js + Vercel でホスティングするのに最適

この技術を学ぶ

BIM・建設テック開発に興味を持った方には、Udemy のオンラインコースもおすすめです。

まとめ

ifc-lite は BIM データをブラウザ・CLI・サーバーで統一的に扱える唯一の TypeScript/Rust ツールキットです。建設テック・不動産テック・設計事務所のエンジニア、および AI エージェントに BIM データへのアクセスを提供したいデベロッパーには即戦力となるツールです。

毎日更新のGitHubツール情報

LINEで受け取って最新情報をキャッチアップしよう

友達追加する(無料)

関連記事

この記事が役に立ったらシェアしてください