Azure IoT デバイスの開発
Azure IoT は、IoT デバイスを接続、監視、制御するマネージド サービスとプラットフォーム サービスのコレクションです。 Azure IoT は、開発者に包括的なオプション セットを提供します。 オプションには、デバイス プラットフォーム、サポート基盤のクラウド サービス、SDK、MQTT サポート、デバイス対応クラウド アプリケーションを構築するためのツールが含まれます。
この記事では、Azure IoT の使用を開始する開発者向けに、いくつかの重要な考慮事項について概要を説明します。
デバイス開発パス
この記事では、2 つの一般的なデバイス開発パスについて説明します。 各パスには、関連する開発オプションとタスクのセットが含まれています。
一般的なデバイス開発: 最新の開発プラクティスに沿って、高位言語を対象に、Windows や Linux などの汎用オペレーティング システム上で行われます。
注意
デバイスで汎用オペレーティング システムを実行できる場合は、一般的なデバイス開発のパスに従うことをお勧めします。 こちらにはより豊富な開発オプションが用意されています。
組み込みデバイス開発: リソースに制約のあるデバイスを対象とした開発のことです。 リソースに制約のあるデバイスは、ユニットごとのコスト、電力消費量、デバイスのサイズなどを削減するためによく使用されます。 これらのデバイスは、それ自体が実行されているハードウェア プラットフォームを直接制御することができます。
一般的なデバイス開発
一部の開発者は、既存の汎用デバイスをクラウドに接続し、IoT ソリューションに統合できるように適合させます。 これらのデバイスは、C# や Python などの高位言語をサポートできるほか、多くの場合、Windows や Linux などの堅牢な汎用オペレーティング システムをサポート可能です。 一般的なターゲット デバイスとしては、PC、コンテナー、Raspberry Pi、モバイル デバイスなどがあります。
汎用デバイス開発者は、制約のあるデバイスを大規模に開発するのではなく、自身のクラウド ソリューションに必要な特定の IoT シナリオを実現することに重点を置いています。 一部の開発者は、自身のクラウド ソリューションに対応した、制約のあるデバイスの開発にも携わっています。 リソースに制約のあるデバイスの開発に携わる開発者の方は、組み込みデバイス開発のパスを参照してください。
重要
汎用デバイス開発で使用する SDK の詳細については、デバイス SDK に関する記事を参照してください。
組み込みデバイス開発
組み込み開発は、メモリと処理が制限されている、制約のあるデバイスを対象としています。 制約のあるデバイスでは、従来の開発プラットフォームと比べて達成できる内容が制限されます。
組み込みデバイスは、通常、リアルタイム オペレーティング システム (RTOS) を使用するものの、オペレーティング システムをまったく使用しないこともあります。 組み込みデバイスは、汎用オペレーティング システムがないため、それ自体のハードウェアを完全に制御できます。 このことから、組み込みデバイスはリアルタイム システムに適した選択肢となります。
最新の組み込み SDK は C 言語を対象としています。 埋め込み SDK では、オペレーティング システムも、Eclipse ThreadX もサポートしていません。 これらは、組み込まれる対象を念頭に設計されています。 設計上の考慮事項には、最小限のフットプリントの必要性とメモリ割り当て以外の設計が含まれます。
重要
組み込みデバイス開発で使用する SDK の詳細については、組み込みデバイス SDK に関する記事を参照してください。
ハードウェアの選択
Azure IoT デバイスは、IoT ソリューションの基本的な構成要素であり、環境の監視および環境との対話を担います。 IoT デバイスにはさまざまな種類があり、既存のデバイスの種類と、それらが開発プロセスに与える影響について理解しておくことが有益です。
この記事で説明されているデバイスの種類ごとの違いについて詳しくは、IoT デバイスの種類に関する記事を参照してください。
SDK の選択
Azure IoT デバイス開発者には、さまざまな SDK、プロトコル、ツールが用意されており、デバイス対応のクラウド アプリケーションを構築する上で役立ちます。
デバイスを接続し、IoT Hub と通信するには、次の 2 つの主なオプションがあります。
- Azure IoT SDK を使用します。 ほとんどの場合、MQTT を直接使用するよりも、Azure IoT SDK を使用することをお勧めします。 これらの SDK を使用すると、開発作業が効率化され、デバイスの接続と管理に伴う複雑さが軽減されます。 IoT Hub は MQTT v3.1.1 プロトコルをサポートし、IoT SDK は MQTT を使用して IoT Hub と通信するプロセスを簡略化します。
- MQTT プロトコルを直接使用します。 MQTT を直接使用する IoT Hub ソリューションを構築することには、いくつかの利点があります。 たとえば、SDK を使用せずに MQTT を直接使用するソリューションは、オープン MQTT 標準に基づいて構築できます。 標準ベースのアプローチにより、ソリューションの移植性が高くなり、デバイスの接続方法と通信方法をより詳細に制御できます。 ただし、IoT Hub はフル機能の MQTT ブローカーではないため、MQTT v3.1.1 標準で指定されているすべての動作をサポートしているわけではありません。 MQTT v3.1.1 のサポートは部分的であるため、開発コストと複雑さが増加します。 デバイス開発者は、IoT デバイス SDK を使用する場合と MQTT を直接使用する場合のトレードオフを比較検討する必要があります。 詳細については、「MQTT プロトコルを使用した IoT Hub との通信」をご覧ください。
デバイス開発用の IoT SDK には、次の 3 つのセットがあります。
- デバイス SDK (高位言語を使用して既存の汎用デバイスを IoT アプリケーションに接続する場合)
- 組み込みデバイス SDK (リソースに制約のあるデバイスを IoT アプリケーションに接続する場合)
- サービス SDK (デバイスをサービスに接続する Azure IoT ソリューションを構築する場合)
Azure IoT デバイスまたはサービス SDK の選択の詳細については、「Azure IoT SDK」を参照してください。
サービスの選択
開発プロセスの重要な手順は、デバイスを接続するサービスを選択することです。 デバイスの接続と管理には、IoT Hub と IoT Central の 2 つの主要な Azure IoT サービス オプションがあります。
- Azure IoT Hub。 IoT Hub を使用して、IoT アプリケーションをホストし、デバイスを接続します。 IoT Hub はサービスとしてのプラットフォーム (PaaS) アプリケーションで、IoT アプリケーションと接続されたデバイス間の双方向通信用の中央メッセージ ハブとして機能します。 IoT Hub は、何百万台ものデバイスをサポートするように拡張できます。 他の Azure IoT サービスと比較して、IoT Hub はアプリケーション設計に対して最も優れた制御とカスタマイズを提供します。 また、開発と管理は若干複雑になりますが、サービスを操作するための開発者ツールのオプションも最大限提供します。
- Azure IoT Central。 IoT Central は、IoT ソリューションを操作するプロセスを簡略化するように設計されています。 これを概念実証として使用して、IoT ソリューションを評価できます。 IoT Central は、サービスとしてのソフトウェア (SaaS) アプリケーションであり、アプリケーションの作成やデバイスの接続と管理のタスクを簡略化する Web UI を提供します。 IoT Central は IoT Hub を使用してアプリケーションを作成および管理しますが、ほとんどの詳細はユーザーには見えないようになっています。
デバイスを接続および管理するためのツール
使用するハードウェアとデバイス SDK を選択した後、開発者ツールのいくつかのオプションがあります。 これらのツールを使用して、デバイスを IoT Hub に接続し、それらを管理できます。 一般的なツールのオプションを次の表にまとめています。
ツール | ドキュメント | 説明 |
---|---|---|
Azure portal | Azure portal を使用して IoT ハブを作成する | IoT Hub とデバイス用のブラウザーベースのポータル。 IoT Central を含む、他の Azure リソースとも連携します。 |
Azure IoT Explorer | Azure IoT Explorer | IoT ハブを作成できません。 既存の IoT ハブに接続してデバイスを管理します。 多くの場合、CLI またはポータルで使用されます。 |
Azure CLI | CLI を使用して IoT ハブを作成する | IoT アプリケーションを作成および管理するためのコマンドライン インターフェイス。 |
Azure PowerShell | PowerShell を使用して IoT ハブを作成する | IoT アプリケーションを作成および管理するための PowerShell インターフェイス |
VS Code 用の Azure IoT Tools | VS Code 用のツールを使用して IoT ハブを作成する | IoT Hub アプリケーションの VS Code 拡張機能。 |
Note
先ほど挙げたツールに加えて、REST API、Azure SDK、または Azure Resource Manager テンプレートを使用して、IoT アプリケーションをプログラムで作成および管理することもできます。 詳細については、IoT Hub サービスのドキュメントを参照してください。
次の手順
デバイスを Azure IoT に接続するために使用できるデバイス SDK の詳細については、次の記事を参照してください。
実践的なデバイス開発を開始するには、使っているデバイスに関連するデバイス開発のチュートリアルを選びます。 次のチュートリアルは、一般的なデバイス開発または埋め込みデバイス開発の出発点として適しています。