今回は単一ホストで動いている IoT システムを複数ホストで分散協調して動作するようにしてみます。これまでの応用で大変簡単にできるので、Elixir / Erlang / OTP の底力を感じるにはもってこいです。さらに今回の例では I/O をイベントドリブンで駆動するようにしてループを一切排除してみました。 なおこれは Nerves 1.5 (Elixir 1.9) でやってます。ちょうど前後して Nerves 1.6 がリリースされましたので1、そちらでも動くのか追って調べたいと思います。 概要 一つのマシンで作成していた IoT プログラムがあるとして、それを何らかの原因で複数のマシンで動かしたくなったとします。原因というのは、CPU の性能が足りなくなったとか、I/O の点数が足りなくなったとか、I/O のケーブル(I2C とか SPI)が届かない範囲に I/O デバイスが離れてし