目次
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 による異常解析も統合。製造業・スマートビル・エネルギー・インフラ・不動産企業向けの エンタープライズグレードのデジタルツインプラットフォーム です。
目次
- 概要
- IoT TwinMaker が解決する課題
- 主な特徴
- アーキテクチャ
- コアコンポーネント
- 主要ユースケース
- Workspace・Entity・Component 設計
- Scene(3D シーン)構築
- Connector(データソース連携)
- 設定・操作の具体例
- Grafana 統合・ダッシュボード
- Matterport・BIM 統合
- 類似サービス比較表
- ベストプラクティス
- トラブルシューティング
- 2025-2026 最新動向
- 学習リソース・参考文献
- 実装例・チェックリスト
- まとめ
概要
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+)
- AWS IoT TwinMaker Developer Guide
- Entity-Component System Architecture
- Scene Composition Guide
- Grafana Integration
- Connector Configuration
- Matterport Integration
- AWS IoT TwinMaker Pricing
- AWS IoT TwinMaker FAQs
パートナー・ベンダー リソース(5+)
- Grafana AWS IoT TwinMaker Plugin
- AWS Solutions: Industrial Digital Twin
- Matterport Support for AWS IoT TwinMaker
- glTF Format Specification
- 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