ElixirでIoT!?
ナウでヤングでcoolなNervesフレームワーク
@takasehideki
@takasehideki
− 京都大学 情報学研究科 准教授
− JSTさきがけ 兼任研究者
− SWEST ステアリング委員
− IPSJ-SIGEMB 運営幹事
− TOPPERSプロジェクト 特別会員
− ROS Japan Users Group
 関西勉強会 主催
 ROSCon JP 実行委員
− IoT ALGYAN 関西支部長代行補佐
− Elixir: NervesJP kyoto.ex
主な研究開発プロジェクト
− mROS: 組込み向けROS軽量実行環境
− Cockatrice: Elixir for HLS
自己紹介
2
Cockatrice
We are !!!
3
4
関数型言語ElixirでIoT開発!?を
楽しんでいるオンラインコミュニティです
Elixir/Nervesをもっと知りたい方、
Nervesでなんか作ってみたい方、
Nerves Projectに貢献したい方、
れっつじょいなす!!
https://nerves-jp.connpass.com/
Elixirとは?
Elixirとは?
2012年に登場した新たな関数型言語
6
Erlang VM上で動作
• 高い並列性能を誇る
• 軽量かつ頑強なプロセスモデル
• 耐障害性が極めて高い
Rubyを基にした言語設計
• 習得しやすく生産性が向上する
• WebフレームワークPhoenixを持つ
応答性が極めて高い
#NervesJP
Elixirの採用例
• 8 Companies That Use Elixir in Production
https://serokell.io/blog/elixir-companies
• 日本で Erlang/OTP や Elixir を利用している会社一覧
github: voluntas/japanese-erlang-elixir-companies
7
画像クリックで
詳細ページに
8
Elixir Zen Style
1..1000
|> Flow.from_enumerable()
|> Flow.map(& foo(&1))
|> Flow.map(& bar(&1))
|> Enum.sort
Zen(禅) とは本質美である
プログラミングの本質とは
データの流れである
Elixirではデータフローと並列処理を
Enum Flow |> で直感的に記述できる
#NervesJP
Elixirの気持ちよさ
• Zen Style!!
• (やや)強い動的型付け
• オブジェクトの
イミュータブル性(不変性)
• バイナリ操作と
パターンマッチ
• メモリ軽量かつ
堅牢なプロセスモデル
− 障害時にはプロセス
単位で復旧可能
• マクロプログラミング
9
ダッシュ
ボード
Link
Super
Visor
one_for_one
App
液晶
データ
ロガー
Link
センサ
監視
制御
Link
ボタン
#NervesJP
Elixirって,,,
ElixirでIoT!!
11
• HWもSWもErlangセットで提供!!
ü300MHz Cortex-M7 & 64MB Flash
üOn-board WLAN & Pmodコネクタ
• V2のKickstarter Project達成︕︕
• ラズパイ等が主な対象
• メモリサイズ数10MB︕
• Elixir ecosystem連携︕
• ESP32/STM32で
Elixir/Elarngが動く!!
• ファームは約700KB!!
• 機能実装はまだ限定的
#NervesJP
12#NervesJP
https://nerves-project.org
Platform Framework Tooling
Platform
• ブートローダ+rootfs+
Erlang OTP+Elixirアプリ
− 一括でビルドして
SDカード等に書込み
13#NervesJP
Framework
• IoTデバイス開発に欠かせない
強力なライブラリ
−Elixir Circuits: GPIO, I2C, SPI, UART
−IoTモジュール向けライブラリも
• 通常のElixirライブラリも利用可
−描画系ライブラリ Scenic や
Webフレームワーク Phoenixとも
容易に連携可能!
14#NervesJP
Tooling
• mixによるプロジェクト管理
− いつものElixirアプリ開発と一緒!
− クロスコンパイルは裏でよしなに
• IExでのインタプリタ実行も可能
− VirtualEther越しのssh接続
− /dev/tty* 越しのserial接続
• ファーム・アプリの書き込み
− SDカードに書き込み
− VirtualEther越しの更新
− NervesHub : Device to the Cloud!!
サーバ経由のOTAでアプリをリモートデプロイ!
15#NervesJP
NervesHub
• サーバ経由のOTA (Over The Air) で
Nervesアプリをリモートデプロイ!
− X.509署名証明書とNervesKey回路で
セキュアな接続経路を実現
 https://www.tindie.com/products/
troodonsw/nerveskey/
− 更新先とファームを任意指定可
16
主な対応デバイス
17#NervesJP
x86_64
https://www.youtube.com/
watch?v=DvwgGz_5D5I
ラズパイ
BeagleBone
Custom
Boards
18
Developers Community
https://github.com/orgs/nerves-project/people
#nerves on elixir-lang.slack
https://github.com/nerves-project/nerves
Nervesの採用例
https://www.nerves-project.org/case-studies
19
Le Tote:
衣料品倉庫のRFIDと
キオスクによる在庫管理
Hop:
顔認証機能付きの
キオスクビールサーバ
FarmBot:
スマートファームの実現
『ElixirでIoT』の新世界!
20
デバイス
エッジサーバ クラウド
あらゆるモノ・コト・ヒトを
ネットワーク化!
情報技術の総合格闘技!
新たな社会的価値を創出!!
『ElixirでIoT』の新世界!
21
デバイス
エッジサーバ クラウド
あらゆるモノ・コト・ヒトを
ネットワーク化!
情報技術の総合格闘技!
新たな社会的価値を創出!!
勉強したくね??
22#NervesJP
• 通称「えりいざ」本
− @MzRyuKa さん渾身の力作!
− 達人出版会にて電子版の
半額セール実施中!
https://tatsu-zine.com/books/elixir-invitation
− めちゃ丁寧!入門に最適!
Elixirのインストールから
PhoenixのWebページ作成,
NervesでLチカまで!
− はじめは雰囲気で使っても
良いじゃないの
わんもあしんぐ,,,
NervesJP #9 MeetUpを7/20(月)に開催!!
https://nerves-jp.connpass.com/event/182548/
23
https://nerves-jp.connpass.com/
24
サッポロビーム
れっつじょいなす!!

ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク

Editor's Notes

  • #6 My presentation consists of 3 parts. How many people do you know about FPGA? First part is just a lecture in the University. I will introduce about hardware design and FPGA. OK, let’s go to the 1st part.
  • #7 これまでのプログラミング言語は処理の振る舞いに着目してきた.これからはデータの扱いを重視すべきとの思想が根付いている. パイプ演算子でデータの流れを直接的に記述できる. MapReduceモデルのFlowライブラリによって並列処理を直接的に記述できる. このプログラムでは,1 から1000 までのリストを生成し,各コアにリストの要素を分配した後,各要素について関数foo とbar を順番に適用してから結果をリストに戻す.図1のプログラムコードを記述すると,各コアにリスト要素を分配して実行される. 10.63倍のスループットを達成できるという報告も IoTでは高性能なコア単体よりも低性能でも多数コアを有する組込みSoCのほうがシステム全体の性能を発揮できることを示している.   •耐障害性とレスポンス性が極めて高い -WebフレームワークPhoenixを持つ -プロセスごとにGCを含む堅牢なメモリ管理がなされる -障害時にはプロセス単位で再起動を高速に行える
  • #8 アカツキ ロマサガRS ドリコム 動画広告ネットワーク DreeVee
  • #11 My presentation consists of 3 parts. How many people do you know about FPGA? First part is just a lecture in the University. I will introduce about hardware design and FPGA. OK, let’s go to the 1st part.
  • #19 コナーはFarmBot FrankはSmartRentでElixirALE グレッグはBleacher Report JustinはLe Totle Elixir-lang の #nerves チャンネル参加者が2,000人近くいる! #general で24,000人 Nerves Remote Meetupのワークスペースもある