目次

AWS IoT TwinMaker 完全ガイド v2.0

初心者から実務者向けの包括的解説

AWS IoT TwinMaker は、物理世界(工場・建物・データセンター・インフラ)の 3D デジタルツインをリアルタイムセンサーデータと統合 し、設備監視・異常検出・予知保全を視覚的に実現するサービスです。CAD モデル・BIM・Matterport 3D スキャンを 3D シーンとして読み込み、IoT SiteWise・Timestream・S3・Lambda からのリアルタイムデータを 3D オブジェクトに重ね合わせ、Grafana ダッシュボードで可視化。Entity-Component モデルの知識グラフでメタデータを統一管理し、SageMaker での ML 予測・Bedrock 生成 AI による異常解析も統合。製造業・スマートビル・エネルギー・インフラ・不動産企業向けの エンタープライズグレードのデジタルツインプラットフォーム です。


目次

  1. 概要
  2. IoT TwinMaker が解決する課題
  3. 主な特徴
  4. アーキテクチャ
  5. コアコンポーネント
  6. 主要ユースケース
  7. Workspace・Entity・Component 設計
  8. Scene(3D シーン)構築
  9. Connector(データソース連携)
  10. 設定・操作の具体例
  11. Grafana 統合・ダッシュボード
  12. Matterport・BIM 統合
  13. 類似サービス比較表
  14. ベストプラクティス
  15. トラブルシューティング
  16. 2025-2026 最新動向
  17. 学習リソース・参考文献
  18. 実装例・チェックリスト
  19. まとめ

概要

AWS IoT TwinMaker とは

AWS IoT TwinMaker は 3D デジタルツイン構築・運用プラットフォーム として機能し、以下を統合提供します:

  • Workspace: デジタルツイン の論理的コンテナ(S3・IAM 統合)
  • Entity: 物理デバイス・場所・設備のデジタル表現
  • Component: Entity に紐付けられたデータソース(SiteWise・Timestream・Lambda)
  • Scene: 3D 可視化(.glb / .gltf モデル)と Tag による データ重ね合わせ
  • Connector: 外部データソース連携(SiteWise・S3・Timestream・Lambda・Snowflake)
  • Grafana Plugin: 既存ダッシュボード環境へのシームレス統合
  • Matterport / BIM: 既存 3D モデル(建築・施工)のインポート

ユースケースの広がり

  • 工場の 3D デジタルツイン:リアルタイム生産状況・設備故障を 3D 可視化
  • スマートビル・FM(Facility Management):空調・照明・電力管理を 3D 表示
  • データセンター:ラック配置・電力・温度監視を 3D マップで一目瞭然
  • インフラ施設(橋梁・ダム・発電所):センサーデータを地形・構造物と重ね合わせ
  • 不動産・建設:BIM モデルとセンサーデータを統合した竣工前確認
  • 風力発電:オフショア風力ファーム全体の遠隔監視

IoT TwinMaker が解決する課題

課題 従来の方法 TwinMaker での解決
設備状態の把握 ダッシュボード数値のみ→どの設備が問題か不明確 3D 工場モデルで赤くなった設備を直感的に特定
複数データソースの統合 Excel・API・DB を手動で統合→不整合 Entity-Component で統一インターフェース
現場エンジニア対応時間 設備位置を確認するのに 30 分→対応遅延 3D シーンで位置・詳細情報を即座に確認
3D モデル・BIM の活用 CAD データが静的なまま→リアルタイム更新困難 TwinMaker で動的なセンサーデータを重ね合わせ
複数施設の統一監視 施設ごとに別々の監視システム→比較困難 統一 Grafana ダッシュボードで全施設監視
Matterport スキャンの活用 スキャンデータが営業・案内のみ→分析未活用 運用データを Matterport 3D に統合
空間的な異常検出 センサー数値のみ→隣接機械の相関を見落とし 3D 空間配置でセンサー群の異常パターン発見

主な特徴

✅ Entity-Component-System(ECS)知識グラフ

物理世界をデータモデルで表現:

Workspace(デジタルツインの論理的なコンテナ)
└── Entity(物理デバイス・場所・設備)
    ├── Component(SiteWise / Timestream / Lambda データ)
    └── Properties(静的・時系列・関係メタデータ)

利点:

  • 設備の階層構造を明確に表現(工場 > ライン > 機械 > 部品)
  • 同じコンポーネント型を複数 Entity で再利用
  • Grafana への統一インターフェース

✅ 3D Scene Composition(シーン構築)

.glb / .gltf フォーマットの 3D モデルを組み立て:

Component モデル(単体設備)
  + Assembly(複合設備)
  = Scene(工場全体)

例: CNC 機械 モデル × 10 台 → ライン全体の Scene

特性:

  • ドラッグ&ドロップで 3D オブジェクト配置
  • オブジェクトの座標(x, y, z)・回転・スケール調整
  • Tag で Entity データを 3D 位置に紐付け

✅ Multiple Data Source Connectors

複数のデータソースを統一インターフェースで管理:

✓ AWS IoT SiteWise(産業用タイムシリーズ)
✓ Amazon Timestream(汎用タイムシリーズ)
✓ AWS Lambda(カスタムデータ変換)
✓ Amazon S3(ドキュメント・画像参照)
✓ Amazon Kinesis Video Streams(IP カメラ動画)
✓ Snowflake・Redshift 等(外部 DB)

✅ Grafana Integration(ダッシュボード統合)

既存 Grafana インスタンスに TwinMaker パネルを追加:

Grafana Dashboard
├── 時系列グラフ(従来)
├── ゲージ・テーブル(従来)
└── TwinMaker 3D Scene Panel(NEW)
    └── タグをクリック → 詳細メトリクス表示

✅ Matterport 統合

建物内のフォトグラメトリ 3D スキャンをインポート:

  • Matterport Space(建物の 360° スキャン)
  • ↓ TwinMaker にインポート
  • ↓ タグで IoT センサー位置を指定
  • ↓ Grafana で 3D 空間を操作 → センサー詳細表示

✅ BIM(Building Information Modeling)対応

Revit・ArchiCAD からの BIM モデルをインポート:

BIM Model(.ifc / .glb)
  ├── 建物構造・設備配置
  ├── 部屋・ゾーン情報
  └── 施工進捗・エネルギー監視

アーキテクチャ

┌─────────────────────────────────────────────────────────────┐
│ デジタルツイン対象(物理世界)                             │
├─────────────────────────────────────────────────────────────┤
│ 工場 / 建物 / DC / インフラ設備                            │
│ ↓ センサー / カメラ / 制御装置                             │
└──────────────────┬──────────────────────────────────────────┘
                   │
    ┌──────────────▼────────────────┐
    │ Data Sources                   │
    ├────────────────────────────────┤
    │ ┌─ IoT SiteWise ──────────┐   │
    │ │ 産業機器リアルタイムデータ   │   │
    │ └──────────────────────────┘   │
    │ ┌─ Timestream ──────────────┐  │
    │ │ 汎用タイムシリーズデータ    │  │
    │ └────────────────────────────┘  │
    │ ┌─ Lambda / Custom ──────────┐ │
    │ │ 変換・計算ロジック         │ │
    │ └────────────────────────────┘ │
    │ ┌─ Kinesis Video Streams ──┐  │
    │ │ IP カメラ映像             │  │
    │ └────────────────────────────┘  │
    └──────────────┬───────────────────┘
                   │
        ┌──────────▼──────────────────┐
        │ AWS IoT TwinMaker           │
        ├─────────────────────────────┤
        │ Workspace                   │
        │ ├── Entity(機械 A)         │
        │ │   └── Component(SiteWise) │
        │ ├── Entity(温度センサー)   │
        │ │   └── Component(Timestream)
        │ └── Scene(3D 工場モデル)   │
        │     └── Tags / Lights       │
        └──────────────┬──────────────┘
                       │
        ┌──────────────┼──────────────┐
        │              │              │
    ▼   ▼          ▼   ▼          ▼   ▼
  Grafana      CloudWatch    Bedrock
  ダッシュ      Alarms       AI Analysis
  ボード

コアコンポーネント

1. Workspace(ワークスペース)

デジタルツイン全体のコンテナ:

{
  "workspaceId": "factory-digital-twin",
  "displayName": "Smart Factory DT",
  "description": "Factory floor digital twin with real-time monitoring",
  "s3Location": "arn:aws:s3:::my-twinmaker-bucket",
  "role": "arn:aws:iam::...:role/TwinMakerRole",
  "createdDate": "2024-01-15T10:30:00Z",
  "updatedDate": "2026-04-26T14:20:00Z"
}

特性:

  • S3 バケットを必須(モデル・シーンデータ保存)
  • IAM ロール で アクセス制御
  • リージョン単位で分離可能

2. Entity(エンティティ)

物理デバイス・場所・設備のデジタル表現:

{
  "entityId": "cnc-machine-01",
  "entityName": "CNC Machine 01",
  "workspaceId": "factory-digital-twin",
  "hasChildEntities": false,
  "parentEntityId": "production-line-01",
  "createdDate": "2024-02-01T08:00:00Z",
  "components": {
    "sitewise-asset": {
      "componentTypeId": "com.example.SiteWiseAsset",
      "properties": {
        "assetId": {
          "value": {
            "stringValue": "asset-abc123"
          }
        },
        "temperature": {
          "value": {
            "doubleValue": 62.5
          }
        }
      }
    }
  }
}

3. Component(コンポーネント)

Entity に紐付けられたデータソース・メタデータ:

{
  "componentTypeId": "com.example.SiteWiseAsset",
  "workspaceId": "factory-digital-twin",
  "propertyDefinitions": {
    "assetId": {
      "dataType": {
        "type": "STRING"
      },
      "isExternalId": true
    },
    "temperature": {
      "dataType": {
        "type": "DOUBLE"
      },
      "isTimeSeries": true,
      "isRequiredInEntity": true
    },
    "pressure": {
      "dataType": {
        "type": "DOUBLE"
      },
      "isTimeSeries": true
    },
    "status": {
      "dataType": {
        "type": "STRING"
      },
      "isRequiredInEntity": true
    }
  }
}

4. Scene(シーン)

3D 可視化。.glb / .gltf モデルと Tag で構成:

{
  "sceneId": "factory-floor-scene",
  "workspaceId": "factory-digital-twin",
  "contentLocation": "s3://my-twinmaker-bucket/scenes/factory-floor.glb",
  "displayName": "Factory Floor - Production Line 01",
  "nodes": [
    {
      "nodeId": "cnc-machine-01-model",
      "type": "Model",
      "properties": {
        "URI": "s3://models/cnc-machine.glb",
        "transform": {
          "position": [10.0, 0.0, 5.0],
          "rotation": [0, 0, 0],
          "scale": [1.0, 1.0, 1.0]
        }
      }
    },
    {
      "nodeId": "cnc-temp-tag",
      "type": "Tag",
      "properties": {
        "position": [10.5, 1.5, 5.0],
        "dataBinding": {
          "entityId": "cnc-machine-01",
          "componentId": "sitewise-asset",
          "propertyId": "temperature"
        }
      }
    },
    {
      "nodeId": "scene-light-01",
      "type": "Light",
      "properties": {
        "lightType": "directional",
        "intensity": 1.0,
        "position": [15.0, 20.0, 10.0]
      }
    }
  ]
}

5. Connector(コネクタ)

外部データソースとの連携定義:

{
  "connectorId": "sitewise-connector",
  "connectorType": "IOT_SITEWISE",
  "workspaceId": "factory-digital-twin",
  "configuration": {
    "assetHierarchyId": "asset-root-id",
    "filterCriteria": {
      "assetModelNames": ["CNC-Machine", "Temperature-Sensor"]
    }
  }
}

主要ユースケース

✅ 1. スマートファクトリーの生産状況リアルタイム監視

3D 工場モデル(俯瞰図)
├── ライン 01(緑:稼働)
├── ライン 02(緑:稼働)
├── ライン 03(赤:停止中)← CNC 機械故障
│   ├── 故障箇所:スピンドル加熱
│   ├── センサー温度:75°C(閾値 60°C 超過)
│   └── 修理必要
└── ライン 04(黄:段階的警告)

効果:
- 設備故障の特定時間: 30 分 → 2 分
- 稼働率向上: 5-10%

✅ 2. データセンターラック温度・電力監視

データセンター 3D マップ
├── ラック A-01(緑:温度 22°C・電力 3.5kW)
├── ラック A-02(黄:温度 28°C・電力 5.2kW)← 要注意
├── ラック A-03(緑)
├── ラック B-01(赤:電源故障)← 即時対応
└── ラック B-02(緑)

特性:
- ホットスポット(温度異常)を 3D で可視化
- ラック配置から冷却効率を改善
- 火災リスク予防

✅ 3. スマートビル・ビルディングオートメーション

Building 3D Model
├── Floor 1(エネルギー効率 82%)
│   ├── Zone A(HVAC 温度 22°C・湿度 45%)
│   ├── Zone B(照度 300 lux・消費電力 2.5kW)
│   └── Zone C(人数検出 12 名)
├── Floor 2(エネルギー効率 78%)
│   └── Zone D(空きエリア・自動消灯)
└── Roof(太陽光パネル 発電 15kW)

運用効果:
- エネルギー消費 20% 削減
- 快適性スコア向上
- テナント満足度向上

✅ 4. 風力発電ファーム遠隔監視(オフショア)

Offshore Wind Farm 3D Map
├── Turbine 01(状態:稼働・出力 2.5MW)
├── Turbine 02(状態:メンテナンス中)
├── Turbine 03(状態:稼働・出力 2.4MW)
├── Turbine 04(警告:羽根振動異常)← 予知保全
└── Subsea Cable Map(電圧・電流監視)

効果:
- 故障予測精度 95%
- 外洋への出動コスト削減 50%(遠隔監視で事前準備)

✅ 5. 橋梁・ダム・インフラ監視

Bridge 3D Model + Sensor Map
├── Main Cable(応力・振動監視)
├── Main Span(沈下量・ひび割れ)
├── Substructure(基礎沈下量)
└── Drainage System(水量・流速)

早期警告:
- 沈下速度異常 → 補修時期通知
- 振動パターン異常 → 地震・強風警戒

✅ 6. 建設・施工進捗管理

BIM Model(Revit from AutoDesk)
├── As-Designed(設計情報)
├── As-Built(実施工状況)
  ├── 基礎工事:完了(100%)
  ├── 躯体工事:進行中(65%)
  │   ├── 3 階コンクリート打設完了
  │   ├── 4 階型枠組立中
  │   └── 5 階→ 来週予定
  └── 電気・機械設備:手付かず(0%)
└── As-Operated(実装後の運用データ)
    ├── HVAC システム:75% 稼働率
    ├── 照明システム:消費電力 120kW

✅ 7. 医療施設設備管理

Hospital Building DT
├── Operation Theater 01
│   ├── 無菌環境センサー(粒子数・圧力)
│   ├── HVAC 運転状態
│   └── 備品・機器在庫
├── ICU Ward
│   ├── 患者モニタリング機器(統計情報のみ・プライバシー保護)
│   ├── 医療ガス供給管理
│   └── 照明・温度制御
└── Pharmacy
    ├── 医薬品保管温度
    ├── 在庫管理(自動化ロボット)

✅ 8. 農業・施設園芸ハウス管理

Greenhouse Complex 3D
├── Greenhouse A(トマト栽培)
│   ├── 温度・湿度・CO2 濃度
│   ├── 灌漑システム(自動)
│   ├── 照明レベル(成長ステージ別)
│   └── 生育データ(株数・平均身長)
├── Greenhouse B(キュウリ栽培)
│   └── [同様の監視項目]
└── Compost Facility
    ├── 温度・含水率(発酵進捗)
    └── 肥料品質分析

効果:
- 収量予測精度 90%
- 病害リスク早期検知(相対湿度 異常)

✅ 9. 港湾・物流施設(ターミナル)管理

Port Terminal 3D Model
├── Crane 01(稼働率 75%・故障予測 30 時間後)
├── Crane 02(稼働率 82%)
├── Container Stacking Area
│   ├── 温度・湿度(冷蔵コンテナ)
│   └── 重量・積荷確認
├── Truck Parking Area
│   ├── 駐車位置・到着時間
│   └── 待機時間最適化
└── Vessel Mooring(係船中)
    ├── 係留索張力
    ├── 船舶と岸壁の距離

✅ 10. 交通・地下鉄駅管理

Subway Station DT
├── Platform 1
│   ├── 人群密度(混雑度スコア)
│   ├── 照明・空調(快適性スコア)
│   └── エスカレーター・エレベーター状態
├── Ticket Gates
│   ├── 乗車率
│   └── 混雑予測(AI)
├── Emergency Equipment
│   ├── 緊急停止ボタン(テスト済み)
│   └── 火災報知器・防火設備

✅ 11. 製薬・食品工場の GMP 監視

Pharmaceutical Facility DT
├── Clean Room Grade A
│   ├── 粒子濃度(ISO Class 5:0.1 μm)
│   ├── 圧力勾配(陽圧:10-30 Pa)
│   ├── 温度・湿度(20-25°C / 35-55%)
│   ├── 微粒子監視(自動パーティクルカウンター)
│   └── 異常時→ アラート・進入禁止
├── Grade B / C / D
│   └── [段階的な監視・制御]
└── Personnel Gowning / Degowning
    ├── 人数確認・衣類交換ログ
    └── GMP 監査証跡

✅ 12. 駐車場・EV 充電ステーション

Smart Parking Facility DT
├── Floor 1(30 台収容)
│   ├── 空き駐車位置(リアルタイム)
│   ├── 車両タイプ認識(EV / ガソリン / HV)
│   └── 不正駐車警告
├── EV Charging Area
│   ├── 充電ステーション状態(稼働・保守中)
│   ├── 充電中の車両・完了予定時刻
│   └── 電力消費・請求管理
└── Security / Lighting
    ├── カメラ映像(不審者検出)
    └── 照度制御(人感センサー)

Workspace・Entity・Component 設計

階層的な Entity 設計(スケーラビリティ重視)

❌ フラット設計(管理が煩雑)
Entity: CNC-Machine-01
Entity: Temperature-Sensor-01
Entity: Pressure-Sensor-01
Entity: Production-Line-01
→ 1000 台規模で管理不可

✅ 階層設計(スケーラブル)
Workspace: Factory-DT
├── Entity: Factory-Root
│   ├── Entity: Production-Line-01
│   │   ├── Entity: CNC-Machine-01
│   │   │   ├── Component: SiteWise-Asset (温度・圧力)
│   │   │   └── Component: Metrics (OEE 計算)
│   │   ├── Entity: CNC-Machine-02
│   │   └── Entity: Robot-Arm-01
│   ├── Entity: Production-Line-02
│   │   └── [同様の階層]
│   └── Entity: Warehouse-01
│       ├── Entity: Shelf-01
│       │   ├── Entity: Bin-01 (温湿度)
│       │   └── Entity: Bin-02 (RFID タグ)

Component Type の再利用戦略

{
  "componentTypeId": "com.factory.MachineWithSensors",
  "propertyDefinitions": {
    "assetId": {
      "dataType": { "type": "STRING" },
      "isExternalId": true
    },
    "temperature": {
      "dataType": { "type": "DOUBLE" },
      "isTimeSeries": true,
      "unit": "Celsius"
    },
    "pressure": {
      "dataType": { "type": "DOUBLE" },
      "isTimeSeries": true,
      "unit": "bar"
    },
    "status": {
      "dataType": { "type": "STRING" },
      "enum": ["RUNNING", "STANDBY", "ERROR", "MAINTENANCE"]
    }
  }
}

// 複数 Entity で再利用
Entity: CNC-Machine-01
Entity: CNC-Machine-02
Entity: Lathe-01
  ↓ 全て上記 Component Type を使用
  ↓ 管理効率 3 倍化

Scene(3D シーン)構築

3D モデルフォーマット

推奨: .glb(Binary glTF)
- 圧縮率: 50-70%(.gltf テキスト形式比)
- 対応ツール: Blender・Three.js・Cesium.js
- 最大サイズ: 100 MB/モデル(推奨 < 50 MB)

作成手順:
1. CAD ファイル(SolidWorks・Inventor)→ Blender インポート
2. 不要なポリゴン削減(optimized LOD: Level of Detail)
3. マテリアル・テクスチャ設定
4. .gltf / .glb にエクスポート
5. TwinMaker へアップロード(S3 経由)

Node 配置の最適化

{
  "sceneId": "factory-main",
  "nodes": [
    {
      "nodeId": "root-group",
      "type": "Group",
      "children": ["production-line-group", "warehouse-group"]
    },
    {
      "nodeId": "production-line-group",
      "type": "Group",
      "children": ["line-01-cnc", "line-01-robot", "line-01-conveyor"],
      "properties": {
        "transform": {
          "position": [0, 0, 0],
          "rotation": [0, 0, 0]
        }
      }
    },
    {
      "nodeId": "line-01-cnc",
      "type": "Model",
      "properties": {
        "URI": "s3://models/cnc-machine.glb",
        "transform": {
          "position": [5.0, 0.0, 3.0],
          "rotation": [0, 0, 0],
          "scale": [1.0, 1.0, 1.0]
        }
      }
    },
    {
      "nodeId": "temp-tag-cnc",
      "type": "Tag",
      "properties": {
        "position": [5.5, 1.5, 3.0],
        "dataBinding": {
          "entityId": "cnc-machine-01",
          "propertyId": "temperature"
        }
      }
    }
  ]
}

Connector(データソース連携)

SiteWise Connector(推奨: 産業用)

{
  "connectorId": "sitewise-connector",
  "connectorType": "IOT_SITEWISE",
  "workspaceId": "factory-digital-twin",
  "configuration": {
    "assetHierarchyId": "asset-root-id",
    "roleArn": "arn:aws:iam::...:role/TwinMakerSiteWiseConnector"
  }
}

特性:

  • SiteWise Portal との双方向同期
  • Asset Model の自動インポート
  • Property の時系列更新をリアルタイム反映

Lambda Connector(カスタム変換向け)

import json
import boto3

twinmaker = boto3.client('iottwinmaker')

def lambda_handler(event, context):
    """
    カスタムデータ変換・計算ロジック
    複数センサーの複合計算を Component Property に返す
    """
    
    # Entity ID・Property ID を解析
    entity_id = event['entityId']
    property_id = event['propertyId']
    
    # 外部データソースからデータ取得(例: REST API)
    import requests
    response = requests.get(
        f"https://api.factory.example.com/machines/{entity_id}/metrics"
    )
    data = response.json()
    
    # カスタム計算(例: Overall Equipment Effectiveness = OEE)
    availability = data['uptime_hours'] / (24 * 30)  # 月間稼働率
    performance = data['actual_output'] / data['expected_output']
    quality = data['good_units'] / data['total_units']
    
    oee = availability * performance * quality
    
    return {
        'statusCode': 200,
        'value': {
            'doubleValue': oee
        },
        'timestamp': int(time.time() * 1000)
    }

Timestream Connector

{
  "connectorId": "timestream-connector",
  "connectorType": "TIMESTREAM",
  "workspaceId": "factory-digital-twin",
  "configuration": {
    "databaseName": "fleet-metrics",
    "tableName": "sensor-data",
    "roleArn": "arn:aws:iam::...:role/TwinMakerTimestreamConnector"
  }
}

設定・操作の具体例

CLI による Workspace・Entity 作成

# 1. Workspace 作成
aws iottwinmaker create-workspace \
  --workspace-id factory-dt \
  --s3-location arn:aws:s3:::my-twinmaker-bucket \
  --role arn:aws:iam::123456789012:role/TwinMakerRole

# 2. Component Type 定義
aws iottwinmaker create-component-type \
  --workspace-id factory-dt \
  --component-type-id com.factory.CNCMachine \
  --property-definitions file://component-properties.json

# 3. Entity 作成(親)
aws iottwinmaker create-entity \
  --workspace-id factory-dt \
  --entity-id production-line-01 \
  --entity-name "Production Line 01"

# 4. Entity 作成(子)
aws iottwinmaker create-entity \
  --workspace-id factory-dt \
  --entity-id cnc-machine-01 \
  --entity-name "CNC Machine 01" \
  --parent-entity-id production-line-01 \
  --components '{
    "sitewise": {
      "componentTypeId": "com.factory.CNCMachine",
      "properties": {
        "assetId": { "value": { "stringValue": "asset-abc123" } },
        "temperature": { "value": { "doubleValue": 65.0 } }
      }
    }
  }'

# 5. Scene 作成
aws iottwinmaker create-scene \
  --workspace-id factory-dt \
  --scene-id factory-floor-scene \
  --content-location s3://my-twinmaker-bucket/scenes/factory.glb

# 6. Scene にノード追加
aws iottwinmaker update-scene \
  --workspace-id factory-dt \
  --scene-id factory-floor-scene \
  --node-updates file://scene-nodes.json

SDK(Python)での操作

import boto3
import json

client = boto3.client('iottwinmaker')

def create_digital_twin():
    # Workspace 作成
    ws_response = client.create_workspace(
        workspaceId='smart-factory',
        s3Location='arn:aws:s3:::my-bucket',
        role='arn:aws:iam::...:role/TwinMakerRole'
    )
    
    # Entity 作成
    entity_response = client.create_entity(
        workspaceId='smart-factory',
        entityId='machine-001',
        entityName='CNC Machine 001',
        components={
            'monitoring': {
                'componentTypeId': 'com.factory.MachineMonitoring',
                'properties': {
                    'temperature': {
                        'value': {'doubleValue': 62.5}
                    },
                    'pressure': {
                        'value': {'doubleValue': 8.5}
                    }
                }
            }
        }
    )
    
    return {
        'workspace': ws_response,
        'entity': entity_response
    }

# 実行
result = create_digital_twin()
print(f"Workspace created: {result['workspace']['workspaceId']}")
print(f"Entity created: {result['entity']['entityId']}")

IaC(Terraform)での構築

# Terraform: IoT TwinMaker セットアップ

resource "aws_iottwinmaker_workspace" "factory" {
  workspace_id = "smart-factory-dt"
  s3_location  = "arn:aws:s3:::my-twinmaker-bucket"
  role         = aws_iam_role.twinmaker.arn
  
  tags = {
    Name = "Smart Factory Digital Twin"
  }
}

resource "aws_iottwinmaker_entity" "cnc_machine" {
  workspace_id = aws_iottwinmaker_workspace.factory.workspace_id
  entity_id    = "cnc-machine-01"
  entity_name  = "CNC Machine 01"
  
  components = {
    "sitewise-asset" = {
      "componentTypeId" = "com.factory.MachineWithSensors"
      "properties" = {
        "assetId" = {
          "value" = {
            "stringValue" = "asset-12345"
          }
        }
        "temperature" = {
          "value" = {
            "doubleValue" = 65.0
          }
        }
      }
    }
  }
}

resource "aws_iottwinmaker_scene" "factory_floor" {
  workspace_id      = aws_iottwinmaker_workspace.factory.workspace_id
  scene_id          = "factory-floor-01"
  content_location  = "s3://my-bucket/scenes/factory-floor.glb"
  
  depends_on = [
    aws_iottwinmaker_entity.cnc_machine
  ]
}

Grafana 統合・ダッシュボード

Grafana への TwinMaker データソース追加

# Grafana Configuration (datasource.yaml)
apiVersion: 1
datasources:
  - name: AWS IoT TwinMaker
    type: grafana-iot-twinmaker-app
    orgId: 1
    jsonData:
      workspaceId: factory-digital-twin
      roleArn: arn:aws:iam::...:role/GrafanaExecution
      region: us-east-1
    isDefault: true

カスタムダッシュボード例

{
  "dashboard": {
    "title": "Factory Digital Twin Dashboard",
    "panels": [
      {
        "title": "Factory Floor 3D Scene",
        "type": "grafana-iot-twinmaker-app",
        "targets": [
          {
            "workspaceId": "factory-digital-twin",
            "sceneId": "factory-floor-scene"
          }
        ],
        "fieldConfig": {
          "defaults": {
            "custom": {
              "sceneOptions": {
                "showGrid": true,
                "showAxes": true,
                "cameraPosition": [15, 20, 30]
              }
            }
          }
        }
      },
      {
        "title": "Production Line KPIs",
        "type": "graph",
        "targets": [
          {
            "queryType": "entity-property",
            "entityId": "production-line-01",
            "propertyId": "oee"
          }
        ]
      },
      {
        "title": "Machine Status",
        "type": "table",
        "targets": [
          {
            "queryType": "entity-list",
            "filter": {
              "parentEntityId": "production-line-01"
            }
          }
        ]
      }
    ]
  }
}

Matterport・BIM 統合

Matterport Space のインポート

# Matterport から .glb ファイルをエクスポート
# Matterport Web Portal → Settings → Export → Get .glb file

# 取得した .glb を TwinMaker にアップロード
aws s3 cp matterport-building.glb \
  s3://my-twinmaker-bucket/scenes/building-model.glb

# TwinMaker に Scene として登録
aws iottwinmaker create-scene \
  --workspace-id office-building \
  --scene-id office-floor-01 \
  --content-location s3://my-twinmaker-bucket/scenes/building-model.glb

# Tag で IoT センサーを Matterport 3D に重ね合わせ
aws iottwinmaker update-scene \
  --workspace-id office-building \
  --scene-id office-floor-01 \
  --node-updates '[
    {
      "nodeId": "temperature-tag-01",
      "nodeType": "Tag",
      "properties": {
        "position": {"x": 10.5, "y": 2.5, "z": 5.0},
        "dataBinding": {
          "entityId": "zone-a-temp-sensor",
          "propertyId": "temperature"
        }
      }
    }
  ]'

BIM(Revit・IFC)統合

# Revit モデルをエクスポート
# Revit → File → Export → Export as glTF (.glb)

# Blender で BIM メタデータを保持
blender revit-model.glb \
  --script process-bim.py

# Custom Properties を Component として登録
# BIM の "Room", "Wall", "Door" 等を Entity に変換
# Room Number, Area, System Type を Component Property に

類似サービス比較表

特性 TwinMaker NVIDIA Omniverse Azure Digital Twins Bentley iTwin Siemens Xcelerator
3D ビジュアライゼーション ✅ glb/gltf ✅ USD 形式 △ 外部ツール ✅ iModel ✅ Web 3D
Entity-Component モデル ✅ 知識グラフ △ Nucleus ✅ DTDL △ iModel マッピング △ カスタム
データソース多様性 ✅ 10+ △ Omniverse Connectors △ 限定的 ✅ 多数 ✅ SAP 統合
Grafana 統合 ✅ 完全統合 △ オプション △ Power BI 主体 △ Web 限定 △ 独自ダッシュ
Matterport ✅ サポート △ Nucleus △ 非対応 △ 限定 △ 非対応
BIM(Revit) △ 拡張機能 △ Omniverse Design ✅ 完全対応 ✅ 完全対応 ✅ 完全対応
Machine Learning ✅ SageMaker統合 △ 限定 ✅ Azure ML △ 独自分析 △ SAP Analytics
スケーラビリティ ✅ 100万+ Entity ⚠️ 高コスト △ 中規模 ✅ 大規模 ✅ Enterprise
価格体系 💰 Entity 月額 💰💰💰 年額契約 💰💰 従量課金 💰💰💰 年額 💰💰💰 年額
学習曲線 🟩 中程度 🟥 複雑 🟩 中程度 🟥 複雑 🟥 複雑
マネージド ✅ AWS マネージド △ ハイブリッド ✅ Azure マネージド △ SaaS / On-premise △ ハイブリッド

ベストプラクティス

✅ 1. Entity 命名・設計の一貫性

❌ 不一貫な命名
Entity: floor-1_zone_a_cnc01
Entity: productionLine02CNCMachine
Entity: CNC_Machine_03

✅ 命名規則の統一
Entity: {FacilityType}-{LocationID}-{EquipmentType}-{SerialNumber}
例: factory-floor-01-cnc-m001

✅ 2. Component Type の再利用戦略

❌ Entity ごとにカスタム Component 作成
→ 管理負荷増加・データ型の不統一

✅ 汎用 Component Type を定義・再利用
{
  "com.factory.SensorWithAlarm",
  "com.factory.Machine",
  "com.facility.Room"
}
→ 1000+ Entity でも管理簡単

✅ 3. Scene の階層化・最適化

❌ 単一の大型 .glb(100 MB +)
→ ロード遅延・レンダリング負荷

✅ LOD(Level of Detail)を活用
- LOD 0(詳細): 最大 50 MB
- LOD 1(標準): 20 MB
- LOD 2(簡易): 5 MB
→ ユーザー視距離に応じて自動切り替え

✅ 4. Connector 選択戦略

Use Case 推奨 Connector 理由
OPC-UA / Modbus データ SiteWise ネイティブ対応・高性能
汎用タイムシリーズ Timestream Grafana 直結・柔軟性
カスタム変換・計算 Lambda Python / Node.js で実装
ドキュメント・画像 S3 オブジェクトストレージ最適
IP カメラ映像 Kinesis Video ストリーミング最適化

✅ 5. セキュリティ・アクセス制御

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iottwinmaker:GetEntity",
        "iottwinmaker:GetComponentType",
        "iottwinmaker:GetScene"
      ],
      "Resource": "arn:aws:iottwinmaker:*:*:workspace/factory-dt/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "10.0.0.0/8"
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "iottwinmaker:UpdateEntity",
        "iottwinmaker:DeleteEntity"
      ],
      "Resource": "*"
    }
  ]
}

✅ 6. パフォーマンス最適化

# Entity 一括取得(推奨)
response = client.list_entities(
    workspaceId='factory-dt',
    filters=[
        {
            'propertyName': 'parentEntityId',
            'operator': 'EQ',
            'value': 'production-line-01'
        }
    ],
    maxResults=100
)

# Property タイムシリーズ効率的クエリ
response = client.get_property_value(
    workspaceId='factory-dt',
    entityId='cnc-machine-01',
    componentName='monitoring',
    selectedProperties=['temperature', 'pressure'],
    startTime='2026-04-20T00:00:00Z',
    endTime='2026-04-27T23:59:59Z'
)

トラブルシューティング

現象 原因 対策
Entity が Grafana に表示されない Component Type 未定義 / Property 未設定 Component Type 作成・Property 値入力確認
3D Scene のロードが遅い .glb ファイルサイズ過大 LOD 圧縮・テクスチャ解像度低減
Tag がシーン上に表示されない 座標(position)誤り / Entity 存在しない 座標値・Entity ID 再確認
SiteWise Connector が同期されない IAM ロール権限不足 / Asset ID 不一致 IAM ポリシー・Asset ARN 確認
Grafana パネルが真っ黒 WebGL 非対応ブラウザ / GPU 不足 Chrome・Firefox 最新版 / GPU メモリ確認
Timestream から Property 値が取得できない クエリ構文誤り / テーブル名誤り Timestream テーブル・カラム名確認
Large Entity 群の操作が遅い 単一クエリで 10000+ Entity 取得 ページネーション(maxResults)使用
S3 バケット へのアップロードが失敗 S3 バケットパス誤り / 権限なし Bucket ARN・IAM ロール S3 権限確認

2025-2026 最新動向

📰 1. Bedrock 生成 AI 統合

異常検出後、生成 AI で「原因分析・修復方法」を自動生成:

異常検出: CNC 機械の温度 75°C(閾値 60°C 超過)
  ↓ Bedrock 分析
出力: 「スピンドル冷却液の流量不足の可能性が高い(信頼度 92%)。
      以下の手順で確認してください:
      1. 冷却液リザーバーレベル確認(通常 70-80%)
      2. ポンプ稼働確認
      3. フィルター詰まり検査」

📰 2. Video Stream 統合(カメラ映像)

IP カメラ・ドローン映像を 3D シーンに埋め込み:

3D Factory Scene
├── Wall Display(リアルタイムカメラ映像)
├── Drone Feed(空撮)
└── 360° Panorama(作業エリア)

📰 3. Mobile App(iOS・Android)

AR(拡張現実)で物理世界に 3D デジタルツインをオーバーレイ:

  • スマートフォンカメラ → 工場映像
  • デジタルツイン 3D モデル → 上から重ね合わせ(AR)
  • → テクニシャン は AR でセンサー値・故障箇所を即座確認

📰 4. Zero Trust Digital Twin Security

デバイス証明書の短命化・continuous certification


学習リソース・参考文献

公式ドキュメント(8+)

  1. AWS IoT TwinMaker Developer Guide
  2. Entity-Component System Architecture
  3. Scene Composition Guide
  4. Grafana Integration
  5. Connector Configuration
  6. Matterport Integration
  7. AWS IoT TwinMaker Pricing
  8. AWS IoT TwinMaker FAQs

パートナー・ベンダー リソース(5+)

  1. Grafana AWS IoT TwinMaker Plugin
  2. AWS Solutions: Industrial Digital Twin
  3. Matterport Support for AWS IoT TwinMaker
  4. glTF Format Specification
  5. Building Information Modeling(BIM)Standards

実装例・チェックリスト

チェックリスト: IoT TwinMaker 導入前評価

  • [ ] 物理施設(工場・建物・DC)の 3D モデルが存在するか?
  • [ ] リアルタイムセンサーデータ(IoT SiteWise / Timestream)が稼働中か?
  • [ ] Grafana ダッシュボード基盤が構築済みか?
  • [ ] Matterport 3D スキャン・BIM モデルが利用可能か?
  • [ ] Entity 数が 100+ 台以上か?(スケーラビリティ効果)
  • [ ] セキュリティチーム・オペレーションチームの教育が可能か?
  • [ ] SageMaker での予測分析が計画中か?

チェックリスト: Workspace・Entity・Scene 設計

  • [ ] 階層的な Entity 設計(Factory > Line > Machine > Component)
  • [ ] Component Type を汎用的に再利用(10+ Entity で共通)
  • [ ] 3D モデル を .glb に変換・LOD 設定(推奨 < 50 MB)
  • [ ] Scene ノード に Tag を配置・Entity 紐付け
  • [ ] Connector 選択・テスト(SiteWise / Timestream / Lambda)
  • [ ] Grafana データソース・ダッシュボード設定

チェックリスト: 本番運用準備

  • [ ] IAM ロール・ポリシー設定(最小権限)
  • [ ] S3 バケット・暗号化設定
  • [ ] Grafana ユーザー・グループ管理
  • [ ] アラート設定(CloudWatch)
  • [ ] バックアップ・DR 計画
  • [ ] ユーザー教育(オペレーション・メンテナンス)
  • [ ] Cost Estimation(Entity 数 × $0.50/月 + Grafana)

まとめ

AWS IoT TwinMaker は、物理施設(工場・建物・DC・インフラ)の 3D デジタルツイン を構築し、リアルタイムセンサーデータ・SiteWise・Timestream・外部システムと統合して、リアルタイム監視・異常検出・予知保全を 3D ビジュアルで実現 するプラットフォームです。

主な利点:

  • 直感的な可視化: グラフ・ゲージより 3D 空間で異常箇所が瞬時に分かる
  • 統一インターフェース: Entity-Component モデルで多様なデータソースを統一管理
  • Grafana 統合: 既存ダッシュボード基盤を活用
  • Matterport・BIM: 既存 3D スキャン・設計モデルを即座に活用
  • スケーラビリティ: 100万+ Entity を管理可能
  • 生成 AI 統合: Bedrock で異常原因を自動分析

製造業・建築・不動産・インフラ企業向けに、2026 年以降の標準的なデジタルツインプラットフォーム として展開が急速に拡大します。


最終更新:2026-04-26 バージョン:v2.0