はじめに
Elixirアドベントカレンダー2025のシリーズ2、14日目の記事です
本記事は「福岡Tech LT大忘年会」で組み込みハードウェアのジャンルで
「実は何でも動くElixir」という話をLTしたスライドを加筆し記事化したものです
アジェンダ
- ゆるい関数型言語 Elixirについて
- フルスタックWebアプリケーションフレームワーク Phoenixについて
- マルチプラットフォームアプリを作る ElixirDesktopについて
- 超軽量、OTAもできる組み込みLinux Nerves
- ESP32やRasPico等のマイコンで動く超軽量ErlangVM AtomVM
- ブラウザで動くElixirのWebAssembly実装 Popcorn
- 超高性能、超省電力! FPGAで動く ElixirChip
Elixirについて
並列処理指向の関数型言語
ErlangVM(BEAM)上で動作する Javaに対するKotlinな感じ
Erlangに比べてゆるふわな感じでRubyに近い書き味
クラスは無く、構造体と処理モジュールのシンプルな構成
いろんなジャンルのライブラリが作られていてなんでもござれ状態
ライブラリ紹介
Webアプリケーションフレームワーク
- Phoenix - フルスタックWebアプリケーションフレームワーク
- Ash - バックグランドフレームワーク
SPA
- LiveView - Tailwind + HTML
- LiveSvelte - LiveView + Svelte
- LiveReact - LiveView + React
スマホ
- ElixirDesktop - iOS/Android上でPhoenixを動かすツールチェイン
- DesktopSetup - 通常のPhoenixをElixirDesktopアプリにするジェネレーター
組み込み
- Nerves - RasberryPi 0~5 Linuxボード向け ElixirOS
- AtomVM - ESP32 STM32マイコンボード向け ElixirOS
- Popcorn - AtomVMのWASM実装
- Zenohex - 次世代通信プロトコルZenohのElixir API
AI/ML ツールチェイン
- Livebook - ノートブックアプリ
- Nx - 行列演算ライブラリ
- Explorer - データフレームライブラリ
- Axon - KerassライクなDNNライブラリ
- Bumblebee - AxonをベースにしたHuggingFase実行ライブラリ
- EMLX - MacのGPUをNxで使うライブラリ
- Evision - OpenCVのラッパー
- Ollama ex - Ollamaラッパー
- ortex - ONNX Runtimeラッパー
Elixirを導入してコスト削減した企業
- システムにElixirを導入
- 年$2milion(3億円)節約
- サーバー1400台を95%減少
- 200台のpythonのシステムをElixir4台で賄う
- システムの信頼性とパフォーマンスも大幅アップ
Phoenixについて
- フルスタックなWebアプリケーションフレームワーク
- メモリ効率が良くグロースにも強い
-
- Pinterest Python -> Phoenixで 200台を4台に集約
- ReactやVueで構築するようなSPAをよりシンプルに構築できるLiveView
- 認証機能ジェネレータを標準搭載し、自身で簡単に拡張可能
- UIはTailwindとDaisyUIを採用しJSとの連携も容易
フロントエンドの旅の果てにLiveViewにたどり着いた話
- React.jsとNext.jsでの開発に疲れ、シンプルさを求めてRailsに移行
- Railsでもフロントエンドとバックエンドの統合の難しさを感じる
- 最終的にElixirとPhoenixを選択し、シンプルさと高パフォーマンスを実現
- Elixirはコードの読みやすさや拡張性があり、開発体験が向上
- 著者にとってElixirは理想的な環境となり、React.jsの負担を軽減できた
Phoenixを使った日本のプロダクトを紹介
スキルマネジメントSaaS Bright
主要言語の細かく分けられたスキルシート
PdM、PjMなど上流のスキルシートもカバー
不正防止特化チケット販売サービス アツマロッカ
入場時の渋滞解消と不正転売防止に特化した
電子チケット販売サービス
ElixirDesktopについて
Elixir/Phoenixでマルチプラットフォーム開発ができるライブラリ群
各OSで Erlang 及び Elixir を起動
その上でWebアプリケーションサーバーPhoenixを起動
各OSのWebViewやGUIライブラリのWxWidgetからアクセスして表示
いわゆるWebViewアプリケーション形式
違いは表示するWebアプリケーションがローカルで動いていること
何が嬉しいのか?
- Webの技術スタックでスマホアプリが開発できる
- フルスタックWebアプリケーションフレームワークなのでライブラリ選定が不要
- コマンド1つでCRUDが完成
- Tailwind, DaisyUIで簡単に早く画面を構築
- ネイティブと相互なやり取りもJS Hookでできる
作り方
ジェネレータを入れてコマンドだけで完了
mix phx.new blog
cd blog
mix ecto.migrate
ライブラリにdesktop_setupを追加
mix dips.get
mix desktop.install
mix desktop.ios.setup
mix desktop.android.setup
ElixirDesktopを使ったプロダクト紹介
旅行記アプリ Trareco
行きたいところをGooglePlacesAPIで取得・保存して、旅行ルートを決めたり、GPSロギングを取ったりする
- GPSデータの取得
- MapLibreを表示
- GooglePlacesAPI使用
- PostgreSQLに直結
オートドアロックシステム「na2」
toBt向け
Push通知やVoIP機能を実装しています
- オートロック解錠
- インターホン受信
- VoIP
- WebRTC
イベントプラットフォームアプリ Eventle
- Stripe決済
- パスワードレスログイン
- ユニバーサルリンク
Nervesについて
- IoT・組み込み向けの Elixir OS
- Linuxブートローダ、Elixir実行環境、各種デバドラをFWとしてビルド
- GPIO,I2C,SPI,UARTの操作なんでもござれ!
- 死活管理と OTA(On the Air)更新ができる管理ダッシュボード
- Build rootを使っているため 20MB〜150MBと容量が小さく起動が早い
- プロセスはOSではなくErlangVMで作成するので落ちたらすぐ再起動
サポート端末
- Raspberry Pi A+, B, B+
- Raspberry Pi 2
- Raspberry Pi 3 B, B+
- Raspberry Pi 4
- Raspberry Pi 5
- Raspberry Pi Zero
- Raspberry Pi Zero 2W and 3A (32 bits)
- Raspberry Pi Zero 2W and 3A (64 bits)
- BeagleBone Black, BeagleBone Green, BeagleBone Green Wireless, and PocketBeagle.
- Generic x86_64
- OSD32MP1
- GRiSP 2
- MangoPi MQ Pro
事例
小水力発電制御システムへの Nerves 適用
ポータブルVPN端末 Pocket Luncher
KIOSK端末やファームボットも
AtomVMについて
- ESP32やSTM32、RaspiPicoなどマイコン向けの軽量実装Erlang
- Erlangが動くのでElixirももちろん動く(Javaに対するKotlinな関係)
- 数百KBのマイコンで動く
- 起動が高速、リアルタイム制御に向く
- GPIO,SPI,I2C,UARTなどを直接操作可能
- 色々動くようになってきたがまだプロダクトができたという話は聞いてない
Lチカ色々
詳しくはこちらのシリーズ3にあります
https://qiita.com/advent-calendar/2025/elixir
Popcornについて
- ブラウザのクライアントサイドで動くElixir
- AtomVMをWASMビルドしている
- Elixirのプロセス間通信でP2Pとかも可能
- フロントでAI/MLを実行ができるかも?
- まだまだ開発段階
ElixirChipについて
- FPGA上に実装されたElixir
- 非ノイマン型コンピュータでフォン・ノイマン・ボトルネックを回避
- FPGAなのにElixirで書いたコードが何も手を加えなくても動く
- 組み込みエンジニアではなくともFPGAで動くプログラムが書ける
- 低価格、高性能、省電力!
詳しくは
こちらで発表されたスライドをどうぞ
最後に
ElixirがWebだけでなく、スマホ、RasPi、M5Stack、ブラウザ、FPGAなど様々な環境でうごくのをおわかりいただけたと思います
また発表の後は懇親会でおしゃれで美味しいお料理を提供していただきました、マネーフォワードとスポンサーのみなさまありがとうございました
本記事は以上になります








