Cloud Service
Azure IoT Edge
クラウドのワークロードをコンテナー化したモジュールとしてエッジ機器へ配信し、現場でデータ処理や推論をローカル実行する仕組み。AWS IoT Greengrass に相当する。
- 1.クラウドで作ったロジックや AI 推論をモジュールとしてエッジ機器に展開し、現場で実行する。
- 2.オフラインでも動作し、必要なデータだけをクラウドへ送って帯域とレイテンシを抑える。
- 3.AWS の IoT Greengrass に相当し、IoT Hub と組み合わせて遠隔から一括管理する。
解決する課題
工場・店舗・車両などの現場では、すべてのデータをクラウドへ送ってから処理する方式が必ずしも適しません。Azure IoT Edge は、クラウドで開発したロジックをエッジ機器側へ持ち込んで実行することで、こうした制約を解消します。
- ネットワークが不安定・断続的でも、ローカルで処理を継続したい(オフライン耐性)
- センサーの大量データを全部送らず、現場で前処理・集計・フィルタリングして帯域コストを下げたい
- 制御や検知の判断を低レイテンシで行いたい(クラウド往復を待てない)
- カメラ映像などを外に出さず、機密データを現場内で処理したい(データ主権・コンプライアンス)
- 多数の機器へ配るロジックを、クラウドから一元的に配信・更新したい
主要概念と用語
- IoT Edge デバイス: エッジで IoT Edge ランタイムを動かす機器。ゲートウェイや産業用 PC、サーバーなどが該当する
- IoT Edge ランタイム: デバイス上でモジュールの起動・通信・監視・クラウド連携を担う基盤。エッジエージェント(デプロイ管理)とエッジハブ(メッセージ仲介・接続)の2つのシステムモジュールから成る
- モジュール: ビジネスロジックや推論を入れた Docker 互換のコンテナー。これがデプロイ・実行の単位
- モジュールツイン / デバイスツイン: モジュールやデバイスの状態と構成を表す JSON ドキュメント。クラウドから望ましい状態を指定し、現場の報告状態を受け取る
- デプロイメントマニフェスト: どのモジュールをどう動かし、どうメッセージを流すかを定義する JSON。これをクラウドから機器へ配る
- ルート(ルーティング): エッジハブ内でモジュール間およびクラウドとのメッセージ経路を宣言的に定義する仕組み
- IoT Hub: クラウド側の管理ハブ。デバイス登録、構成配信、テレメトリ受信、双方向通信の中心となる
- エッジゲートウェイ: IoT Hub へ直接つながらない下位デバイスを束ねて中継するパターン(透過・プロトコル変換・ID 変換)
IoT Edge のモジュールは標準的な Docker 互換コンテナーです。自作アプリ、Azure Functions、Stream Analytics on Edge、カスタムビジョンや機械学習モデルなどを同じ枠組みでパッケージし、コンテナーレジストリ(Azure Container Registry など)経由で配布できます。
仕様・制限・クォータ
- コンテナーエンジンが前提: デバイスには Moby / Docker 互換のエンジンが必要。Linux と Windows の両方に対応するが、組み合わせや要件はプラットフォームで異なる
- 管理は IoT Hub 経由: デプロイ・監視・構成は IoT Hub のレイヤー(Standard 相当のレイヤーが必要)を通じて行う
- オフライン動作: 接続が切れてもモジュールは動き続け、ローカルでメッセージをキューイングして再接続時に同期する。ローカルに保持できるメッセージ量や保存期間には設定可能な上限がある
- メッセージサイズ・スループット: クラウド連携の制約は IoT Hub 側の上限(メッセージサイズやスロットリング)に従う
- モジュール数: 1 デバイスに複数モジュールを配置できるが、実機の CPU・メモリ・ストレージといったハードウェア資源が実質的な上限になる
- 具体的な数値上限・対応 OS バージョン・課金体系は更新されるため、最新は公式ドキュメントで確認すること
内部の仕組み
IoT Edge デバイス上では、まず2つのシステムモジュールが動きます。エッジエージェントは IoT Hub からデプロイメントマニフェストを受け取り、指定どおりにモジュール(コンテナー)を取得・起動・再起動し、状態を報告します。エッジハブはローカルのメッセージブローカーとして働き、モジュール間およびクラウドとのメッセージを仲介します。下位デバイスからの接続をエッジハブが肩代わりすることで、IoT Hub へのコネクション数も集約できます。
メッセージの流れはルートで宣言的に定義します。たとえば「センサーモジュールの出力を推論モジュールへ渡し、その結果のうち異常だけをクラウドへ送る」といった経路を、コードではなく構成として記述します。これによりモジュールを差し替えてもパイプラインを保ったまま組み替えられます。
デプロイは望ましい状態(desired state)モデルです。クラウド側でモジュールツイン/デプロイメントマニフェストに目標構成を書くと、エッジエージェントがそれに収束するよう実機を調整します。接続が切れている間はローカルで処理とキューイングを続け、再接続時に**報告状態(reported state)**とテレメトリを同期します。これがオフライン耐性の中核です。
IoT Hub へ直接つなげない古い機器やフィールドバス機器は、IoT Edge をゲートウェイにして中継できます。透過ゲートウェイ(そのまま通す)、プロトコル変換(OPC UA や Modbus を変換)、ID 変換(下位機器に代わって認証)の3パターンがあり、現場の構成に合わせて選びます。
設計パターン / ベストプラクティス
- エッジで絞ってクラウドへ送る: 生データを全部送らず、現場で集計・異常検知・サンプリングしてから送信し、帯域とクラウド処理コストを削減する
- 推論はエッジ、学習はクラウド: モデルの学習・再学習はクラウドで行い、できあがったモデルをモジュールとして配信して推論だけ現場で実行する
- モジュールは疎結合に: 役割ごとにモジュールを分け、ルートでつなぐ。差し替え・段階更新がしやすくなる
- 段階的ロールアウト: タグやデバイスツインで対象をグルーピングし、新しいデプロイをまず一部の機器へ当ててから全体へ広げる
- 冪等・再送前提: オフライン後の再送で重複が起こり得るため、下流処理は冪等に設計する
- 資源を見積もる: 実機の CPU・メモリ・ストレージは限られる。モジュール数とコンテナーサイズを現実的に抑える
運用・監視
- クラウドからの一元管理: IoT Hub のデプロイメント機能で、対象デバイス群へモジュール構成を一括適用・更新する
- メトリクスとログ: 各モジュールはメトリクスを公開でき、Azure Monitor や Log Analytics に取り込んで稼働状況・メッセージ流量・エラーを可視化する
- モジュールログの取得: クラウド側からダイレクトメソッドでモジュールのログ取得や再起動を遠隔指示できる
- 接続状態の把握: デバイスツインの報告状態で各機器のオンライン・オフラインやモジュールの健全性を追跡する
- OS とランタイムの更新運用: エッジ機器の OS パッチ、コンテナーエンジン、IoT Edge ランタイムの更新計画をあらかじめ用意する
コスト
IoT Edge のランタイム自体は無償で利用できます。費用は主に、機器を管理する IoT Hub のレイヤー課金(メッセージ数・機能レベル)、モジュールイメージを置く コンテナーレジストリ、エッジ機器そのもののハードウェア・運用費から生じます。エッジで前処理して送信量を減らすほど、クラウド側のメッセージ課金や下流の処理コストを抑えられます。
| コスト要素 | 課金の考え方 | 補足 |
|---|---|---|
| IoT Edge ランタイム | 無償 | デバイスへ導入して使うソフトウェア自体に料金は発生しない |
| IoT Hub | レイヤー(機能レベル)と処理メッセージ数で課金 | 管理・通信の中心。送るメッセージを減らすと効く |
| コンテナーレジストリ | 保存容量とプル数の体系で課金 | モジュールイメージの配布元として利用 |
| エッジ機器 | ハードウェア購入・運用費 | クラウド料金とは別。現場側の設備コスト |
セキュリティ
- デバイス ID と認証: 各デバイスは IoT Hub に登録した ID で認証する。証明書ベースの認証や、TPM / HSM などのハードウェアセキュリティモジュールに鍵を保護できる
- プロビジョニング: 多数の機器を安全に登録するため **Device Provisioning Service(DPS)**を使い、ゼロタッチで配備する
- モジュールの信頼性: 信頼できるレジストリからのイメージのみを使い、コンテンツの完全性を担保する
- 最小権限の通信: エッジハブを介して通信を集約し、下位機器を直接クラウドへ露出させない
- データのローカル処理: 機密映像や個人データを現場内で処理・匿名化してから送ることで、外部流出リスクを減らせる
エッジ機器を初期パスワードや共通鍵のまま大量配備するのは危険です。1台が侵害されると横展開されかねません。機器ごとに固有の ID と証明書を割り当て、可能なら TPM/HSM で鍵を保護し、DPS で安全に登録してください。
Well-Architected の観点
- オペレーショナルエクセレンス: デプロイメントマニフェストとデバイスツインによる宣言的な望ましい状態管理で、多数の機器を再現性高く構成・更新できる。CI/CD でモジュールイメージをビルドし、段階的にロールアウトする運用が組める
- パフォーマンス効率: 推論や前処理を現場で実行することでクラウド往復のレイテンシを排除し、ネットワーク帯域の消費を抑える。エッジで絞り込むことでクラウド側の負荷もスケールしやすくなる
- 信頼性の面でもオフライン動作とローカルキューイングが効くが、本サービスの主眼は上記2本柱にある
試験で問われるポイント
- IoT Edge はクラウドのワークロードをコンテナー化したモジュールとしてエッジで実行する仕組み、という基本定義
- ランタイムは**エッジエージェント(デプロイ管理)とエッジハブ(メッセージ仲介・接続集約)**の2システムモジュールで構成される
- オフラインでも動作し、再接続時に同期するため断続的なネットワークに強い
- 管理は IoT Hub を通じて行い、デプロイメントマニフェストで構成を配信する
- モジュールは Docker 互換コンテナーで、Azure Functions や Stream Analytics、ML モデルも載せられる
- 下位機器を束ねるゲートウェイ(透過・プロトコル変換・ID 変換)として使える
- AWS の相当サービスは AWS IoT Greengrass
関連サービス・比較
クラウド側で機器を管理する Azure IoT Hub とセットで使うのが基本です。役割としては、現場で実行する IoT Edge が AWS の IoT Greengrass に相当し、クラウド側の機器管理ハブである IoT Hub が AWS の IoT Core に相当します。ここではエッジ実行基盤どうしの対応として、IoT Greengrass と比較します。
| 観点 | Azure IoT Edge | AWS IoT Greengrass |
|---|---|---|
| 役割 | エッジ機器でモジュール・推論を実行 | エッジ機器でコンポーネント・推論を実行 |
| 実行単位 | Docker 互換のモジュール(コンテナー) | コンポーネント(コンテナーやプロセス) |
| クラウド管理ハブ | Azure IoT Hub | AWS IoT Core |
| デプロイ方式 | デプロイメントマニフェストで望ましい状態を配信 | デプロイ定義でコンポーネントを配信 |
| オフライン動作 | 対応(ローカルキューイングと同期) | 対応(ローカル実行と同期) |
| エッジでの推論 | ML モデルや認知サービスをモジュール化 | ML 推論コンポーネントを実行 |
| ゲートウェイ | 下位機器の透過・プロトコル変換・ID 変換 | 下位機器の接続・プロトコル変換 |
IoT Edge はあくまでエッジ実行基盤です。デバイス登録・構成配信・テレメトリ受信といったクラウド側の管理は IoT Hub が担い、大量機器の安全な配備は Device Provisioning Service が担います。設計時はこの3点をセットで考えてください。
ハンズオン / CLI例
# IoT 拡張機能を追加(未導入なら)
az extension add --name azure-iot
# リソースグループと IoT Hub を作成
az group create --name demo-rg --location japaneast
az iot hub create \
--resource-group demo-rg \
--name demo-iothub \
--sku S1
# IoT Edge デバイスを登録(--edge-enabled が重要)
az iot hub device-identity create \
--hub-name demo-iothub \
--device-id edge-device-01 \
--edge-enabled
# デバイスの接続文字列を取得(実機のランタイム設定に使う)
az iot hub device-identity connection-string show \
--hub-name demo-iothub \
--device-id edge-device-01 \
--output tsv
# デプロイメントマニフェスト(モジュール構成 JSON)を適用
az iot edge set-modules \
--hub-name demo-iothub \
--device-id edge-device-01 \
--content ./deployment.json
# デバイスに割り当てられたモジュール一覧を確認
az iot hub module-identity list \
--hub-name demo-iothub \
--device-id edge-device-01 \
--output table
Azure Service
Azure IoT Edgeを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
IoT
比較で見る軸
クラウド: Azure / カテゴリ: IoT / 難易度: intermediate
導入後に効く点
オフラインでも動作し、必要なデータだけをクラウドへ送って帯域とレイテンシを抑える。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Azure
- カテゴリ
- IoT
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- operational / performance
判断チェックリスト
- 自社の用途が「IoT / operational」に近いか確認する。
- 強みである「クラウドで作ったロジックや AI 推論をモジュールとしてエッジ機器に展開し、現場で実行する。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。