はじめに
こんにちは。富士ソフト株式会社の森田 和明です。
普段は IoT クラウド基盤アーキテクトとして、お客様の IoT サービスを実現する AWS アーキテクチャの検討、提案、構築を行っています。最近は生成 AI にも活動の幅を広げ、お客様を広くご支援しています。
製造現場では「データはあるが活用できていない」「設備トラブルの予兆を捉えられない」「エネルギー消費の無駄を特定できない」といった課題を多く耳にします。これらの解決には、データ収集から分析・活用までの一貫したプラットフォームが必要です。
AWS IoT SiteWise は、こうした課題に対する強力なソリューションを提供します。エッジでのデータ収集からクラウドでの保存・分析まで、フルマネージドで実現できるため、システム構築の負担を大幅に軽減できます。
本記事では、AWS IoT SiteWise を中心に、工場 IoT の実装から生成 AI を活用したデータ分析までの具体的な手順を解説します。技術的な専門知識がなくても導入できるよう、設定手順を詳細に説明していますので、製造業の DX 担当者様はぜひご活用ください。
ご注意
本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。
builders.flash メールメンバー登録
builders.flash メールメンバー登録で、毎月の最新アップデート情報とともに、AWS を無料でお試しいただけるクレジットコードを受け取ることができます。
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 を構築。
2. AWS IoT SiteWise Edge をインストールしてみよう
2-1. Raspberry Pi を準備
ゲートウェイデバイスとして、今回は Raspberry Pi 4 を使用しました。
- Raspberry Pi 4 (メモリ 8GB)
- microSD カード (16GB のものを使用)
OS は Raspberry Pi の公式サイト で公開されている「Raspberry Pi Imager」を使って microSD カードにインストールします。

「Ubuntu Desktop 24.04.2 LTS (64-bit)」を選択
OS は、「Ubuntu Desktop 24.04.2 LTS (64-bit)」を選択します。Raspberry Pi OS を選択すると、後述の手順ではインストールできませんのでご注意ください。

Ubuntu の初期設定
OS のインストールが完了したら、モニター、マウス、キーボードを接続し、Ubuntu の初期設定を行います。
2-2. SiteWise Edge を作成
それでは、SiteWise Edge を作成しましょう。マネジメントコンソールを使用して行います。
マネジメントコンソールで「AWS IoT SiteWise」の管理画面を開きます。
メニューの「Edge ゲートウェイ」を選択します。

ゲートウェイを作成
「ゲートウェイを作成」をクリックします。

デプロイターゲットとゲートウェイの設定
デプロイターゲットとゲートウェイの設定を以下の通り設定します。
- デプロイターゲットを選択 : セルフホストゲートウェイ
- セルフホストゲートウェイのオプション : MQTT 対応、V3
- ゲートウェイ名 : 自動で入力された値
- Greengrass デバイス OS : Linux - ARMv8 (AArch64)

ゲートウェイを作成
入力後、「ゲートウェイを作成」をクリックします。

SiteWise Edgeゲートウェイインストーラーを生成
SiteWise Edgeゲートウェイインストーラーを生成ダイアログが表示されますので、「生成してダウンロード」をクリックします。

SiteWise Edge 作成完了
私の環境では「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 をインストール
まずは、インストールに必要な curl をインストールします。
sudo apt install -y curl
インストーラーを実行
その後、インストーラーを実行します。
chmod +x ./Gateway-G6OzkFxPV.deploy.sh
sudo ./Gateway-G6OzkFxPV.deploy.sh
インストールを開始
SiteWise Edge の動作に必要なライブラリーをチェックし、不足しているものは自動でインストールされます。Open JDK 11 と Docker が不足しているようです。「Y」で返答するとインストールが開始されます。

インストール完了
インストールはこれだけで完了です。
しばらくすると、マネジメントコンソール上のオンラインステータスが「オンライン」に、パブリッシャーの設定ステータスが「同期中」に更新されます。

AWS クラウドとの接続完了
これで SiteWise Edge のインストールと、AWS クラウドとの接続まで完了しました。
3. SiteWise Edge でデータ収集してみよう
では、SiteWise Edge でデータを収集してクラウドに送信したいと思います。
OPC-UA のシミュレーターアーキテクチャ図
しかしここで重大なことに気が付きました。自宅で検証を進めているため、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 シミュレーターの概要ファイル作成
OPC-UA シミュレーターの概要を、「task.md」というファイル名で作成しました。
AWS IoT SiteWiseのテスト環境を作成します。SiteWise Edgeの動作確認をするために、OPC-UAサーバーのシミュレーターが必要になりました。
# 条件
- Python3.12環境で動作する
- 5秒間隔でデータ取得する想定
- 値は毎秒少しずつ変化する
- センサーの種類や数はお任せします。製造工場をイメージしてほしいです。
- 設備の数は1つで十分です。
- 1時間に1回程度(ランダム)で、機器の故障を想定した動作をする。
# 成果物
- Pythonプログラム
AWS IoT SiteWiseのテスト環境を作成
そして、Amazon Q Developer に以下のように指示をします。(「/dev」がエージェント機能として動作させるコマンドです。)
/dev task.mdの内容を確認して実行してください

OPC-UA シミュレーター作成完了
すると、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 シミュレーターを起動
OPC-UA シミュレーターを起動します。
python opcua_simulator.py
起動成功 !
ログが出力され、どうやらうまく起動できたようです。
次の手順では、クラウド側の設定を行います。

3-3. SiteWise Edge のデータ収集設定
OPC-UA シミュレーターからデータを収集するように、SiteWise Edge を設定します。SiteWise Edge の設定はマネジメントコンソールで行います。
Edge ゲートウェイの設定画面のデータソースセクションにある「データソースを追加」をクリックします。

設定項目を入力
以下の設定項目を入力します。ローカルエンドポイントは、シミュレーターの README に記載がありました !
- ソース名: opc-ua-server
- ローカルエンドポイント: opc.tcp://0.0.0.0:4840/freeopcua/server/

「同期中」ステータス
設定ステータスが「同期中」に変わるまで待ちます。私の場合は 5 分程で変わりました。

設定完了 !
これで設定は完了です。
ここまでの手順がうまくできていれば、OPC-UA シミュレーターのデータはクラウドに届いています。マネジメントコンソールの「データストリーム」メニューを開くとデータが届いているかどうか確認できます。
「アセットプロパティ名」や「アセット名」が空欄で表示されます。これは、 クラウドにデータは届いているが、SiteWiseの管理対象ではない状態です。管理対象とするため、アセットモデルとアセットを作成します。

3-4. アセットモデルとアセットを作成
まずはアセットモデルを作成します。アセットモデルは簡単に言うと、アセット (資産) の定義です。(プログラムが分かる人向けに表現すると、アセットモデルがクラスでアセットがインスタンスのような関係です。) アセットとアセットモデルを使うことで、大量の設備の情報を体系的に管理し、効率的なアセット運用管理が可能になるなどのメリットがあります。
アセットモデルは以下の手順で作成します。
メニューの「モデル」を選択します。「アセットモデルを作成」をクリックします。

モデルの詳細
モデルの詳細の名前に「ManufacturingEquipment」 と入力します。

「測定」→ 「新しい測定値を追加」
定義セクションの「測定」を選択し、「新しい測定値を追加」をクリックします。

測定値を定義
アセットモデルの測定値を定義します。今回はシミュレーターが送信する値に合わせて定義します。


モデルの作成
入力後、画面下部の「モデルの作成」をクリックします。

アセットの作成
続いて、アセットを作成します。
メニューの「アセット」を選択します。「アセットの作成」をクリックします。

モデルと名前入力
以下の内容を入力します。
- モデル : 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」の管理画面を開きます。
「ワークスペースを作成」をクリックします。

ワークスペース名
ワークスペース名に「grafana-workspace」と入力し「次へ」をクリックします。

ユーザー認証方式を指定
Amazon Managed Grafana を使用するユーザーをどの方式で認証するか指定します。今回は IAM Identity Center を使用するので「AWS IAM ID センター (AWS SSO の後継)」にチェックを入れます。

設定は変更せず、「次へ」
他の設定は変更せず、画面最下部の「次へ」をクリックします。

IAM ロール権限付与の設定
ここでは Amazon Managed Grafana にアタッチされる IAM ロールに対する権限付与の設定を行います。データソースの一覧から「AWS IoT SiteWise」にチェックを入れ、「次へ」をクリックします。

Amazon Managed Grafana ワークスペース作成完了
確認画面が表示されるので画面最下部の「ワークスペースを作成」をクリックします。
これでAmazon Managed Grafanaのワークスペースが作成されました。

4-2. Amazon Managed Grafana へサインインするユーザーを追加
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 の画面
Amazon Managed Grafana の画面が表示されます。

AWS Data Sources
AWS IoT SiteWise プラグインを追加します。
メニューの「AWS Data Sources」をクリックします。

インストール
IoT SiteWiseの横の「Install now」をクリックします。

Install 2.2.0
右上の「Install 2.2.0」をクリックします。

Add new data source
インストールが完了したら、「Add new data source」をクリックします。

Save & test
この画面では特に設定を変更する必要はありません。画面最下部の「Save & test」をクリックします。
これで、Amazon Managed Grafana でAWS IoT SiteWise のデータを使用できるようになりました。

4-5. グラフを作成
それではグラフを作ってみましょう。
メニューの「Dashboards」をクリックして遷移した画面の「Create Dashboard」をクリックします。

Add visualization
「Add visualization」をクリックします。

「grafana-iot-sitewise-datasource」
「grafana-iot-sitewise-datasource」をクリックします。

値を設定
以下の値を設定します。
- 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クリエイティブ刊)
