Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「ElixirでIoT!!」のこれまでとこれから

 「ElixirでIoT!!」のこれまでとこれから

関数型まつり
2025/06/14-15
https://2025.fp-matsuri.org/
https://fortee.jp/2025fp-matsuri/proposal/f75e5cab-c677-44bb-a77a-2acf36083457

タイトル:「ElixirでIoT!!」のこれまでとこれから
概要:
「ElixirでIoT!!」と Erlang & Elixir Fest 2019 で喧伝しだしてから早くも5年以上の月日が流れてきました.
提案者はこれまで,「ElixirはIoT向きのプログラミング言語である」という旗印のもとで,IoTシステムに使える(はずの)さまざまなライブラリやプラットフォームをElixirで作ってきて,そしてそれらの価値を指し示すための「論よりRUN!!」なデモをお見せしてきました.
今回の発表では,どのような技術的思考と願望からこのような活動を進めてきたのか,そして得られてきた研究開発の成果を振り返りたいと思っています.
そして,提案者は正直に申し上げると,関数型言語はElixirしか分かっていません.参加される皆さまそれぞれに思い思いの「推し」があるはずですので,それらもIoT開発に使えるのか?使うとしたらどういう素敵なことが起きるのか?ざっくばらんに語り合えたらと考えています.

Avatar for takasehideki

takasehideki

June 14, 2025
Tweet

More Decks by takasehideki

Other Decks in Programming

Transcript

  1. 3 あじぇんだ • IoTあるいは広域分散システムとは? • なんで「ElixirでIoT!!」なのか?? −IOW なんで「関数型でIoT」がよいのか?? • 私の「ElixirでIoT」のこれまで

    −Rclex, Zenohex, Giocci,,, (なんかすごそう(こなみ −論よりRUN!! • やりたいこと:あなたの「推し言語でIoT!!」は?? −参加型セッションです!Post a.k.a Tweet のご準備をっ!!
  2. 6 私の推しは Elixir!! 2012年に登場した若めの関数型言語 BEAM (Erlang VM) 上で動作 • 高い並行/並列性能を誇る

    • 軽量かつ頑強なプロセスモデル • 耐障害性が極めて高い Rubyを基にした言語設計 • 習得しやすく生産性が向上する • 通信応答性能が極めて高い • Web/IoT/AI FW. を備える ➢ アクターモデルに基づく並行処理 ➢ メモリ軽量かつ堅牢なプロセスモデル ➢ バイナリ操作とパターンマッチ ➢ データフローと並列処理を Enum Flow |> で直感的に記述できる ※各言語・フレームワークのロゴの権利は それぞれの作成者に帰属しています {:ok, ref} = Circuits.I2C.open(@i2c_bus) Circuits.I2C.write(ref, @i2c_addr, <<0xBE, 0x08, 0x00>>) Circuits.I2C.write(ref, @i2c_addr, <<0xAC, 0x33, 0x00>>) {:ok, val} = Circuits.I2C.read(ref, @i2c_addr, 7) <<_state::8, raw_humi::20, raw_temp::20, _crc::8>> = val あなたの「推しで IoT!!」は?? #fp_matsuri_b
  3. 7 私の「ElixirでIoT!!」はここから,,, https://twitter.com/takasehideki/ status/1134648499117551616 Nervesが開拓する 『ElixirでIoT』 の新世界 ⾼瀬 英希 (京都⼤学/JSTさきがけ)

    [email protected] 27 Nerves Training in Japan! ⽇本にNerves Technologyを広めるべく, Training資料と機材を譲り受けました︕ • 内容︓ - Interacting with hardware using Elixir Circuits - Developing with Nerves - Deploy using NervesHub - Render a UI with Scenic - Connecting to Phoenix • スケジュール︓ - kochi.ex @ 5/28-29 - kyoto.ex? @ 6/16 - fukuoka.ex @ 6/6 - SWEST21 @ 9/5-6 ご要望に応じて どこででもやります︕ https://www.slideshare.net/ takasehideki/nerveselixiriot
  4. 9 クラウド エッジデバイス MEC MEC エッジデバイス • 計算の意味を表す関数や論理式の 適用によって処理が進行する •

    関数=プロセスが組み合わさって 次々に相互作用していく 関数同士の通信 = Things同士の通信 計算機同士でクラスタを形成すれば プロセス同士が相互作用して動作する! 関数型パラダイム = IoT!! なんで「ElixirでIoT!!」なん? あなたの「推しで IoT!!」は?? #fp_matsuri_b
  5. 10 まずはロボットIoTやってみた:D node1 node2 node3 node4 Topic1 Topic2 node5 出版(Publish)

    購読(Subscribe) msg msg msg msg github.com/rclex あなたの「推しで IoT!!」は?? #fp_matsuri_b
  6. Actual behavior of RPi Mouse Phoenix Web Page on Nerves

    for Sensor Values on RPi Mouse Camera image on RPi Mouse sent by Momo Nerves Console 論よりRUN!! ~The RUN is mightier than the word~ あなたの「推しで IoT!!」は?? #fp_matsuri_b
  7. クラウド エッジデバイス MEC MEC 応答時間 計算性能 応答時間 計算性能 応答時間 計算性能

    13 広域分散処理,実現したい! • 開発者視点から,,, システム記述 ➢なにをどこで処理するのか? ➢それらをどのように繋げるのか? ➢これをどうやって実現するのか? エッジデバイス あなたの「推しで IoT!!」は?? #fp_matsuri_b
  8. Peer to Peer Clique Mesh Brokered Routed Peer Peer Peer

    Peer Peer Peer Peer Peer Peer client client Router Router Router client client client client client client Router Router • 軽量かつ柔軟な通信ミドルウェア基盤 −Zero network overhead protocol −ネットワーク内ではDDSライク,ネットワーク間ではMQTTライク −広域分散IoTシステムに適したルータ機能 (zenohd) • 4つのポイント ① とにかくかるい! ② なんでもつかえる! ③ いろいろつながる! ④ よしなにしゃべれる! 14 https://zenoh.io/blog/2023-03-21-zenoh-vs-mqtt-kafka-dds/ • Pub / Sub (Push) - basic pub/sub method • Pub / Sub (Pull) - Sub receives in its own timing • Pub / Store / Get - KVS based computation • Get / Reply - RPC-like communication node node node node node node node node Pub Sub(callback) Sub(Pull) Pub Pub Get Reply Pull あなたの「推しで IoT!!」は?? #fp_matsuri_b
  9. • ZettaScale CEO/CTO直伝!Zenoh完全理解セミナー! @2023/12/19 −スライド資料 −YouTubeアーカイブ • speakerdeck.com/takasehideki −なんしかいろいろつながるZenohの紹介 @FA_Study#17

    2024/02/03 −ZenohのROS 2向け対応の現状と方向性 @rosjp#54 2024/02/09 −すべてが #Zenoh になる @robosemi#44 2024/03/15 −Zenohex完全に理解した(しらんけど:D @daimon.ex 2024/07/19 ✓ YouTubeアーカイブ 15 詳しくは?? あなたの「推しで IoT!!」は?? #fp_matsuri_b
  10. だったらElixirじゃね?? node1 node2 node3 node4 Zenoh Python Zenoh Elixir Zenohex

    Rustler Zenoh Elixir Zenohex Rustler node4 node3 node2 node1 topic sub sub pub button pub sub motor pub/sub pub sub movie Zenoh C++ NAPT NAPT https://github.com/b5g-ex/zenohex github.com/rusterlium/rustler Rust謹製のZenoh APIを Elixir/Erlangから利用 Erlangプロセスなので 軽量かつ堅牢!! あなたの「推しで IoT!!」は?? #fp_matsuri_b
  11. 17 論よりRUN!! zcamex simple_echo (server1) simple_echo (server2) zenohd zenohd cam_ping

    mec_pong (server1) cloud_pong (server2) adjustor of fps & size latency graph protocol selector ~The RUN is mightier than the word~ あなたの「推しで IoT!!」は?? #fp_matsuri_b
  12. 18 広域分散処理,どうやるの?? クラウド MEC MEC Erlang VM Erlang VM Erlang

    VM Erlang VM Client Engine Engine Relay 網の先のあらゆる計算資源を 透過的かつ効率的に利用したい! あなたの「推しで IoT!!」は?? #fp_matsuri_b
  13. 23 Thank you! merci!! Arigato!!! @takasehideki A part of this

    work is going as collaborative research with SoftBank Corp., and was supported by the commissioned research (04001) by National Institute of Information and Communications Technology (NICT), Japan.