IoT Edge のための開発およびテスト環境の準備Prepare your development and test environment for IoT Edge

Azure IoT Edge によって、既存のビジネス ロジックをエッジで稼働するデバイスに移行できます。Azure IoT Edge moves your existing business logic to devices operating at the edge. IoT Edge モジュールとして実行するためにアプリケーションやワークロードを準備するには、それらをコンテナーとしてビルドする必要があります。To prepare your applications and workloads to run as IoT Edge modules, you need to build them as containers. この記事では、IoT Edge ソリューションを正常に作成できるように開発環境を構成する方法について説明します。This article provides guidance around how to configure your development environment so that you can successfully create an IoT Edge solution. 開発環境を設定した後、独自の IoT Edge モジュールの開発方法についても学習することができます。Once you have your development environment set up, then you can learn how to Develop your own IoT Edge modules.

すべての IoT Edge ソリューションでは、少なくとも 2 台のマシンについて考慮する必要があります。In any IoT Edge solution, there are at least two machines to consider. 1 台目は、IoT Edge デバイス自体で、IoT Edge モジュールを実行します。One is the IoT Edge device (or devices) itself, which runs the IoT Edge module. もう 1 台は、モジュールのビルド、テスト、配置に使用する開発用マシンです。The other is the development machine that you use to build, test, and deploy modules. この記事では主に、開発用マシンについて説明します。This article focuses primarily on the development machine. テスト目的の場合は、これらの 2 台のマシンを同じマシンにすることができます。For testing purposes, the two machines can be the same. 開発マシンで IoT Edge デバイスを実行し、モジュールを配置することができます。You can run IoT Edge on your development machine and deploy modules to it.

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

Azure IoT Edge は、特定のサポートされているオペレーティング システムで実行されます。Azure IoT Edge runs on a specific set of supported operating systems. IoT Edge 開発では、コンテナー エンジンを実行できるほとんどのオペレーティング システムを使用できます。For developing for IoT Edge, you can use most operating systems that can run a container engine. コンテナーとしてモジュールをビルドし、コンテナー レジストリにプッシュするために、コンテナー エンジンが開発用マシンで必要になります。The container engine is a requirement on the development machine to build your modules as containers and push them to a container registry.

開発用マシンで Azure IoT Edge を実行できない場合は、ローカルでテストおよびデバッグするのに役立つ、この記事の「テスト ツール」を参照してください。If your development machine can't run Azure IoT Edge, continue in this article to learn about testing tools that help you test and debug locally.

開発用マシンのオペレーティング システムは、IoT Edge デバイスのオペレーティング システムと必ずしも一致している必要はありません。The operating system of your development machine doesn't have to match the operating system of your IoT Edge device. ただし、コンテナーのオペレーティング システムは、開発用マシンと IoT Edge デバイスの間で一致している必要があります。However, the container operating system must be consistent between development machine and IoT Edge device. たとえば、Windows マシンでモジュールを開発して、Linux デバイスにそのモジュールを配置することができます。For example, you can develop modules on a Windows machine and deploy them to a Linux device. Windows マシンで、Linux デバイス用のモジュールをビルドするために Linux コンテナーを実行する必要があります。The Windows machine needs to run Linux containers to build the modules for the Linux device.

コンテナー エンジンContainer engine

IoT Edge の主要概念は、コンテナーにパッケージ化することで、リモートからビジネス ロジックやクラウド ロジックをデバイスに配置できるようにするというものです。The central concept of IoT Edge is that you can remotely deploy your business and cloud logic to devices by packaging it into containers. コンテナーをビルドするには、開発用マシンでコンテナー エンジンが必要になります。To build containers, you need a container engine on your development machine.

運用環境の IoT Edge デバイスでサポートされているコンテナー エンジンは、Moby のみです。The only supported container engine for IoT Edge devices in production is Moby. ただし、Docker などの Open Container Initiative と互換性のあるコンテナー エンジンでは、IoT Edge モジュール イメージをビルドできます。However, any container engine compatible with the Open Container Initiative, like Docker, is capable of building IoT Edge module images.

開発ツールDevelopment tools

Visual Studio と Visual Studio Code の両方に、IoT Edge ソリューションを開発するのに役立つアドオン拡張機能が備えられています。Both Visual Studio and Visual Studio Code have add-on extensions to help develop IoT Edge solutions. これらの拡張機能は、新しい IoT Edge シナリオを作成したり、配置したりするのに役立つ言語固有のテンプレートを提供します。These extensions provide language-specific templates to help create and deploy new IoT Edge scenarios. Visual Studio と Visual Studio Code の両方の Azure IoT Edge 拡張機能で、IoT Edge ソリューションのコード作成、ビルド、配置、デバッグを行えます。The Azure IoT Edge extensions for Visual Studio and Visual Studio Code help you code, build, deploy, and debug your IoT Edge solutions. 複数のモジュールを含む IoT Edge ソリューション全体を作成できます。拡張機能は新しいモジュールを追加するごとに、配置マニフェスト テンプレートを自動的に更新します。You can create an entire IoT Edge solution that contains multiple modules, and the extensions automatically update a deployment manifest template with each new module addition. また、この拡張機能を使用することで、Visual Studio または Visual Studio Code から IoT デバイスを管理することもできます。With the extensions, you can also manage your IoT devices from within Visual Studio or Visual Studio Code. デバイスにモジュールを配置したり、ステータスを監視したり、メッセージが IoT Hub に到着したらそのメッセージを表示したりします。Deploy modules to a device, monitor the status, and view messages as they arrive at IoT Hub. 両方の拡張機能では、IoT EdgeHub 開発ツールを使用して、開発用マシン上のモジュールのローカルでの実行とデバッグを行えます。Both extensions use the IoT EdgeHub dev tool to enable local running and debugging of modules on your development machine as well.

他のエディターまたは CLI から開発する場合、Azure IoT Edge 開発ツールでは、コマンドラインから開発およびテストできるようにコマンドが用意されています。If you prefer to develop with other editors or from the CLI, the Azure IoT Edge dev tool provides commands so that you can develop and test from the command line. 新しい IoT Edge シナリオの作成、モジュール イメージのビルド、シミュレーターでのモジュールの実行、および IoT Hub に送信されるメッセージの監視を行えます。You can create new IoT Edge scenarios, build module images, run modules in a simulator, and monitor messages sent to IoT Hub.

Visual Studio Code 拡張機能Visual Studio Code extension

Visual Studio Code 用の Azure IoT Edge 拡張機能では、C、C#、Java、Node.js、Python などのプログラミング言語でビルドされた IoT Edge モジュールのテンプレートや C# での Azure 関数が提供されます。The Azure IoT Edge extension for Visual Studio Code provides IoT Edge module templates built on programming languages including C, C#, Java, Node.js, and Python as well as Azure functions in C#.

詳細情報およびダウンロード方法については、Visual Studio Code 用 Azure IoT Tools に関するページを参照してください。For more information and to download, see Azure IoT Tools for Visual Studio Code.

IoT Edge 拡張機能に加えて、開発用のその他の拡張機能をインストールするのに役立つ情報もご覧いただけます。In addition to the IoT Edge extensions, you may find it helpful to install additional extensions for developing. たとえば、Docker Support for Visual Studio Code を使用して、イメージ、コンテナー、レジストリを管理することができます。For example, you can use Docker Support for Visual Studio Code to manage your images, containers, and registries. さらに、サポートされている主要言語すべてで、モジュールを開発する際に役立つ Visual Studio Code の拡張機能が用意されています。Additionally, all the major supported languages have extensions for Visual Studio Code that can help when you're developing modules.

前提条件Prerequisites

一部の言語とサービス用のモジュール テンプレートでは、Visual Studio Code を使用する開発用マシンにプロジェクト フォルダーを作成するために必要な前提条件があります。The module templates for some languages and services have prerequisites that are necessary to build the project folders on your development machine with Visual Studio Code.

モジュール テンプレートModule template 前提条件Prerequisite
Azure FunctionsAzure Functions .NET Core 2.1 SDK.NET Core 2.1 SDK
CC GitGit
C#C# .NET Core 2.1 SDK.NET Core 2.1 SDK
JavaJava
Node.jsNode.js
PythonPython

Visual Studio 2017/2019 拡張機能Visual Studio 2017/2019 extension

Azure IoT Edge Tools for Visual Studio では、C# および C で作成された IoT Edge モジュール テンプレートが提供されます。The Azure IoT Edge tools for Visual Studio provide an IoT Edge module template built on C# and C.

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

IoT Edge 開発ツールIoT Edge dev tool

Azure IoT Edge 開発ツールは、コマンドライン機能で IoT Edge 開発を簡略化します。The Azure IoT Edge dev tool simplifies IoT Edge development with command-line abilities. このツールは、モジュールの開発、デバッグ、テストを行うための CLI コマンドを提供します。This tool provides CLI commands to develop, debug, and test modules. マシンに依存関係を手動でインストールした場合でも、また IoT Edge 開発コンテナーを使用している場合でも、IoT Edge 開発ツールは開発システムで機能します。The IoT Edge dev tool works with your development system, whether you've manually installed the dependencies on your machine or are using the IoT Edge dev container.

詳細については、IoT Edge 開発ツール wiki に関するページを参照してください。For more information and to get started, see IoT Edge dev tool wiki.

テスト ツールTesting tools

IoT Edge デバイスをシミュレートしたり、モジュールをより効率的にデバッグしたりするのに役立ついくつかのテスト ツールが存在します。Several testing tools exist to help you simulate IoT Edge devices or debug modules more efficiently. 次の表に、ツール間の大まかな比較を示します。各セクションでは、各ツールの詳細を説明します。The following table shows a high-level comparison between the tools, and then individual sections describe each tool more specifically.

IoT Edge ランタイムは運用環境への配置のみをサポートしますが、以下のツールを使用すると、開発およびテスト目的で IoT Edge デバイスをシミュレートしたり、簡単に作成したりできます。Only the IoT Edge runtime is supported for production deployments, but the following tools allow you to simulate or easily create IoT Edge devices for development and testing purposes. これらのツールは、相互に排他的ではなく、完全な開発エクスペリエンスを実現するために連携させることができます。These tools aren't mutually exclusive, but can work together for a complete development experience.

ツールTool 別名Also known as サポートされるプラットフォームSupported platforms 最適な用途Best for
IoT Edge Hub 開発ツールIoT EdgeHub dev tool iotedgehubdeviotedgehubdev Windows、Linux、MacOSWindows, Linux, MacOS モジュールをデバッグするためのデバイスのシミュレート。Simulating a device to debug modules.
IoT Edge 開発コンテナーIoT Edge dev container microsoft/iotedgedevmicrosoft/iotedgedev Windows、Linux、MacOSWindows, Linux, MacOS 依存関係をインストールせずに開発。Developing without installing dependencies.
コンテナーの IoT Edge ランタイムIoT Edge runtime in a container iotedgeciotedgec Windows、Linux、MacOS、ARMWindows, Linux, MacOS, ARM ランタイムをサポートしないデバイスでのテスト。Testing on a device that may not support the runtime.
IoT Edge デバイス コンテナーIoT Edge device container toolboc/azure-iot-edge-device-containertoolboc/azure-iot-edge-device-container Windows、Linux、MacOS、ARMWindows, Linux, MacOS, ARM 多数の IoT Edge デバイスが存在する規模の大きいシナリオのテスト。Testing a scenario with many IoT Edge devices at scale.

IoT Edge Hub 開発ツールIoT EdgeHub dev tool

Azure IoT EdgeHub 開発ツールは、ローカルでの開発およびデバッグ エクスペリエンスを提供します。The Azure IoT EdgeHub dev tool provides a local development and debug experience. このツールにより、IoT Edge ランタイムなしに IoT Edge モジュールを起動することができ、IoT Edge モジュールとソリューションのローカルでの作成、開発、テスト、実行、デバッグを行えます。The tool helps start IoT Edge modules without the IoT Edge runtime so that you can create, develop, test, run, and debug IoT Edge modules and solutions locally. テストするために、イメージをコンテナー レジストリにプッシュしたり、それらをデバイスに配置したりする必要はありません。You don't have to push images to a container registry and deploy them to a device for testing.

IoT Edge Hub 開発ツールは、IoT Edge 開発ツールだけでなく、Visual Studio および Visual Studio Code の拡張機能とも連携して動作するように設計されました。The IoT EdgeHub dev tool was designed to work in tandem with the Visual Studio and Visual Studio Code extensions, as well as with the IoT Edge dev tool. 内部ループ開発と外部ループ テストをサポートしているため、DevOps ツールとも統合されます。It supports inner loop development as well as outer loop testing, so integrates with the DevOps tools too.

詳細情報とインストールについては、Azure IoT EdgeHub 開発ツールに関するページを参照してください。For more information and to install, see Azure IoT EdgeHub dev tool.

IoT Edge 開発コンテナーIoT Edge dev container

Azure IoT Edge 開発コンテナーは、IoT Edge 開発に必要なすべての依存関係が存在する Docker コンテナーです。The Azure IoT Edge dev container is a Docker container that has all the dependencies that you need for IoT Edge development. このコンテナーにより、C#、Python、Node.js、Java など、開発にどの言語を使用するとしても簡単に開始できます。This container makes it easy to get started with whichever language you want to develop in, including C#, Python, Node.js, and Java. インストールする必要があるのは、開発用マシンにコンテナーをプルするための Docker や Moby などのコンテナー エンジンだけです。All you need to install is a container engine, like Docker or Moby, to pull the container to your development machine.

詳細については、Azure IoT Edge 開発コンテナーに関するページを参照してください。For more information, see Azure IoT Edge dev container.

コンテナーの IoT Edge ランタイムIoT Edge runtime in a container

コンテナーの IoT Edge ランタイムは、環境変数としてデバイス接続文字列を受け取る完全なランタイムを提供します。The IoT Edge runtime in a container provides a complete runtime that takes your device connection string as an environment variable. このコンテナーによって、MacOS のようなランタイムをネイティブでサポートしていないシステムで IoT Edge モジュールとシナリオをテストすることができます。This container enables you to test IoT Edge modules and scenarios on a system that may not support the runtime natively, like MacOS. 配置するすべてのモジュールは、ランタイム コンテナーの外部で開始されます。Any modules that you deploy will be started outside of the runtime container. ランタイムと配置するモジュールが同じコンテナー内に存在するようにしたい場合は、IoT Edge デバイス コンテナーを検討してください。If you want the runtime and any deployed modules to exist within the same container, consider the IoT Edge device container instead.

詳細については、コンテナーでの Azure IoT Edge の実行に関するページを参照してください。For more information, see Running Azure IoT Edge in a container.

IoT Edge デバイス コンテナーIoT Edge device container

IoT Edge デバイス コンテナーは、コンテナー エンジンを使用するすべてのマシンで起動できる、すべて揃った IoT Edge デバイスです。The IoT Edge device container is a complete IoT Edge device, ready to be launched on any machine with a container engine. デバイス コンテナーには、IoT Edge ランタイムとコンテナー エンジン自体が含まれています。The device container includes the IoT Edge runtime and a container engine itself. コンテナーの各インスタンスは、完全に機能する自己プロビジョニング IoT Edge デバイスです。Each instance of the container is a fully functional self-provisioning IoT Edge device. デバイス コンテナーは、モジュールへのネットワーク ルートがある限り、モジュールのリモート デバッグをサポートします。The device container supports remote debugging of modules, as long as there is a network route to the module. デバイス コンテナーは、規模の大きいシナリオや Azure Pipelines をテストするため、多数の IoT Edge デバイスをすばやく作成するのに適しています。The device container is good for quickly creating large numbers of IoT Edge devices to test at-scale scenarios or Azure Pipelines. Helm 経由での Kubernetes への配置もサポートしています。It also supports deployment to kubernetes via helm.

詳細については、Azure IoT Edge デバイス コンテナーに関するページを参照してください。For more information, see Azure IoT Edge device container.

DevOps ツールDevOps tools

広範囲に及ぶ運用環境シナリオのために規模の大きいソリューションを開発する準備が整ったら、自動化、監視、合理化されたソフトウェア エンジニアリング プロセスなど、最新の DevOps 原則のメリットを生かすことができます。When you're ready to develop at-scale solutions for extensive production scenarios, take advantage of modern DevOps principles including automation, monitoring, and streamlined software engineering processes. IoT Edge には、Azure DevOps、Azure DevOps Projects、Jenkins などの DevOps ツールをサポートする拡張機能が備わっています。IoT Edge has extensions to support DevOps tools including Azure DevOps, Azure DevOps Projects, and Jenkins. 既存のパイプラインをカスタマイズする、または CircleCI、TravisCI などの異なる DevOps ツールを使用する場合は、IoT Edge 開発ツールに含まれる CLI 機能を使用して行います。If you want to customize an existing pipeline or use a different DevOps tool like CircleCI or TravisCI, you can do so with the CLI features included in the IoT Edge dev tool.

詳細情報、ガイドライン、およびサンプルについては、以下のページを参照してください。For more information, guidance, and examples, see the following pages: