みずりゅの自由帳

主に参加したイベントやソフトウェア技術/開発について記録しています

「Elixir/Nerves入門!堅牢なIoT Edgeデバイスプログラミングをお手軽に」に参加しました

2020/07/10にオンラインイベントである『Elixir/Nerves入門!堅牢なIoT Edgeデバイスプログラミングをお手軽に』に参加しました。

algyan.connpass.com

こちらは、IoT ALGYAN(あるじゃん)( https://algyan.connpass.com/))様の開催イベントとなっております。

自分はNerves*1に興味があるので、参加しました。

イベントの視聴について

イベントは録画されており、YouTubeで公開されていました。
気になった方はご視聴ください。
資料に書かれていない内容についても話されていたりします。
そして是非、Nervesにも触ってみてください(笑

なお、イベント中のつぶやきは、ハッシュタグ「#ALGYAN」で参照できます。

www.youtube.com

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

日本のNervesの第一人者(と思っている)である京都大学の高瀬英希氏の発表です。
高瀬氏はNervesJP*2を主催もされています。

www.slideshare.net

遅れて参加したので、発表自体は17ページの対応デバイスからお聴きしてました。
情報としてはRaspberryPiでの事例が多いですが、BeagleBoneを利用した例も徐々に増えてきている様子です。

また、実際のNervesを利用した事業の例では、以下の3種類があるようです。

  • LeTote : 日本でいうゾゾタウンの在庫管理
  • Hop : 顔認証機能つきのキオスクビールサーバ
  • FramBot : スマートファームの実現(水や日光の調整など)

詳細はこちらに記載されています。

www.nerves-project.org

ちなみに、なぜElixirでIoTなのかという点は、メモリ軽量で堅牢なプロセスモデルがIoTにあっているから。
加えて、Elixirは元々はクラウドやエッジサーバで成果を出していた言語。
これで、IoTまでElixirにすれば、Elixirさえ知っていれば全ての領域をカバーできる(のでは?)、というのがあるそうです(笑

それと、発表は見れなかったのですが、資料中の「Elixirとは? Zenである!!」の記述部分には共感します。

Zen(禅)とは本質美である

プログラミングの本質は
データの流れである
Elixirではデータフローと並列処理を
Enum Flow |> で直感的に記述できる

パイプ演算子でつないでプログラムが書けると、嬉しい/楽しい、です。


余談ですが、資料中で拙著「Elixirへのいざない」を紹介していただきました。

備忘1:プロダクションにElixirを採用している8企業

資料に載っていた、「プロダクションにElixirを採用している8企業」へのURLをピックアップ。
DiscodeもElixirを利用してたのですね。知らなかった。。。

serokell.io

備忘2:日本で Erlang/OTP や Elixir を利用している会社一覧

資料に載っていた、「日本で Erlang/OTP や Elixir を利用している会社一覧」へのURLをピックアップ。

https://github.com/voluntas/japanese-erlang-elixir-companies

発表2: とにかく動かす Nerves マシン(ホストは Mac

高知工科大学の菊池 豊氏の発表。
菊池氏は高知のElixirコミュニティ「kochi.ex」*3を主催されています。

www.slideshare.net

元々は、違う言語を使ってダムなどの施設で制御系IoTを使っていたようですが、もっと良いものがないかと探して、Elixir(Nerves)にたどり着かれたとのこと。
発表では、実際にNervesのプロジェクト作成/コード修正/SDカードへのプログラム書き込み/電子回路上のLED点灯までを実演してくださいました。

なお、実演中はコンソール画面の内容が多かったのですが、参加者の方々がそろって「良い景色だ」といったのは印象深かったです(笑

発表3: WindowsでElixir/Nervesやるならdevcontainerでしょ!

Seeed株式会社*4の松岡 貴志氏の発表です。
Seeed社といえば、Nervesでも利用できる「BeagleBone Green*5をはじめとして、ハードウェアオープンソースの商品を取り扱われている企業さんです。

松岡氏は高瀬氏からNervesを教えてもらい触り始められたそうです。
Nervesの情報(Qiitaなどの記事やブログ情報)では、MacLinuxの情報が大半を占めています。
そこで、Windows環境下でもNervesを使えるようにしてみた、という内容でした。

www.slideshare.net


Nervesの公式では、WIndowsでNervesを利用するにはWSL2を利用するなりVMLinuxをインストールしろ、的なことが書かれています。しかし、松岡氏は、VSSCodeとRemote Containersで対応したとのこと。

ただし、そのためには以下の準備が必要となるそうです。

  1. Win10のバージョン2004以降にする
  2. WSL2インストールする
  3. Docker Desctop for Windowsインストールし、WSL2と連携する
  4. VSCode+Remote Containersを設定し、動くようにする。

なお、Nerves用のdevcontainerは、以下のGitHubのプロジェクトをcloneして利用できるようです。

github.com

発表4: 令和二年なのにいまだに虎の子のRaspberry Pi 2に、ナウでヤングなNervesアプリをインストールして楽しむIoT?

Awesome Yamauchi氏の発表です。
Yamauchi氏は、2020年の「ElixirConf EU」でもLTをされたことがあるとか。外国のカンファレンスで実施とは、凄いの一言。

個人的には、TwitterやQiitaで利用されている「@torifukukaiou」側のお名前が先に浮かんできます。
Yamauchi氏は、QiitaにてElixr+IoTの記事を書かれていることが多く、記事の内容を読んで勉強させてもらうことも多いです。
https://qiita.com/torifukukaiou


さて、今回の発表内容は、ご自身がこれまで公開されてきた「Raspberry Pi 2」を利用したElixir(Nervesを含む)のIoTの例を紹介されました。


docs.google.com


余談ですが、Nervesの記事でよく見かける「ナウなヤングでクール」は、Yamauchi氏の発言がきっかけであるそうです。
※ちなみに、このお話の経緯は、以前に拙著「Elixirへのいざない2」のコラムに載せさせてもらいました。




発表5: Nervesでつくるウェブチカ

株式会社シティネットの西内一馬氏の発表です。
なお、「ウェブチカ」という言葉は聞いたことがなかったのですが、

ウェブチカとは、とあるURLにアクセスするとNervesにつけているLEDをチカらせることを言ってます

とのこと。

今回は、Nerves上でPhoenix Frameworkを動かし、Phoenix上で稼働しているWebアプリのURLにアクセスすることでLEDのon/offを実現した、という内容になってました。

speakerdeck.com

Nerves上でPhoenixFrameworkを稼働させる際には、"ポンチョプロジェクト"というプロジェクト構成にして、Phoenixを動作させるプロジェクトと電子回路などを操作するためのプロジェクトを同一階層に配置する必要があります。

ポンチョプロジェクト自体は試したことがるのですが、Web経由でLチカさせたことはなかったので、今度試してみようかなと思いました。

発表6: Elixir/Nervesで産業機器の制御にチャレンジ!

NervesJPの設立メンバでもあり、瀬戸内ROS勉強会やIoT ALGYAN岡山支部に携わっている、三宅 泰宏氏の発表。
三宅氏は、ラズパイコンテストで入賞もされていたかと記憶しています。

本業はとある製造業の生産技術を生業にされているとのこと。
仕事でのちょっとしたカイゼンに産業向け機器を用いるのは便利。
だけどちょっとお高い。
ならば、趣味でさわっているRaspbery Piで...というのがきっかけ。
センサーもGROVE Systemを活用したり自作されたりなどされた様子。
そして、それらを操作するためのプログラミング言語を探す過程で、「C#Pythonのように書きやすい」かつ「ラダーのように並列処理が書きやすい」ということでElixirへ辿り着いたとのこと。

speakerdeck.com

資料中の「Elixirで#RUN中書き込み"ができる」というのは、
どうやら刺さる人には刺さるそうです。

なお、こちらの資料でも、えりいざ本の紹介をしていただけました。
ありがとうございます。



まとめ

登壇者の方全員の発表後に、フリートーク的な時間がありました。
その際、高瀬氏が言われていた言葉が印象に残りました。*6

「Elixirを武道館に連れて行こうとは思っていない。Elixirと一緒に武道館に行こうぜ」


微力ながら、自分もElixirやNervesの力になっていこうと思います。

*1:ナーブス」と読みます。「ナーバス」でもいいけど、できれば前者のナーブスで読むと、コミュニティに喜ばれます

*2:https://nerves-jp.connpass.com/

*3:https://kochi-ex.connpass.com/

*4:https://www.seeed.co.jp/

*5:https://www.seeedstudio.com/Seeed-Studio-BeagleBoner-Green.html

*6:「ElixirやNervesを今後どうしていきたい?」の問いに対して「まずは仲間を増やしてコミュニティを活発にしていく」と回答。これに対して「Elixirを武道館へ連れてく?」といったコメントがつき、『武道館』を例にしての回答