11
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?

福岡Tech LT大忘年会で「実は何でも動くElixir」をLTした話

11
Last updated at Posted at 2025-12-12

はじめに

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を導入してコスト削減した企業

Pinterest

  • システムに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アプリケーションがローカルで動いていること

スクリーンショット 2025-12-13 1.33.14.png

スクリーンショット 2025-12-13 1.33.20.png

何が嬉しいのか?

  • 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

スクリーンショット 2025-12-13 1.39.57.png

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 適用

スクリーンショット 2025-12-12 2.10.27.png

ポータブルVPN端末 Pocket Luncher

スクリーンショット 2025-12-12 2.20.36.png

KIOSK端末やファームボットも

スクリーンショット 2025-12-12 2.39.18.png

AtomVMについて

  • ESP32やSTM32、RaspiPicoなどマイコン向けの軽量実装Erlang
  • Erlangが動くのでElixirももちろん動く(Javaに対するKotlinな関係)
  • 数百KBのマイコンで動く
  • 起動が高速、リアルタイム制御に向く
  • GPIO,SPI,I2C,UARTなどを直接操作可能
  • 色々動くようになってきたがまだプロダクトができたという話は聞いてない

Lチカ色々

スクリーンショット 2025-12-12 2.42.43.png

スクリーンショット 2025-12-12 2.43.13.png

スクリーンショット 2025-12-12 2.44.41.png

詳しくはこちらのシリーズ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など様々な環境でうごくのをおわかりいただけたと思います

また発表の後は懇親会でおしゃれで美味しいお料理を提供していただきました、マネーフォワードとスポンサーのみなさまありがとうございました

本記事は以上になります

11
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
11
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?