リアルタイムの IoT 更新

Azure Functions
Azure IoT Edge
Azure IoT Hub
Azure Maps
Azure SignalR Service

このガイドでは、Web ページやモバイル アプリのようなクライアントがデバイスから更新をリアルタイムで受信する方法の概要を説明します。 クラウド アプリは、最新の情報に関する HTTP 要求を送信しなくなりました。 代わりに、コンテンツが利用可能になるとすぐに、Azure SignalR Service がクライアントにコンテンツをプッシュします。 Azure SignalR Service は、マネージド サービスとして、リアルタイム通信をアプリに追加するプロセスを簡略化します。

アーキテクチャ

Web ページやモバイル アプリなどのクライアントを Azure SignalR Service がリアルタイムの IoT データで更新する方法を示すアーキテクチャ図。

この図には、いくつかのボックスが含まれています。 右下隅のボックスは、灰色の矢印がデータ フローを表し、青い矢印が制御フローを表します。 左側には、2 つのボックスにデバイスのラベルが付けられています。 灰色の矢印は、上部のデバイス ボックスから Azure IoT Hub のボックスをポイントします。 もう 1 つの灰色の矢印は、上部のデバイス ボックスから Azure IoT Edge のボックスをポイントします。 Azure IoT Edge のボックスの上には、フィールド ゲートウェイのラベルが付けられています。 3 番目の灰色の矢印は、Azure IoT Edge から Azure IoT Hub のボックスをポイントします。 4 番目の灰色の矢印は、Azure IoT Hub から Azure Functions のボックスをポイントします。 5 番目の灰色の矢印は、Functions のボックスから Azure SignalR Service のボックスをポイントします。 右側には、Web アプリとモバイル アプリのアイコンとラベルを含む大きなボックスがあります。 大きなボックスの上には、プレゼンテーションと相互作用を示すラベルがあります。 灰色の矢印は、Azure SignalR Service からこの大きなボックスをポイントします。 双方向の青い矢印は、大きなボックスを Azure SignalR Service のボックスと結び付けます。 もう 1 つの双方向の青い矢印は、大きなボックスを Functions のボックスと結び付けます。 図の数値は、ドキュメント内の番号付きステップに対応しています。

このアーキテクチャの Visio ファイルをダウンロードします。

ワークフロー

  1. Web ページ、モバイル アプリ、その他のクライアントは、Azure SignalR Service エンドポイントとトークンを、サーバーレス コンピューティング プラットフォームである Azure Functions から要求します。 Functions では、さまざまなソースからのデータの統合に加え、クライアント グループの Azure SignalR Service エンドポイントと情報の管理も行います。

  2. クライアントはエンドポイントとトークンを使用して、Azure SignalR Service に接続します。

  3. IoT デバイスは、Azure IoT Edge と Azure IoT Hub にテレメトリを送信します。 Azure IoT Edge は処理された IoT デバイス テレメトリを Azure IoT Hub に送信します。

  4. テレメトリは、Azure Functions で関数をトリガーします。 関数は、次のタスクを完了します。

    • プログラムした計算をテレメトリで実行します。
    • プログラムする任意の方法でデータを変換します。
    • マネージド サービス Azure SignalR Service を使用して、データをブロードキャストします。
  5. Azure SignalR Service では、優先トランスポート プロトコルである WebSocket など、リアルタイム アプリケーションで使用されるいくつかの手法がサポートされます。 ただし、Azure SignalR Service は、WebSocket が使用できないときに、サーバー送信イベント (SSE) や長いポーリングなどの手法を使用します。 Azure SignalR Service は、サーバーとクライアントでサポートされる機能に基づいて、適切なトランスポート プロトコルを自動的に検出し、初期化します。

  6. Azure SignalR Service メッセージは、特定のクライアントまたはクライアント のグループに送信されます。 クライアントはデータを使用してアプリを更新します。

シナリオの詳細

モノのインターネット (IoT) アプリケーションには、多くの場合、IoT デバイスからのリアルタイム データが必要です。 たとえば、一部のアプリでは、デバイスから取得したテレメトリまたはアラート データが表示されます。 従来のポーリング方法では、これらのクライアント アプリは、デバイスに状態の変更を要求します。

このガイドでは、Web ページやモバイル アプリのようなクライアントがデバイスから更新をリアルタイムで受信する方法の概要を説明します。 クラウド アプリは、最新の情報に関する HTTP 要求を送信しなくなりました。 代わりに、コンテンツが利用可能になるとすぐに、Azure SignalR Service がクライアントにコンテンツをプッシュします。 Azure SignalR Service は、マネージド サービスとして、リアルタイム通信をアプリに追加するプロセスを簡略化します。

たとえば、小売業者は、店舗内の現在の顧客数を表示するダッシュボード アプリを持っている場合があります。 このガイドのソリューションでは、アプリでは最新の顧客数は要求されません。 代わりに、合計数が変更された場合に、Azure SignalR Service がその情報をアプリにフィードします。

考えられるユース ケース

小売業界に加え、次のようなその他の領域もこのソリューションの恩恵を受ける可能性があります。

  • サーバーが視覚化とアプリケーションで使用するためにリアルタイム データをクライアントにプッシュするシナリオ。
  • カスタマイズされたユーザー インターフェイスやマップなど、高機能で高度に対話型のアプリ。

リアルタイム データ更新を提供する具体的な例を次に示します。

  • 車両の場所 (自動車) をマップするフリート監視。
  • 製造プロセスの温度、圧力、状態のリモート監視 (エネルギー業界にも適用されます)。
  • 1 分あたりの回転数、トルク、フック負荷のようなテレメトリを使用してプロセスを最適化するドリル コントロール システム。
  • アラート メカニズム。

考慮事項

このパターンを使用する場合は、次の点を考慮してください。

  • システムに厳密な待機時間要件がある場合は、待機時間が大幅に増加する可能性がある要因に注意してください。

    • リアルタイムのシナリオでは、クラウド アプリケーションのシグナル伝達によって、待機時間が最大 10 秒増加する可能性があります。
    • ソリューションに追加するデータ変換手順があると、待機時間が長くなる可能性があります。
  • Azure SignalR Service では、さまざまなパフォーマンス容量に対応する 7 つの階層を定義します。 これらの値に影響を与える要因を理解して、シナリオの受信と送信の容量を決定します。 次に、要件に最適な階層を選択します。 詳細については、「Azure SignalR Service のパフォーマンス ガイド」を参照してください。

  • Azure SignalR は SignalR プロトコルに基づいて構築され、クライアントにメッセージをブロードキャストするときに発行-サブスクライブ パターンに従います。 複数のクライアントにメッセージを発行するときにメッセージ配信を保証する必要がある場合は、独自のメッセージ受信確認 (ACK) メカニズムを使用することを検討してください。

  • Power BI ビジュアルにリアルタイム データを表示する場合は、このソリューションの代替手段として、Power BI でのリアルタイム ストリーミングを検討してください。

次のステップ

関連するソリューションの詳細については、次の情報を参照してください。

IoT アーキテクチャのガイド

IoT パターン

IoT アーキテクチャ