見える化の先は"解かる化" ?
チャットするだけで理解できる IoT プラットフォームの作り方
Author : 森田 和明 (富士ソフト株式会社)
こんにちは。富士ソフト株式会社の森田 和明です。
普段は IoT クラウド基盤アーキテクトとして、お客様の IoT サービスを実現する AWS アーキテクチャの検討、提案、構築を行っています。最近は生成 AI にも活動の幅を広げ、お客様を広くご支援しています。
製造現場では「データはあるが活用できていない」「設備トラブルの予兆を捉えられない」「エネルギー消費の無駄を特定できない」といった課題を多く耳にします。これらの解決には、データ収集から分析・活用までの一貫したプラットフォームが必要です。
AWS IoT SiteWise は、こうした課題に対する強力なソリューションを提供します。エッジでのデータ収集からクラウドでの保存・分析まで、フルマネージドで実現できるため、システム構築の負担を大幅に軽減できます。
本記事では、AWS IoT SiteWise を中心に、工場 IoT の実装から生成 AI を活用したデータ分析までの具体的な手順を解説します。技術的な専門知識がなくても導入できるよう、設定手順を詳細に説明していますので、製造業の DX 担当者様はぜひご活用ください。
目次
1. AWS のアーキテクチャ
2. AWS IoT SiteWise Edge をインストールしてみよう
2-1. Raspberry Pi を準備
2-2. SiteWise Edge を作成
2-3. SiteWise Edge をインストール
3-1. OPC-UA シミュレーターを Amazon Q Developer で作成
3-2. OPC-UA シミュレーターを起動
3-3. SiteWise Edge のデータ収集設定
3-4. アセットモデルとアセットを作成
4. Amazon Managed Grafana で可視化してみよう
4-1. Amazon Managed Grafanaを構築
4-2. Amazon Managed Grafana へサインインするユーザーを追加
4-3. プラグイン管理機能の有効化
4-4. Amazon Managed Grafana の設定
4-5. グラフを作成
5-1. AWS IoT SiteWise のコールドストレージの設定
5-2. Glue テーブルの作成
5-3. Amazon Redshift Serverless の作成
5-4. Amazon Bedrock ナレッジベースの作成
5-5. Amazon Bedrock ナレッジベースに必要なアクセス権限の付与
5-5-1. Amazon Redshift Serverless での権限付与
5-5-2. AWS Lake Formation での権限付与
5-5-3. サービスロールへの権限付与
5-6. Amazon Bedrockナレッジベースで検索実行
6. お片付け
7. まとめ
ご注意
本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。

このクラウドレシピ (ハンズオン記事) を無料でお試しいただけます »
毎月提供されるクラウドレシピのアップデート情報とともに、クレジットコードを受け取ることができます。
1. AWS のアーキテクチャ
今回構築する AWS のアーキテクチャはこちらです。

使用するサービスの概要と利用用途は以下のとおりです。
- AWS IoT SiteWise : 産業機器からの IoT データの収集と保管を行うサービス。エッジ側には SiteWise Edge をインストールします。
- Amazon Managed Grafana : オープンソースのダッシュボード「Grafana」を AWS がマネージドで提供するサービス。
- Amazon S3 : AWS IoT SiteWise のコールドストレージ機能を有効にすることで IoT データをエクスポートし、S3に格納。
- AWS Glue : S3 に出力されたデータに対するテーブル情報を、Glue データカタログとして保持。
- AWS Lake Formation : Glue テーブルに対するアクセス制御を行う。
- Amazon Redshift : Glue テーブルに対するクエリ (SQL) を実行する。
- Amazon Bedrock : 生成 AI サービス。Bedrock ナレッジベースの機能として構造化データを使った RAG を構築。
このアーキテクチャにより、工場設備からのデータ収集、長期保存、分析、そして生成 AI による高度な活用までをシームレスに実現できます。使用するサービスの数が多いですが、それぞれの手順はそれほど難しくありません。それでは、実際の構築手順を見ていきましょう。
2. AWS IoT SiteWise Edge をインストールしてみよう
2-1. Raspberry Pi を準備
ゲートウェイデバイスとして、今回は Raspberry Pi 4 を使用しました。
- Raspberry Pi 4 (メモリ 8GB)
- microSD カード (16GB のものを使用)
OS は、「Ubuntu Desktop 24.04.2 LTS (64-bit)」を選択します。Raspberry Pi OS を選択すると、後述の手順ではインストールできませんのでご注意ください。
OS のインストールが完了したら、モニター、マウス、キーボードを接続し、Ubuntu の初期設定を行います。
この先の手順は Raspberry Pi に SSH で接続して行いますので、以下のコマンドを実行して OpenSSH サーバーをインストールしてください。
sudo apt update
sudo apt install -y openssh-server
これで Raspberry Pi の準備は完了です。
2-2. SiteWise Edge を作成
それでは、SiteWise Edge を作成しましょう。マネジメントコンソールを使用して行います。
デプロイターゲットとゲートウェイの設定を以下の通り設定します。
- デプロイターゲットを選択 : セルフホストゲートウェイ
- セルフホストゲートウェイのオプション : MQTT 対応、V3
- ゲートウェイ名 : 自動で入力された値
- Greengrass デバイス OS : Linux - ARMv8 (AArch64)
私の環境では「Gateway-G6OzkFxPV.deploy.sh」というファイル名のインストーラーが生成され、自動でダウンロードされました。
これで SiteWise Edge の作成は完了です。インストーラーを使って、Raspberry Pi にインストールしましょう。
2-3. SiteWise Edge をインストール
Raspberry Pi に SSH で接続してインストールを行います。
私はコマンドが苦手なので、Remote - SSH という Visual Studio Code の拡張機能を使って Raspberry Pi に接続します。普段使っている IDE の環境を使って Raspberry Pi の操作ができるので重宝しています。
先ほどダウンロードしたインストーラー(Gateway-G6OzkFxPV.deploy.sh)を Raspberry Pi にコピーします。
まずは、インストールに必要な curl をインストールします。
sudo apt install -y curl
その後、インストーラーを実行します。
chmod +x ./Gateway-G6OzkFxPV.deploy.sh
sudo ./Gateway-G6OzkFxPV.deploy.sh
SiteWise Edge の動作に必要なライブラリーをチェックし、不足しているものは自動でインストールされます。Open JDK 11 と Docker が不足しているようです。「Y」で返答するとインストールが開始されます。
インストールはこれだけで完了です。
しばらくすると、マネジメントコンソール上のオンラインステータスが「オンライン」に、パブリッシャーの設定ステータスが「同期中」に更新されます。
これで SiteWise Edge のインストールと、AWS クラウドとの接続まで完了しました。
3. SiteWise Edge でデータ収集してみよう
では、SiteWise Edge でデータを収集してクラウドに送信したいと思います。
しかしここで重大なことに気が付きました。自宅で検証を進めているため、OPC-UA で通信できる機材がありません。そのため、OPC-UA のシミュレーターを作成することにしました。

3-1. OPC-UA シミュレーターを Amazon Q Developer で作成
OPC-UA シミュレーターを作成すると決めたものの、どうやって作ればいいのか分かりません。ここで登場するのが Amazon Q Developer です。
Amazon Q Developer は、生成 AI を活用したソフトウェア開発のためのアシスタントです。Visual Studio Code をはじめとする複数の IDE に対応しており、 CLI (コマンドラインインターフェイス) も提供されています。
Amazon Q Developer には「エージェント機能」があり、指示を与えるだけでプログラム一式を生成させることができます。この機能を使って OPC-UA シミュレーターを作成してもらいましょう。
OPC-UA シミュレーターの概要を、「task.md」というファイル名で作成しました。
AWS IoT SiteWiseのテスト環境を作成します。SiteWise Edgeの動作確認をするために、OPC-UAサーバーのシミュレーターが必要になりました。
# 条件
- Python3.12環境で動作する
- 5秒間隔でデータ取得する想定
- 値は毎秒少しずつ変化する
- センサーの種類や数はお任せします。製造工場をイメージしてほしいです。
- 設備の数は1つで十分です。
- 1時間に1回程度(ランダム)で、機器の故障を想定した動作をする。
# 成果物
- Pythonプログラム
そして、Amazon Q Developer に以下のように指示をします。(「/dev」がエージェント機能として動作させるコマンドです。)
/dev task.mdの内容を確認して実行してください
すると、OPC-UA シミュレーターを作成してくれました !
作成されたファイルは以下の 3 つです。README や依存ライブラリーに関するファイルまで作成されます。
- README.md
- opcua_simulator.py
- requirements.txt
3-2. OPC-UA シミュレーターを起動
Python の仮想環境を作成します。
sudo apt install -y python3-pip python3-venv
python3 -m venv .venv
source .venv/bin/activate
ライブラリーをインストールします。
pip install -r requirements.txt
OPC-UA シミュレーターを起動します。
python opcua_simulator.py
次の手順では、クラウド側の設定を行います。
3-3. SiteWise Edge のデータ収集設定
OPC-UA シミュレーターからデータを収集するように、SiteWise Edge を設定します。SiteWise Edge の設定はマネジメントコンソールで行います。
以下の設定項目を入力します。ローカルエンドポイントは、シミュレーターの README に記載がありました !
- ソース名: opc-ua-server
- ローカルエンドポイント: opc.tcp://0.0.0.0:4840/freeopcua/server/
入力後、「保存」をクリックします。
これで設定は完了です。
ここまでの手順がうまくできていれば、OPC-UA シミュレーターのデータはクラウドに届いています。マネジメントコンソールの「データストリーム」メニューを開くとデータが届いているかどうか確認できます。
「アセットプロパティ名」や「アセット名」が空欄で表示されます。これは、 クラウドにデータは届いているが、SiteWiseの管理対象ではない 状態です。管理対象とするため、アセットモデルとアセットを作成します。
3-4. アセットモデルとアセットを作成
まずはアセットモデルを作成します。アセットモデルは簡単に言うと、アセット (資産) の定義です。(プログラムが分かる人向けに表現すると、アセットモデルがクラスでアセットがインスタンスのような関係です。) アセットとアセットモデルを使うことで、大量の設備の情報を体系的に管理し、効率的なアセット運用管理が可能になるなどのメリットがあります。
アセットモデルは以下の手順で作成します。
アセットモデルの測定値を定義します。今回はシミュレーターが送信する値に合わせて定義します。
名前 | 単位 | データ型 |
Temperature | °C | ダブル |
Pressure | kPa | ダブル |
Vibration | mm/s | ダブル |
Motor Speed | RPM | ダブル |
Power Consumption | kW | ダブル |
Production Rate | units/hour | ダブル |
Operational Status | ブール | |
Maintenance Status | ブール |
以下の内容を入力します。
- モデル : ManufacturingEquipment
- 名前 : ManufacturingEquipment1
入力後、「アセットの作成」をクリックします。
これでアセットの作成は完了です。
最後にデータストリームとアセットの紐づけを行います。
メニューの「データストリーム」を選択します。すべてのデータストリームにチェックを入れ、「データストリームを管理」をクリックします。
これで、データストリームとアセットの紐づけが完了です。
メニューの「アセット」から ManufacturingEquipment1 を選択すると、プロパティの測定にある「最新の値」と「最新の値のタイムスタンプ」に値が反映されていることが分かります。
これで、OPC-UAシミュレーターで生成された値が、SiteWise Edge で収集され、クラウド上のアセットに正しく登録されました。
4. Amazon Managed Grafana で可視化してみよう
無事、AWS IoT SiteWise にデータが登録されましたので、可視化してみましょう。AWS IoT SiteWise のデータの可視化に適しているサービスが、Amazon Managed Grafana です。
4-1. Amazon Managed Grafanaを 構築
Amazon Managed Grafana を使用するユーザーをどの方式で認証するか指定します。今回は IAM Identity Center を使用するので「AWS IAM ID センター (AWS SSO の後継)」にチェックを入れます。
ここでは Amazon Managed Grafana にアタッチされる IAM ロールに対する権限付与の設定を行います。データソースの一覧から「AWS IoT SiteWise」にチェックを入れ、「次へ」をクリックします。
これでAmazon Managed Grafanaのワークスペースが作成されました。
4-2. Amazon Managed Grafana へサインインするユーザーを追加
これで Amazon Managed Grafana にログインするユーザーの追加が完了しました。
4-3. プラグイン管理機能の有効化
Amazon Managed Grafana で AWS IoT SiteWise のデータを表示するためには、プラグインを追加する必要があります。Amazon Managed Grafana にプラグインを追加できるよう設定を変更します。
これでプラグインの追加が可能になりました。
4-4. Amazon Managed Grafana の設定
ここからは Amazon Managed Grafana の画面で設定を行います。
Grafana ワークスペースの URL にアクセスし、「Sign in with AWS IAM Identity Center」をクリックします。
これで、Amazon Managed Grafana でAWS IoT SiteWise のデータを使用できるようになりました。
4-5. グラフを作成
以下の値を設定します。
- Query type : Get property value history
- Asset : ManufacturingEquipment1
- Property : Temperature
値を変更後、「Run queries」をクリックします。右上の Panel Title も必要に応じて変更し、「Apply」をクリックします。
これでパネルが追加されました。画面上部の保存アイコンをクリックすることで、ダッシュボードとして保存できます。
Add visualization 以降の手順を繰り返して複数のパネルを追加することで、このようなダッシュボードを作成できました ! (テーマカラーはブラウザの設定が反映されます)
筆者プロフィール

森田和明
富士ソフト株式会社
エリア事業本部 西日本支社 第2システム部 第5技術グループ
業務系 Web システム開発やモバイルアプリ開発の経験を経て、2015 年頃から AWS 案件に従事。
サーバーレスのメリットを活かした様々な IoT 案件に携わった後、現在は生成 AI にも活動の幅を広げ、お客様を広くご支援しています。
AWS Ambassador (2023 ~)、Japan AWS Top Engineer (2020 ~)、Japan AWS All Certifications Engineer (2024) 認定
著書「Amazon Bedrock 生成AIアプリ開発入門」(SBクリエイティブ刊)
AWS を無料でお試しいただけます