IoT Edge のための開発およびテスト環境の準備

適用対象:IoT Edge 1.4 checkmark IoT Edge 1.4

重要

IoT Edge 1.4 がサポートされているリリースです。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。

IoT Edge によって、既存のビジネス ロジックをエッジで稼働するデバイスに移行できます。 IoT Edge モジュールとして実行するためにアプリケーションやワークロードを準備するには、それらをコンテナーとしてビルドする必要があります。 この記事では、IoT Edge ソリューションを正常に作成できるように開発環境を構成する方法について説明します。 開発環境を設定した後、独自の IoT Edge モジュールの開発方法についても学習することができます。

IoT Edge ソリューションには、少なくとも 2 つのマシン (IoT Edge モジュールを実行する IoT Edge デバイスと、モジュールをビルド、テスト、デプロイする開発マシン) が存在します。 この記事では主に、開発用マシンについて説明します。 テスト目的の場合は、これらの 2 台のマシンを同じマシンにすることができます。 開発マシンで IoT Edge デバイスを実行し、モジュールを配置することができます。

オペレーティング システム

IoT Edge は、サポートされているオペレーティング システムの特定のセットで実行されます。 IoT Edge 向けの開発では、コンテナー エンジンを実行できるほとんどのオペレーティング システムを使用できます。 コンテナーとしてモジュールをビルドし、コンテナー レジストリにプッシュするために、コンテナー エンジンが開発用マシンで必要になります。

開発用のマシンで IoT Edge を実行できない場合は、この記事の「テスト ツール」セクションに進み、ローカルでテストおよびデバッグする方法について確認してください。

開発用マシンと IoT Edge デバイスのオペレーティング システムは一致する必要はありません。 ただし、コンテナーのオペレーティング システムは、開発用マシンおよび IoT Edge デバイスと一致している必要があります。 たとえば、Windows マシンでモジュールを開発して、Linux デバイスにそのモジュールを配置することができます。 Windows マシンで、Linux デバイス用のモジュールをビルドするために Linux コンテナーを実行する必要があります。

コンテナー エンジン

IoT Edge の主要概念は、コンテナーにパッケージ化することで、リモートからビジネス ロジックやクラウド ロジックをデバイスに配置できるようにするというものです。 コンテナーをビルドするには、開発用マシンでコンテナー エンジンが必要になります。

運用環境の IoT Edge デバイスでサポートされているコンテナー エンジンは、Moby のみです。 ただし、Docker などの Open Container Initiative と互換性のあるコンテナー エンジンでは、IoT Edge モジュール イメージをビルドできます。

開発ツール

Azure IoT Edge 開発ツールは、IoT Edge モジュールを開発およびテストするためのコマンド ライン ツールです。 新しい IoT Edge シナリオの作成、モジュール イメージのビルド、シミュレーターでのモジュールの実行、および IoT Hub に送信されるメッセージの監視を行えます。 iotedgedev ツールは、IoT Edge モジュールを開発するための推奨ツールです。

Visual Studio と Visual Studio Code の両方に、IoT Edge ソリューションを開発するのに役立つアドオン拡張機能が備えられています。 これらの拡張機能は、新しい IoT Edge シナリオを作成したり、配置したりするのに役立つ言語固有のテンプレートを提供します。 Visual Studio と Visual Studio Code の両方の Azure IoT Edge 拡張機能で、IoT Edge ソリューションのコード作成、ビルド、配置、デバッグを行えます。 複数のモジュールを含む IoT Edge ソリューション全体を作成できます。拡張機能は新しいモジュールを追加するごとに、配置マニフェスト テンプレートを自動的に更新します。 拡張機能を使用すると、Visual Studio または Visual Studio Code 内から IoT デバイスを管理することもできます。 デバイスにモジュールをデプロイしたり、ステータスを監視したり、IoT Hub に到着したメッセージを表示したりできます。 最後に、両方の拡張機能では、IoT EdgeHub 開発ツールを使用して、開発用マシン上でのモジュールのローカルの実行とデバッグを可能にします。

IoT Edge 開発ツール

Azure IoT Edge 開発ツールは、コマンドライン機能で IoT Edge 開発を簡略化します。 このツールは、モジュールの開発、デバッグ、テストを行うための CLI コマンドを提供します。 マシンに依存関係を手動でインストールした場合でも、また事前構築済みの IoT Edge Dev Container を使用してコンテナーで iotedgedev ツールを実行している場合でも、IoT Edge 開発ツールは開発システムで機能します。

詳細については、IoT Edge 開発ツール wiki に関するページを参照してください。

Visual Studio Code 拡張機能

Visual Studio Code 用の Azure IoT Edge 拡張機能では、C、C#、Java、Node.js、Python などのプログラミング言語に基づいてビルドされた IoT Edge モジュール テンプレートを提供します。 C# の Azure 関数のテンプレートも含まれています。

重要

Azure IoT Edge Visual Studio Code 拡張機能はメンテナンス モードです。 iotedgedev ツールは、IoT Edge モジュールを開発するための推奨ツールです。

詳細情報およびダウンロードについては、Azure IoT Edge for Visual Studio Code に関する記事をご覧ください。

IoT Edge 拡張機能に加えて、開発用のその他の拡張機能をインストールするのに役立つ情報もご覧いただけます。 たとえば、Docker Support for Visual Studio Code を使用して、イメージ、コンテナー、レジストリを管理することができます。 さらに、サポートされている主要言語すべてで、モジュールを開発する際に役立つ Visual Studio Code の拡張機能が用意されています。

Azure IoT Hub 拡張機能は、Azure IoT Edge 拡張機能のコンパニオンとして役立ちます。

Visual Studio 2017/2019 拡張機能

Azure IoT Edge Tools for Visual Studio では、C# および C で作成された IoT Edge モジュール テンプレートが提供されます。

重要

Azure IoT Edge Visual Studio 拡張機能はメンテナンス モードです。 iotedgedev ツールは、IoT Edge モジュールを開発するための推奨ツールです。

詳細情報およびダウンロードについては、Azure IoT Edge Tools for Visual Studio 2017 または Azure IoT Edge Tools for Visual Studio 2019 に関する記事をご覧ください。

テスト ツール

IoT Edge デバイスをシミュレートしたり、モジュールをより効率的にデバッグしたりするのに役立ついくつかのテスト ツールが存在します。 次の表に、ツール間の大まかな比較を示します。後続の各セクションでは、各ツールの詳細を説明します。

IoT Edge ランタイムは運用環境への配置のみをサポートしますが、以下のツールを使用すると、開発およびテスト目的で IoT Edge デバイスをシミュレートしたり、簡単に作成したりできます。 これらのツールは、相互に排他的ではなく、完全な開発エクスペリエンスを実現するために連携させることができます。

ツール 別名 サポートされているプラットフォーム 最適な用途
IoT Edge Hub 開発ツール iotedgehubdev Windows、Linux、macOS モジュールをデバッグするためのデバイスのシミュレート。
IoT Edge 開発コンテナー iotedgedev Windows、Linux、macOS 依存関係をインストールせずに開発。

IoT Edge Hub 開発ツール

Azure IoT EdgeHub 開発ツールは、ローカルでの開発およびデバッグ エクスペリエンスを提供します。 このツールにより、IoT Edge ランタイムなしに IoT Edge モジュールを起動することができ、IoT Edge モジュールとソリューションのローカルでの作成、開発、テスト、実行、デバッグを行えます。 テストするために、イメージをコンテナー レジストリにプッシュしたり、それらをデバイスに配置したりする必要はありません。

IoT Edge Hub 開発ツールは、IoT Edge 開発ツールだけでなく、Visual Studio および Visual Studio Code の拡張機能とも連携して動作するように設計されました。 開発ツールでは、内部ループ開発と外部ループ テストをサポートしているため、他の DevOps ツールとも統合されます。

重要

IoT EdgeHub 開発ツールはメンテナンス モードです。 IoT Edge ランタイムがインストールされている Linux 仮想マシン、物理デバイス、または EFLOW の使用を検討してください。

詳細情報とインストールについては、Azure IoT EdgeHub 開発ツールに関するページを参照してください。

IoT Edge 開発コンテナー

Azure IoT Edge 開発コンテナーは、IoT Edge 開発に必要なすべての依存関係が存在する Docker コンテナーです。 このコンテナーにより、C#、Python、Node.js、Java など、開発にどの言語を使用するとしても簡単に開始できます。 インストールする必要があるのは、開発用マシンにコンテナーをプルするための Docker や Moby などのコンテナー エンジンだけです。

詳細については、Azure IoT Edge 開発コンテナーに関するページを参照してください。

DevOps ツール

広範囲に及ぶ運用環境シナリオのために規模の大きいソリューションを開発する準備が整ったら、自動化、監視、合理化されたソフトウェア エンジニアリング プロセスなど、最新の DevOps 原則のメリットを生かすことができます。 IoT Edge には、Azure DevOps、Azure DevOps Projects、Jenkins などの DevOps ツールをサポートする拡張機能が備わっています。 既存のパイプラインをカスタマイズする、または CircleCI、TravisCI などの異なる DevOps ツールを使用する場合は、IoT Edge 開発ツールに含まれる CLI 機能を使用して行います。

詳細情報、ガイドライン、およびサンプルについては、以下のページを参照してください。