Writer:佐久森
IoT Hubとは?Azureサービス群での位置づけや特徴から実際の使い方までを紹介します
Azureが提供するIoT向けサービス群は、それぞれのサービスを組み合わせることで、デバイスの接続、データの処理・格納・分析、データの可視化・実行までのソリューションを構築できます。今回は、サービス群の中でも、デバイスとクラウドを接続する「IoT Hub」について、その概要や特徴、実際の使い方を紹介します。
ネクストステップにおすすめ
IoT HubのAzureサービス群での位置づけ
AzureのIoT向けPaaSでは多くのサービスが提供されているため、IoT Hubがどのような役割を果たすのかがわかりにくいという方も多いのではないでしょうか。そこで、全体像がイメージしやすいように、利用頻度が高いと考えられるサービスを抽出し、一つの例として以下のようにカテゴライズしました。
- デバイス収集・連携:IoT Hub/Data Factory
- データの蓄積:SQL Database/Blob Storage/Cosmos DB/SQL Data Warehouse
- データの処理・分析:Stream Analytics/Databricks/HDInsight
- 機械学習モデル、開発・管理:Cognitive Services/Custom Vision/Machine Learning Studio/DevOps
- データ可視化・実行:Power BI/Power Apps/Dynamics 365/IoT Central
Microsoft Azure の IoT 向け PaaS (一例)
今回紹介するIoT Hubは、IoTデバイスのデータをクラウドサービスに収集するための「デバイスの接続・管理」を実現するサービスです。
IoT Hubの特徴
IoT Hubでは、現場(フィールド)で使用するIoTデバイスの登録・認証・管理を行います。
例えば、センサーやゲートウェイなど、現場(フィールド)で活用されるデバイスと、Azureが提供するデータ分析サービスなどを仲介(接続)するイメージです。簡単に表現すると、IoTデバイスとクラウドをつなぐものです。
それでは、IoT Hubの特徴を見ていきましょう。
数百万台ものIoTデバイスと双方向通信を確立
IoT Hubは、現場(フィールド)で利用される数百万ものIoTデバイスとAzureの双方向通信を確立します。 IoT Hubに登録された各IoTデバイスは、データ処理に使うクラウドサービスなどとの双方向通信が可能になるのです。デバイスからのファイルのアップロード、クラウドからデバイスを制御するための要求/応答メソッドなど、複数のメッセージングパターンをサポートします。
例えば、製造ラインで使用するIoTデバイスをIoT Hubに登録すれば、IoTデバイスが収集するデータをクラウド上にあるデータ処理用のサービスへつなぎます。また、処理されたデータをデバイス側で必要とする場合は、再びIoT Hubを通じてIoTデバイスへ送信できるように仲介するのです。
IoTデバイスを個々に認証
IoT Hubを使う際には、登録されたIoTデバイス一つひとつに対して、「共有アクセスキー」を生成します。
具体的には、IoTデバイスや接続モジュール(IoTデバイスに搭載されるプログラム)に関する情報が保存される「IDレジストリ」というものがあり、このIDレジストリに保存されている資格情報に基づいた認証が行われます。
このIDレジストリの資格情報に紐づけされた共有アクセスキーをIoTデバイスの接続モジュールに登録することで、個々のIoTデバイスを識別して管理します。
現場(フィールド)側でAzureのPaaSサービスを動作させるIoT Edge
IoTデバイスなどをIoT Hubと接続するためには、接続モジュール(プログラム)が必要となります。
この接続モジュールの開発には現在、「Azure IoT SDK」を利用する方法と「Azure IoT Edge」を利用する方法の2つの手段があります。以前は「Azure IoT SDK」のみでしたが、エッジコンピューティング向けに新たに「Azure IoT Edge」が提供されました。
Azure IoT Edgeは、IoTデバイスやIoTゲートウェイ(現場(フィールド)側)に搭載するモジュールを開発するためのフレームワークです。これにより、クラウド側でしか動作しなかったAIやデータ分析サービスが、現場(フィールド)側でも実行できるようになりました。
Azure IoT Edgeによって改善したことは、フィードバックの速さです。
これまでは、IoTデバイスが収集するすべてのデータをクラウド側へ送って処理していたため、ネットワーク環境によって応答に時間がかかっていました。しかし、現場(フィールド)側で処理ができるようになったことで、低遅延での異常検知や即時フィードバック制御が可能になったのです。
さまざまなプログラミング言語に対応
Microsoftでは、IoT Hubに対応したデバイスを増やせるように、モジュール開発に必要なAzure IoT SDKをGitHubでオープンソースとして発行しています。
以下は対応しているプログラミング言語の一例です。
- C SDK
- Python SDK
- .NET SDK
- Node.js SDK
- Java SDK
また、それぞれのSDKは、以下のようなOS(一部抜粋)に対応しています。
- Windows
- Linux
- macOS
- iOS
- Arduino
- Mbed
IoT Hubの使い方
それでは、IoT Hubの具体的な使い方を見ていきましょう。
まずは、IoT HubをAzure上で作成します。
- 「新規」→「モノのインターネット(IoT)」→「IoT Hub」をクリック
- IoT Hub画面にて「名前」・「リソースグループ」・「場所」を入力
次に、管理画面にて「デバイス登録」と「共有アクセスキーの発行」を行います。 - 「デバイス エクスプローラー」→「追加」の順にクリックして、IoT Hubに接続を許可するデバイスを登録
- 「共有アクセスポリシー」の「共有アクセスキー」にて、IoT Hubを外部から操作するためのキーを発行
まとめ
IoT Hubは、Azureが提供するIoT向けサービス群の1つです。IoTデバイスやIoTゲートウェイなど、現場(フィールド)で使用するデバイスと、クラウド(Azure)とを接続します。また、IoT Hub上で各デバイスの登録、認証、管理を行い、IoTデバイスとクラウドでの双方向通信を確立します。接続できるデバイスは数百万台で、それぞれのデバイスをIDと資格情報で個別に管理できるため、データの機密保持やデバイスごとのアクセス権限設定など、高いセキュリティのIoTシステムが構築できます。
Azure IoT HubはAzureを活用したIoTシステム構築でよく使われるサービスですので、理解を深めておきましょう。
なお、オープンソースライブラリで提供されているSDKの「Azure IoT Edge」を利用すれば、現場(フィールド)側にあるIoTデバイス用のモジュールを開発できるため、エッジコンピューティングも実現できます。