これは関数型まつり2026のプレゼン資料です。
https://fortee.jp/2026fp-matsuri/proposal/904cc5d9-b328-450e-8f60-5c3bf4200b51
Elixir(やその基になる Erlang)の計算実行の単位をプロセスといいます。このプロセスはBEAMと呼ばれる仮想マシン上で実行されます。Elixirで作ったシステム全体は、プロセスがメッセージを交換しあう形で動作します。これをアクターモデルと言います。
ユーザがプロセスプログラミングするのに、ElixirではGenServerという枠組みを用意してます。GenServerは大量のサービスをサーバで並行実行するのや、IoTでデバイスを抽象化してAPIを作るのに向いています。
GenServerプロセスは実行中にいろんな面白い形でいぢることが可能です。例えば実行中に実装を差し替えることができます。またマイグレーションと言って、今動いているBEAMから他のBEAMに移動することもできます。これは他の言語ではあまりみられない特徴で、応用の局面でElixirを実用性の高い言語にしています。
今回はまずElixirのGenServer入門をします。つぎに実際に手元のPCでマイグレーションするところをご覧に入れます。またIoTデバイスを用いてLチカなどの動作を一つのボードコンピュータから他のボードに飛ばすところをお見せします。
ElixirはErlang Clusterという通信基盤がデフォルトで用意されています。この他に最近はPub/Sub通信をするZenohが使えるようになってます。Zenohを用いて広域分散環境でプロセスのマイグレーションするところもお見せします。