2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Elixirで始めるIoT開発:AtomVM・Nerves・Raspberry Pi OS

Last updated at Posted at 2025-07-31

はじめに

Elixirを使ってIoT開発を行う場合、用途やデバイスに応じて選べるプラットフォームが複数あります。

代表的なのは次の3つです:

  • AtomVM:
    ESP32などの小型マイコン向け。
    極小メモリで動作する軽量なErlang VM実装で、OS無しで直接マイコン上でElixirを実行します。
  • Nerves:
    Raspberry Piなどのシングルボードコンピュータ向け。
    Elixirに特化した組込みLinux環境(Buildrootベースの組み込みLinux)上でBEAMを動かすプラットフォーム。
  • Raspberry Pi OS:
    汎用Linuxディストリビューション(Debian系)上にElixirをインストールして利用する方法。
    フル機能のOS環境でElixirが動きます。

プラットフォーム比較

AtomVM Nerves Raspberry Pi OS
対応デバイス ESP32など Raspberry Pi など Raspberry Pi など
OS なし(RTOS) Buildrootベースの組み込みLinux Debian Linux
イメージサイズ 0.5–4 MB 30–60 MB 400 MB 以上
電池駆動 ◎ 長期駆動可 ▲ 常時給電推奨 ▲ 常時給電推奨
OTA更新 ✕ 未対応 ◎ 標準対応 ✕ 未対応
価格(参考) 約 500〜1,000 円 約 4,000〜10,000 円 約 4,000〜10,000 円
  • OTA(Over-The-Air)更新: 無線 / ネットワーク経由でファームウェアをアップデートする仕組み。

Elixir/Erlang VMの利点

  • 軽量プロセスとメッセージパッシングによる並行処理。数万の並行プロセスを難なく生成可能。
  • プリエンプティブなスケジューリングで実行が偏らず、リアルタイム性が求められる処理でも遅延が少ない。
  • 共有メモリやロックを使わない安全な並行モデル。スレッド同期不具合と無縁。
  • ガーベジコレクションに対応し、メモリ管理の負担が少ない。長時間稼働でもメモリリークしにくい。
  • 優れた通信処理やタイマ制御の標準ライブラリ。分散ノード間通信や遅延評価などIoT通信に強い。
  • 障害に強い設計(自己復旧)。一部プロセスが異常終了してもシステム全体が落ちにくい。

以上の特徴から、並行センサー処理やリアルタイム制御、高信頼な常時稼働システムに向いており、ElixirがIoT開発者にとって魅力的な選択肢となることがわかります。


Nerves

特徴

  • Linux上でElixirが動作
  • SSHでリモート開発・デバッグが可能
  • 小型で堅牢なLinuxファームウェアが構築可能

やってみる

Nerves Livebookに挑戦


AtomVM

特徴

  • 数百KiBのマイコンでElixirが動く
  • 起動が高速、リアルタイム制御に向く
  • GPIO, SPI, I2C, UARTなどを直接操作可能

やってみる

Lチカに挑戦

atomvm-blinky_0835~3.gif

atomvm-blinky 2025-08-01 12-04.gif


おわりに

Elixirは、幅広いIoTデバイスで活用できます。

  • 低コスト・省電力・リアルタイムが必要ならAtomVM
  • OTA更新やLinuxの機能が必要ならNerves

みんなそれぞれいいですね!
プロジェクトの要件に応じて使い分けましょう。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?