ESP32のさまざまな開発環境
ESP32の開発環境には、本連載で解説する.NET nanoFramework以外にも、いくつか存在します。
ESP-IDF
ESP-IDF(ESP-IoT Development Framework)は、ESP32の開発元Espressif Systems社が公開している公式の開発環境です。プログラミングは、C/C++言語で行います。
ESP-IDFアプリケーションは、Windows、Linux、macOSに対応したバージョンが提供されていますが、Visual Studio Codeで利用できる、ESP-IDF拡張機能「Espressif IDF」というのもあります。
Arduino IDE
Arduino IDEは、元々は、Arduinoマイコン用のプログラム開発ツールでした。その後Arduino以外のマイコンでも使えるようになり、ESP32でも利用できます。こちらもWindows、Linux、macOSに対応しています。言語は、C/C++言語をベースに、少し簡略化したものとなっています。
MicroPython
MicroPythonは、Python 3をベースにしたプログラミング言語です。マイコン用に最適化されており、Pythonとの互換性があります。ESP32でも、MicroPythonが利用できます。開発環境としては、Visual Studio Codeの拡張機能や、Thonnyという初心者向けの統合開発環境 (IDE) があります。
その他
DeviceScriptは、マイコン用のTypeScript言語で、ESP32でも利用できます。.NET nanoFramework同様、Microsoftが開発しており、Visual Studio Codeの拡張機能として提供されています。
また、Luaといったスクリプト言語を実行できる環境も存在します。
.NET nanoFrameworkではC#を活用してコード作成が可能
.NET nanoFrameworkは、ESP32やSTM32などの組み込み用デバイス向けに、C#のマネージドコードで作成したアプリの実行を可能にするオープンソースプラットフォームです。つまり、.NET nanoFrameworkを利用すれば、C#のスキルを活用してマイコン用のコードが作成できるというわけです。
開発ツールとしては、Visual Studio 2022(または2019)、またはVisual Studio Codeが利用可能です。本連載では、Windows環境のVisual Studio 2022を使用することにします。
.NET Core IoTと.NET nanoFramework
じつは.NET環境には、IoTデバイス向けに、.NET Core IoTというライブラリも存在します。.NET Core IoTは、その名前のとおり、.NET Coreに、IoT用のライブラリを追加したものです。そのため、.NET Coreランタイムが動作可能なリソースが要求されます。対応OSは、Linux、Windows 10 IoT Coreになり、少なくともRaspberry Piのようなデバイスでないと動作しません。
一方、.NET nanoFrameworkでは、.NET Coreを利用しません。.NET nanoFramework自体に、機能を限定したランタイム(nanoCLR)が含まれています。nanoCLRは、制約のある、より小さなリソースでも動作するように設計されています。.NET nanoFrameworkでは、.NET基本クラスライブラリ(BCL)のサブセットと、.NET IoTに含まれる最も一般的なAPIが提供されています。