タイトル: データ連携の実務パターン
SEOタイトル: Speckleデータ連携の実務パターン|数量集計・Power BI・QA・他DB連携のパイプライン
| この記事の要点 |
|
本記事は Speckle カテゴリの一部として、データ連携の実務パターンを整理します。Speckle に蓄積したモデルを「業務に効く形」へ展開する出口の話で、SE が最も価値を出しやすい領域です。データ取得の基礎は specklepy を参照してください。
基本の発想:モデルは取得できるデータ
Speckle のモデルは SDK / API でプログラムから取得できる構造化データです。つまり「図面を見る」だけでなく、「壁の数を数える」「面積を合計する」「ルール違反を探す」といった処理をコードで回せます。これが従来のファイル中心ワークフローとの決定的な違いです。
典型パイプライン(3段構成)
| 段 | やること | 主な道具 |
|---|---|---|
| 1. 取得 | 対象 Version を receive してオブジェクトツリーを得る | specklepy / .NET SDK |
| 2. 走査・変換 | 要素を巡回し、必要な属性を抽出・集計・判定する | Python / C# のロジック |
| 3. 出力 | BI・DB・レポート・他システムへ渡す | CSV / DB / API |
多くの実務処理はこの3段に収まります。取得は send/receive の receive、走査対象は オブジェクトモデル のツリーです。
パターン1:数量集計
最も需要が高いのが数量・面積の集計です。受け取ったツリーを走査し、カテゴリごとに件数や合計値を出します。概念的な擬似コードは次のとおりです。
# specklepy 風の擬似コード:壁の面積合計
total = 0.0
for el in elements:
if el["category"] == "Walls":
total = total + el["area"]
print(total)
比較や条件式で <(小なり)・>(大なり)・&(アンパサンド)を使う場合は、コードとして崩れないよう正しく表記します。結果は CSV やスプレッドシートへ出して、見積や工程の基礎資料にできます。
パターン2:ダッシュボード(Power BI 等)
集計結果を BI ツール(Power BI など)に渡すと、モデル情報をグラフや表で可視化できます。流れは「Speckle から取得 → 表形式(テーブル)へ整形 → BI に読み込む」です。
- SDK でモデルを取得し、要素を行・属性を列としたテーブルに展開する
- 中間ファイル(CSV など)や API 経由で BI に取り込む
- 用途別面積・カテゴリ別数量・版ごとの推移などを可視化する
Version を時系列で取得すれば「設計が版を追ってどう変化したか」を追うダッシュボードも作れます。ビューア自体を組み込みたい場合は Viewer・埋め込み を参照してください。
パターン3:QA チェック
取得したデータにルールを当てて品質をチェックするパターンです。命名規約・必須属性・分類コードの妥当性などを判定し、違反を一覧で出します。この処理を Version 公開のたびに自動で走らせたい場合は Automate と組み合わせます。手元での単発チェックは specklepy で receive して走査するだけでも実現できます。
パターン4:他DB・他システム連携
抽出した情報を社内の DB や資産管理(FM)・コスト管理システムへ流し込むパターンです。たとえば機器の型番・系統・数量を receive で取得し、変換層を通して既存システムのスキーマに合わせて登録します。
# 概念例:取得 → 変換 → DB へ
data = receive(version_id) # 1) 取得
rows = to_rows(data) # 2) 走査・整形
insert_into_db(rows) # 3) 出力
連携先のスキーマと Speckle 側の属性名は一致しないのが普通なので、間に「変換層(マッピング)」を1枚置くのが定石です。
安定運用のコツ
- 変換層を設ける:属性名の表記ゆれ・単位差を1か所で吸収する
- 単位を固定する:長さ・面積の単位を取り決め、取得時に正規化する
- 欠損に強くする:属性が無い要素を想定し、既定値やスキップを設計する
- Version を明示する:どの版を処理したかをログに残し再現性を保つ
- 段階的に自動化:手元スクリプトで固めてから Automate へ載せる
これらを押さえると、モデルの更新に追従しながら数量・可視化・QA・他システム連携を安定して回せます。取得処理そのものの書き方は specklepy、.NET 環境からの取得は .NET SDK を参照してください。