Nervesな2019年を(極私的に)ふりかえる＋Why, Nerves??

この記事は「[NervesJP Advent Calendar 2019](https://qiita.com/advent-calendar/2019/nervesjp)」の25日目です

昨日は @piacerex さんの「[Nerves／Elixir／Phoenixによるエッジコンピューティングの可能性＋α](https://qiita.com/piacerex/items/ba30d9dfa0059902dc10)」でした

# はじめに

:tada::tada::tada:Very Merry Christmas!!:tada::tada::tada:

・・・・・・嘘です，５日も遅れてしまってスミマセンm(_ _)m

でもand a Happy New Year!!:rocket::rocket:には間に合いました．
本記事では，日本での<font color="red"><b>Nerves元年！</b></font>と呼ぶに相応しい２０１９年を，私情をふんだんに交えつつつふりかえります．

# Nervesってなにそれ？

「Nerves」は，関数型言語ElixirによるIoT開発フレームワークです．
RaspberryPiなどのIoTボード上で動作する最小構成のLinuxブートローダ＋Elixir実行環境＋各種デバドラのパッケージセットで，Elixir × IoTの文脈で最も活発なプロジェクトです．

過去記事もご参照くださいませ

- [ElixirでIoT#2.1：Nervesって何者？ラズパイでLチカできんの！？](https://qiita.com/takasehideki/items/94820516ec95b85bae32)

要するに，<b>[Nerves](https://nerves-project.org/)はElixirのIoTでナウでヤングなクールなすごいやつ</b>です

\# @torifukukaiou さんの[金言](https://qiita.com/torifukukaiou/items/19a6aef76e28f9a1f319#%E7%B5%90%E8%AB%96)を借りました^^;

<a href="https://nerves-project.org">
<img width="1044" alt="Nerves Projects" src="https://qiita-image-store.s3.amazonaws.com/0/240349/19c1518d-9b7b-e912-0063-7ff230beaa23.png"></a>

ここからめちゃ長くなります．
メンドい方は[最後のWhy, Nerves??](https://qiita.com/takasehideki/items/c11e03faf6701e233026#why-nerves)だけでも読んでいってください〜〜



# まずはちょっと遡って，，，Nervesとの出会い

私がNervesと出会ったのは，2018年5月頃です．
そもそもElixirに出会った（@zacky1972 先生に教えてもらった）のが2月末で，そこから4月に開催された[fukuoka.ex#8(福岡Elixir会)：2018年 春のElixir入学式](https://fukuokaex.connpass.com/event/85038/)にて，Web／エンタプライズ系が集まるMeetUpにIoTボードを持ち込んでライブデモさせるという，IoT芸人としての鮮烈な(？)デビューを飾った矢先でした．


<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">そういえばNerveプロジェクトってどうなってますっけ</p>&mdash; ラーメン大好きしろくまさん (@Kumappus) <a href="https://twitter.com/Kumappus/status/987311790731100160?ref_src=twsrc%5Etfw">April 20, 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

という感じでTwitterにて教えてもらったのが最初の出会いです．
なおこの時はIoTとはいえベタのLinuxカーネル環境上でElixir/Erlangをナマで動かして遊んでいただけです．詳しい内容はこのへんをご参照ください．

- Qiita記事: [ElixirでIoT#1：IoTボード上でのElixir/Phoenix環境構築と性能評価篇](https://qiita.com/takasehideki/items/8f43f1853ce88cbbe82e#elixir%E3%81%A7iot1iot%E3%83%9C%E3%83%BC%E3%83%89%E4%B8%8A%E3%81%A7%E3%81%AEelixirphoenix%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E3%81%A8%E6%80%A7%E8%83%BD%E8%A9%95%E4%BE%A1%E7%AF%87)
- SlideShare: [ElixirをIoTボードで動かしてみた ～ラズパイ・big.LITTLE・Zynq編～](https://www.slideshare.net/takasehideki/elixiriot-biglittlezynq-94455098)

それからとにかくNervesを触ってみました．
んで早々に[fukuoka.ex#11：DB／データサイエンスにコネクトするElixir](https://fukuokaex.connpass.com/event/87241/)に，IoTボードをまた携えて再登場ｗ

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ライブデモこれです。手ぶれ酷くてすんません。<br>温湿度センサと超音波センサの値をラズパイ3B＆GrovePi+で取得して、LCDに表示させつつWebページにもリアルタイム表示！もちろんすべてElixir/Phoenix！！ <a href="https://twitter.com/hashtag/fukuokaex?src=hash&amp;ref_src=twsrc%5Etfw">#fukuokaex</a> <a href="https://t.co/loGk3yZxzW">pic.twitter.com/loGk3yZxzW</a></p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1010117388174422016?ref_src=twsrc%5Etfw">June 22, 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

- Qiita記事: [ElixirでIoT#2.1：Nervesって何者？ラズパイでLチカできんの！？](https://qiita.com/takasehideki/items/94820516ec95b85bae32)
- SlideShare: [環境センシングとデータ表示をサクっと？やってみた](https://www.slideshare.net/takasehideki/elixiriot-2)

ぶっちゃけこの頃に抱いた第一印象は，「プログラミング言語を組込みな環境にも使いたいってやつねｗあるある〜ｗｗ でも(やっぱあ)ちょっとこなれてへんなぁ」くらいの感じでした．SlideShareのP.27にも当時の率直な感想が残っています．
（もう今となっては全力な土下座でゴザイマス

そこから[Elixir-lang Slack](https://elixir-slackin.herokuapp.com/)の #nerves チャンネルに参加してみたものの，ウォッチしているだけで流し読み，あんまりフォローしてない日々が続いたのが本音です．
そして時は流れ，，，


# 2月：Lonestar ElixirConf 2019に参加

[Elixirのカンファレンスは世界各地で様々に開催](https://github.com/elixir-lang/elixir/wiki/Conferences)されています．
[Lonestar ElixirConf](https://lonestarelixir.com/)は，そんなElixir Conference始まりの地であるAustinで毎年２月頃に開催されている，US, EUに続く３番目？の規模を誇るTech Confです．

これに参加したきっかけは @zacky1972 先生が，ElixirでGPU駆動しようぜ！なライブラリ・フレームワークであるHastega（現在は [Pelemay](https://github.com/zeam-vm/pelemay) に改称して研究開発が絶賛進行中！）の発表をするということで，その腰巾着のように着いて行きました^^;

- Zacky先生のブログ：[Austin で開かれた Lonestar ElixirConf 2019 にて Hastega の発表をしてきました。](https://zacky1972.github.io/blog/2019/03/02/Hastega.html)

いやぁ，今思い出してもZacky先生の発表の反響は凄まじかった！！

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">拍手の量で反響の凄さが分かる！！<a href="https://twitter.com/zacky1972?ref_src=twsrc%5Etfw">@zacky1972</a> 先生お疲れさまでした！！！ <a href="https://twitter.com/hashtag/fukuokaex?src=hash&amp;ref_src=twsrc%5Etfw">#fukuokaex</a> <a href="https://t.co/9fQOQWEhKa">pic.twitter.com/9fQOQWEhKa</a></p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1101969705282293760?ref_src=twsrc%5Etfw">March 2, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


ElixirConfには，本体の発表的なdayとは別に，ひとつのトピックに特化して丸一日の講習を実施するTraining Dayが設けられています．せっかくなのでIoTなTrainingだよね！ということで，Nerves co-authorのFrankとJustinによる ["Device to the Cloud with Nerves and NervesHub"](https://www.lonestarelixirconf.com/2019/trainers/7#frank-hunleth) を選択したわけです．


<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">このtrainingに参加です<br>Device to the Cloud with Nerves and NervesHub<a href="https://t.co/c3OKSiyiOq">https://t.co/c3OKSiyiOq</a><br><br>世界的にもみんな大好きIoT，知見を持ち帰って <a href="https://twitter.com/hashtag/fukuokaex?src=hash&amp;ref_src=twsrc%5Etfw">#fukuokaex</a> とかで共有できるようにがむばります！</p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1101120951184515072?ref_src=twsrc%5Etfw">February 28, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">こんな感じ<br>ラズパイ0とOLEDBonnetを使ってます <a href="https://twitter.com/hashtag/fukuokaex?src=hash&amp;ref_src=twsrc%5Etfw">#fukuokaex</a> <a href="https://t.co/d1K07kAxV9">pic.twitter.com/d1K07kAxV9</a></p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1101149230998147074?ref_src=twsrc%5Etfw">February 28, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

そしてConference本体のKeynoteもガッツリと聴講

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">始まりました！最初のkeynoteは(昨日に引き続きの)NervesなJustin!! <a href="https://twitter.com/hashtag/fukuokaex?src=hash&amp;ref_src=twsrc%5Etfw">#fukuokaex</a> <a href="https://t.co/IvZFthDcxy">pic.twitter.com/IvZFthDcxy</a></p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1101502289263632385?ref_src=twsrc%5Etfw">March 1, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

結果的にこの機会が転換点でしたね．もう:hammer:でドタマぶん殴られた衝撃でした！

Lonestarは実はローカル色風味なConferenceではあるのですが，そこに日本人がやってきた！！？というのが功を奏したように思えます．
なぜ（三銃士でｗ）やってきた？？GPUとか面白いコト言ってるのは誰だ！？IoTとかNervesとかめっちゃ調べてるやん！？
FrankやJustin，GregにToddにChrisなどなど，多くのNerves Friendsとの出会いが非常に貴重なモノとなりました．

# 4月：fukuoka.exにて参加報告

[fukuoka.ex#21：Lonestar Elixir Conf 2019報告＋世界デビュー祝](https://fukuokaex.connpass.com/event/125433/)にて，Lonestarの参加報告をしました．

「ElixirでIoT」が世界でどんなコトになっているのか？
「Nerves」が拓くElixirでのデバイスコントロールを総レビューして紹介しました．

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Nervesめっちゃウケたぞーうおーー！！ <a href="https://twitter.com/hashtag/fukuokaex?src=hash&amp;ref_src=twsrc%5Etfw">#fukuokaex</a><br>日本全国津々浦々どんどんTrainingやってきたいと思ってますので，お気軽にお声がけどうぞ〜<br>ということでスライドこちら<a href="https://t.co/MzGnToNqqP">https://t.co/MzGnToNqqP</a></p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1118474335327440896?ref_src=twsrc%5Etfw">April 17, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

次の項にも被るんで，カッツアイ:cat:

# 6月：Erlang & Elixir Fest 2019にて登壇・日本初のNerves旋風？？

Austinで受けたこの衝撃とNerves Friendsからの恩を，日本に広めねばっ！ということで，，，
帰国早々に[Erlang & Elixir Fest 2019](https://elixir-fest.jp/)へProposalを出したわけです．

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Erlang &amp; Elixir FestにはNervesネタでProposalを出すことに決めた<br>こんなにお手軽にIoT開発が出来るQuick Demo，Nervesが目指していることと最新の現状，Lonestar ElixirConfで感じ取った世界の潮流，，，<br>これを日本に広めるのが私のミッションと勝手に自負することにした^^; <a href="https://twitter.com/hashtag/fukuokaex?src=hash&amp;ref_src=twsrc%5Etfw">#fukuokaex</a> <a href="https://twitter.com/hashtag/kyotoex?src=hash&amp;ref_src=twsrc%5Etfw">#kyotoex</a></p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1102181750610878465?ref_src=twsrc%5Etfw">March 3, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Erlang &amp; Elixir Fest 2019で講演させていただきます<br>『Nervesが開拓する「ElixirでIoT」の新世界』<br><br>ElixirでIoTつくっちゃおうぜっ！という心意気でこのところ話題沸騰！？（高瀬調べ）なNervesについて語り尽くします！！ <a href="https://twitter.com/hashtag/elixirfestjp?src=hash&amp;ref_src=twsrc%5Etfw">#elixirfestjp</a> <a href="https://twitter.com/hashtag/fukuokaex?src=hash&amp;ref_src=twsrc%5Etfw">#fukuokaex</a> <a href="https://twitter.com/hashtag/kyotoex?src=hash&amp;ref_src=twsrc%5Etfw">#kyotoex</a><a href="https://t.co/B4cvAFzLzb">https://t.co/B4cvAFzLzb</a></p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1122094515467145216?ref_src=twsrc%5Etfw">April 27, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/elixirfest?src=hash&amp;ref_src=twsrc%5Etfw">#elixirfest</a> での発表資料です！<a href="https://twitter.com/LonestarElixir?ref_src=twsrc%5Etfw">@LonestarElixir</a> 2019で学んできた <a href="https://twitter.com/NervesProject?ref_src=twsrc%5Etfw">@NervesProject</a> の革新性について，ハンズオンをたっぷり交えてご紹介しました！<a href="https://t.co/6yO3BgJoTG">https://t.co/6yO3BgJoTG</a></p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1134648499117551616?ref_src=twsrc%5Etfw">June 1, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ご存知の通り，日本でもElixirの知名度は急速に高まっており，企業での実例としての活用も広がっています．でもWebアプリやサーバ系での採用ばかりなのが，もちろん良いこと！ではありますが，IoT芸人ｗとしては歯痒いところです．
この登壇をきっかけとして，デバイス開発でもElixir使えるぜっ！てなところへの風穴は開けられたんじゃないかと信じています．

# 5-10月：Nerves Trainingを各地で開催！

Elixir/Erlang界隈で国内でのNervesの知名度はグングン上がってきましたが，ただ話しを聴いてもらうだけではそれまでです．実際にデバイスを使って開発してもらえれば，さらにその革新性を分かってもらえるはずです．
という仕掛けのために，Nerves Trainingを全国行脚しました！

実施した内容は下記のとおりです
　|> Elixir.Circutisによる外部デバイスの制御
　|> NervesによるIoT開発の基礎
　|> NervesHubによるデプロイ
　|> Scenic連携によるUI操作
　|> Phoenix Channels連携によるゲーム開発

Lonestarで実施されていたTraining内容を，FrankとJustinのご好意によって譲り受けました．改めて感謝！
ちなみに，クラウドサービスであるNervesHubを介したOTAデプロイを体験するためには[NervesKey](https://www.tindie.com/products/troodonsw/nerveskey/)という暗号回路が必要ですが，この副産物として日本からでも購入できるようになったり（ @kikuyuta 先生に感謝！


実施したスケジュールと案内はコチラ
　|> [kochi.ex @ 05/28](https://kochi-ex.connpass.com/event/133124/)
　|> [kyoto.ex @ 06/16](https://kyotoex.connpass.com/event/133813/)
　|> [fukuoka.ex @ 07/06](https://fukuokaex.connpass.com/event/133408/)
　|> [tokyo.ex/beam-lang.tokyo @ 07/21](https://beam-lang.connpass.com/event/134206/)
　|> [SWEST21 @ 09/06](https://swest.toppers.jp/SWEST21/program/s2d.html#s2)
　|> [Sapporo.beam @ 10/05](https://sapporo-beam.connpass.com/event/141846/)


![nervestraining.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240349/98b17bd9-3451-6142-14ca-efbf61ab0550.jpeg)

延べ60人以上がこのTrainingを受講してNervesデビューを飾りました．すごくない？？

いろいろな地域で受け入れていただき，会場手配や提供などなどご協力いただいた方には大感謝でっす！！
（あと各地での美味いお酒とご馳走をありがとうございました^^;

ただちょっとこのTraining内容は分量が多いのとElixirワカル系な方向けなので，独自コンテンツを整備しないといけないなと思う今日この頃です．

# 8月：ElixirConf US 2019へ参加

Elixirのビッグイベント，[ElixirConf US 2019](https://elixirconf.com/2019)に参加しました！

Nervesの進化について，また改めて衝撃を受けたワケです．
次の項にも繋がりますが，JustinのJapan Tourの前哨戦でもありました！

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Justin <a href="https://twitter.com/mobileoverlord?ref_src=twsrc%5Etfw">@mobileoverlord</a> will come to ElixirConf JP!<br>We believe <a href="https://twitter.com/NervesProject?ref_src=twsrc%5Etfw">@NervesProject</a> brings revolution to Japanese industry!! <a href="https://twitter.com/hashtag/ElixirConf2019?src=hash&amp;ref_src=twsrc%5Etfw">#ElixirConf2019</a> <a href="https://t.co/v2BZQBeryr">pic.twitter.com/v2BZQBeryr</a></p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1167567994953719808?ref_src=twsrc%5Etfw">August 30, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

なお私もSpeakerデビューしたのですが，それはまた別の話しということで，，，

# 9月：Justinが日本にやってきた！

Erlang & Elixir Fest登壇や全国各地のNervesTrainingなど，日本でのNerves普及にいろいろやってきました．
でも開発者みずからの熱いpassionを伝えたい！ということで，Nerves Project co-authorのひとりであるJustin Schneck氏を日本にお呼びしちゃいました！！

1週間で京都→岐阜(下呂)→小倉と周る強行スケジュールだったのですが，
We are Engineers!! という言葉から始まるプレゼンを，kyoto.ex，SWEST21，ElixirConf JPと3回やっていただき，それぞれ強いインプレッションを与えてもらいました．

これまでElixir/Erlang界隈には訴求してきましたが，組込み界隈にも広めるべき，Nervesは革新的なフレームワークと考えています．
高瀬はちょうど[SWEST（組込みシステム技術に関するサマーワークショップ）](https://swest.toppers.jp/)という<strike>呑み会</strike>イベントのプログラム委員長を務めていました．この機会を逃すまじ！ということで，大博打に出たわけです．

ここで長くを語るよりは，，，SWEST21におけるJustinの講演動画をYouTubeにアップしてますのでご参照ください！！
https://www.youtube.com/watch?v=JstWMMVFS8c

[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/JstWMMVFS8c/hqdefault.jpg)](http://www.youtube.com/watch?v=JstWMMVFS8c)


写真や長いながーいメッセージは，[Facebookへの投稿](https://www.facebook.com/takasehideki/posts/2420170811408455)をご参照くださいませm(_ _)m

[![facebook.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240349/0ead553d-05f5-bcee-14f5-294e72b94d14.jpeg)](https://www.facebook.com/takasehideki/posts/2420170811408455)

# 9月：NervesJP発足！

Justinが[ElixirConf JP 2019](https://fukuokaex.connpass.com/event/138846/)でEmotionalな最後の講演を終えたその夜，@kikuyuta センセと @myasu さんとで盛り上がり，日本でのNervesなグループを立ち上げることになりました！

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Big news!<br>I and <a href="https://twitter.com/etcinitd?ref_src=twsrc%5Etfw">@etcinitd</a> have established the <a href="https://twitter.com/hashtag/Nerves?src=hash&amp;ref_src=twsrc%5Etfw">#Nerves</a> Users Group in Japan today. This is the first <a href="https://twitter.com/hashtag/Nerves?src=hash&amp;ref_src=twsrc%5Etfw">#Nerves</a> users group in the world. <a href="https://twitter.com/mobileoverlord?ref_src=twsrc%5Etfw">@mobileoverlord</a>, <a href="https://twitter.com/zacky1972?ref_src=twsrc%5Etfw">@zacky1972</a>, and <a href="https://twitter.com/TAKASEhideki?ref_src=twsrc%5Etfw">@TAKASEhideki</a> are the witnesses.<br>If you want to join us, please do not hesitate to contact us.<a href="https://twitter.com/hashtag/ElixirConfJP?src=hash&amp;ref_src=twsrc%5Etfw">#ElixirConfJP</a></p>&mdash; KIKUCHI Yutaka 🌒 菊池 豊 (@kikuyuta) <a href="https://twitter.com/kikuyuta/status/1170331065564614656?ref_src=twsrc%5Etfw">September 7, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ということで勢いで， <a href="https://twitter.com/NervesProject?ref_src=twsrc%5Etfw">@NervesProject</a> Users Group in Japanが設立されました〜<br>日本語でおけですオンラインでやりましょう．ぜひご参加をば！！ <a href="https://twitter.com/hashtag/ElixirConfJP?src=hash&amp;ref_src=twsrc%5Etfw">#ElixirConfJP</a> <a href="https://twitter.com/hashtag/fukuokaex?src=hash&amp;ref_src=twsrc%5Etfw">#fukuokaex</a> <a href="https://twitter.com/hashtag/kochiex?src=hash&amp;ref_src=twsrc%5Etfw">#kochiex</a> <a href="https://twitter.com/hashtag/kyotoex?src=hash&amp;ref_src=twsrc%5Etfw">#kyotoex</a> <a href="https://twitter.com/hashtag/tokyoex?src=hash&amp;ref_src=twsrc%5Etfw">#tokyoex</a> <a href="https://twitter.com/hashtag/okayamaex?src=hash&amp;ref_src=twsrc%5Etfw">#okayamaex</a> <a href="https://twitter.com/hashtag/SWEST21?src=hash&amp;ref_src=twsrc%5Etfw">#SWEST21</a><a href="https://t.co/hCWkJqh9oW">https://t.co/hCWkJqh9oW</a></p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1170348241784692736?ref_src=twsrc%5Etfw">September 7, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

『[NervesJP](https://nerves-jp.connpass.com/)』とは，
Elixir/Nervesをもっと知りたい方，Nervesでなんか作ってみたい方，Nerves Projectに貢献したい方，そんなコミュニティです．

[![NCJP_Logo1_V1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240349/a4c2e825-fb18-018b-9e56-051e43b1c29d.png)](https://nerves-jp.connpass.com/)

副題は "Nerves Community in Japan" です．
日本語でやり取りできる場所としつつ，ただ "User Group" になるだけじゃなくて，日進月歩で進化しているNervesにどんどんcontributionしていこう！という意図を込めています．

ロゴはオリジナルの右側を赤い点にしました．
オリジナルNerves Logoは，IoTよろしくデバイスが繋がる様子だけでなく，世界中のヒトが繋がっていくことと解釈しています．
そこに世界から東側の日本も繋がっていくぜ！という意図を加えてみました．（クールなデザインをしてくれた @myasu さんに多謝！！

２〜３週に１回程度，基本はオンラインで開催しています．
connpassとSlackで主に動いていますので，気になった方はれっつじょいなす！！

- connpass: https://nerves-jp.connpass.com/
- [Slack 招待URL](https://nerves-jp.slack.com/join/shared_invite/enQtNzc0NTM1OTA5MzQ1LTg5NTAyYThiYzRlNDRmNDIwM2ZlZTJiZDc1MmE5NTFjYzA5OTE4ZTM5OWQxODFhZjY1NWJmZTc4NThkMjQ1Yjk)

# 11月：IoTつくるよ！に出展

[IoTつくるよ！２](https://www.tsukuruyo.net/)というイベントに，NervesJPとして初出展しました！

> 「IoT つくるよ！」は、さまざまな分野の人が日頃のものづくりを発表し、交流するものづくり博覧祭です。

@myasu さんが[NervesのFA応用を目指して開発されているGroveボード](https://qiita.com/myasu/items/cd173547da7616fdf359)を展示されたり， 
@torifukukaiou さんが開発されていた[Web天気予報と連動したTwitter自動投稿bot](https://qiita.com/torifukukaiou/items/6096c201fbb013e65baa)を展示させてもらったり，
@shaga さんの設計されているGroveインタフェース拡張ボードである[Nerves Training Add-on Board](https://qiita.com/shaga/items/8f93c347ba3f1dd43638)を展示させてもらったり，
[みずりゅ](https://twitter.com/MzRyuKa)さんが技術書典７で頒布されていた[えりいざ本（PhoenixLiveViewとNervesをさわるElixirへのいざない）](https://mzryuka.booth.pm/items/1562654)を置かせてもらったり，
高瀬も[Omni_Eye (Nerves Camera)](https://github.com/GregMefford/omni_eye)を展示したり[BeagleBoneで動くよ！](https://qiita.com/takasehideki/items/e7cc1a2d0a4a7140c1cf)を仕込んだり，とっても楽しい１日でした！

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">というコトで今日これ<br>やっと設営完了！ <a href="https://twitter.com/hashtag/NervesJP?src=hash&amp;ref_src=twsrc%5Etfw">#NervesJP</a> <a href="https://twitter.com/hashtag/ALGYAN?src=hash&amp;ref_src=twsrc%5Etfw">#ALGYAN</a> <a href="https://twitter.com/hashtag/%E3%81%A4%E3%81%8F%E3%82%8B%E3%82%88?src=hash&amp;ref_src=twsrc%5Etfw">#つくるよ</a> <a href="https://t.co/ZxmCQyGkCH">https://t.co/ZxmCQyGkCH</a> <a href="https://t.co/kMcCkw7lXs">pic.twitter.com/kMcCkw7lXs</a></p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1200604732953202688?ref_src=twsrc%5Etfw">November 30, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr"><a href="https://t.co/fYvkULpFv7">https://t.co/fYvkULpFv7</a>さんのブース。<br>本日の目的の一つ。<br>ラズパイ制御をElixirに置き換えられるかもと考えるとワクワクします。<br><br> <a href="https://twitter.com/hashtag/ALGYAN?src=hash&amp;ref_src=twsrc%5Etfw">#ALGYAN</a> <a href="https://t.co/40DnYQIOdM">pic.twitter.com/40DnYQIOdM</a></p>&mdash; みずりゅ（技術書典8は2日目：しがないラジオsp65出演しました。） (@MzRyuKa) <a href="https://twitter.com/MzRyuKa/status/1200620566190837760?ref_src=twsrc%5Etfw">November 30, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr"><a href="https://t.co/fYvkULpFv7">https://t.co/fYvkULpFv7</a>さんのブースにて。<br>もともとはPythonでかかれていたものを急遽Elixirに置き換えてみたとのこと。<a href="https://twitter.com/hashtag/algyan?src=hash&amp;ref_src=twsrc%5Etfw">#algyan</a> <a href="https://twitter.com/hashtag/%E3%81%A4%E3%81%8F%E3%82%8B%E3%82%88?src=hash&amp;ref_src=twsrc%5Etfw">#つくるよ</a> <a href="https://t.co/SNd3qqvptW">pic.twitter.com/SNd3qqvptW</a></p>&mdash; みずりゅ（技術書典8は2日目：しがないラジオsp65出演しました。） (@MzRyuKa) <a href="https://twitter.com/MzRyuKa/status/1200621333060603904?ref_src=twsrc%5Etfw">November 30, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">【B-3】NervesJP「IoT systems powered by Nerves」<a href="https://twitter.com/hashtag/ALGYAN?src=hash&amp;ref_src=twsrc%5Etfw">#ALGYAN</a> <a href="https://twitter.com/hashtag/%E3%81%A4%E3%81%8F%E3%82%8B%E3%82%88?src=hash&amp;ref_src=twsrc%5Etfw">#つくるよ</a> <a href="https://t.co/HFJ5TR3M6S">pic.twitter.com/HFJ5TR3M6S</a></p>&mdash; ALGYAN (@IOT_ALGYAN) <a href="https://twitter.com/IOT_ALGYAN/status/1200686478474412033?ref_src=twsrc%5Etfw">November 30, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">捲くり喋り倒しました〜<br>資料コチラ！ <a href="https://twitter.com/hashtag/NervesJP?src=hash&amp;ref_src=twsrc%5Etfw">#NervesJP</a> <a href="https://twitter.com/hashtag/%E3%81%A4%E3%81%8F%E3%82%8B%E3%82%88?src=hash&amp;ref_src=twsrc%5Etfw">#つくるよ</a> <a href="https://twitter.com/hashtag/ALGYAN?src=hash&amp;ref_src=twsrc%5Etfw">#ALGYAN</a> <a href="https://t.co/wVx62bE14Z">https://t.co/wVx62bE14Z</a> <a href="https://t.co/AkzR2ZWJTX">https://t.co/AkzR2ZWJTX</a></p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1200645440884002817?ref_src=twsrc%5Etfw">November 30, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


出展を提案してくれた @myasu さんには大感謝です
そしてコミュニティのチカラを感じた次第ですね．機会を見つけてどんどんやっていきたいと思っています．

# 12月：Advent Calendarに参加！

NervesJPメンバを中心として，Advent Calendarに参加するという賭けに出ました！

- [#NervesJP Advent Calendar 2019](https://qiita.com/advent-calendar/2019/nervesjp)

なぜ賭けだったかというと，始めるときは正直言って埋まるとは全く思えなかったんですよね，，，
普及活動いろいろやってきましたが，そこまで広まっているのか，何を隠そう私自身がいちばん疑心暗鬼でしたｗｗ

それが蓋を開けてみると，，，

[![ac.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240349/a765662b-5dab-733d-ac60-2cd638897a41.jpeg)](https://qiita.com/advent-calendar/2019/nervesjp)


なんと全日の記事投稿を達成！！
内容も，とにかくNerves使ってみたからこんなん作ってみたよ！触ってみて分かった色々なTips，Nervesでこんな将来できるんじゃない？のポエムまで，様々な技術ノウハウの蓄積がなされました！
Advent Calendarに参加いただいた皆さまには大感謝であります！

そしてなんと！
途中経過では[「IoT・ハードウェア」部門](https://qiita.com/advent-calendar/2019/ranking/feedbacks/categories/iot)のいいね数順１位を獲得！！
\# 最終結果はみんな大好き[obniz](https://qiita.com/advent-calendar/2019/obniz)にまくられましたが^^

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">どう考えてもこの並びでコレはなにかの間違いだとは思うんですが，途中とはいえ記念ということで，魚拓してみておきます^^; <a href="https://twitter.com/hashtag/NervesJP?src=hash&amp;ref_src=twsrc%5Etfw">#NervesJP</a> <a href="https://t.co/ZXHJZiTiUE">https://t.co/ZXHJZiTiUE</a> <a href="https://t.co/nbTHYLlKBm">pic.twitter.com/nbTHYLlKBm</a></p>&mdash; TAKASE hideki (@TAKASEhideki) <a href="https://twitter.com/TAKASEhideki/status/1208803022261800960?ref_src=twsrc%5Etfw">December 22, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">アドカレのランキング見ると何が人気か分かるね。やっぱりM5Stackとobnizあたりは扱いやすいから人気なんだろうなー。<a href="https://t.co/T6MHtTJSIh">https://t.co/T6MHtTJSIh</a> <a href="https://t.co/qJ5thzkcEi">pic.twitter.com/qJ5thzkcEi</a></p>&mdash; Katsu Shun (@katsushun89) <a href="https://twitter.com/katsushun89/status/1209677092742254593?ref_src=twsrc%5Etfw">December 25, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Nervesも扱いやすいよっ！

やはり２０１９年は，日本での<font color="red"><b>Nerves元年！</b></font>になりましたねっ！


# Why, Nerves??

Qiitaは技術的なことも触れないと・・・なので，なぜNervesが良いのか持論を展開してみたいと思います．

## 堅牢なIoTデバイスを開発できる

Nervesの下回りはElixir，そしてさらにその下回りはもちろんErlang VMで動きます．Erlangは電話交換機向けに開発された由来のとおり，高い堅牢性（耐障害性）と同時接続要求に応えうる並列性能を誇ります．
NervesにはネイティブなErlang VMがほぼそのまま搭載されており，OTP機能も大部分を活用することができます．つまりErlangのもたらす貢献をIoTデバイス開発でもそのまま享受できるわけです．例えば，プロセスごとに軽量なメモリ管理ができますし，プロセス単位での障害復旧もできるわけです．
なお，NervesではBuildroot由来のLinuxカーネルを採用しています．このため，必要最小限のカーネル機能とモジュールのみをコンフィギュレーション指定して，カーネルビルドすることが出来ています．

さらにNervesは，ブートローダとファイルシステム（rootfs）の領域が，A/Bと２領域もつ構造を取っています．システム全体として二重化されているわけです．
これによって，A領域でアプリが動作している場合にシステム全体がハングアップしてしまっても，B領域に動作をすぐに遷移させてシステム実行を継続できる仕掛けがあります．そしてその間にA領域の障害を復旧することになります．っよぃ．
この２領域構成がもたらすもう１つの貢献として，A領域での実行中に，新しいファーム・アプリをB領域に展開してアップデートする仕組みも持っています（B領域への展開完了後にシステムリセットして起動，起動後にB領域のイメージをA領域にコピーして二重化が保たれます）

## アプリが書きやすい！

IoTデバイスのアプリの開発はもちろんElixirで行います．
Elixirの良さとしてはもちろん記述容易性ですよね．Rubyを参考にした言語設計になっていて，スクリプト言語っぽく関数型言語のプログラミングを実現できます．モジュールと関数を定義してそれらを組み合わせていくことで，いつの間にやらオブジェクト指向なプログラミングも実現できます．

Nervesでは，Elixirの文法やさらに各種ライブラリをそのまま使えます．特にBinary操作とパターンマッチは，ビット操作の多い組込み開発では有用になります．イミュータブル性も組込みデバイスの開発に活きる重要な特性です．描画ライブラリScenicやWebフレームワークPhoenixの活用も役立つことでしょう．
ツールチェーンが綺麗に整備されています．mixコマンドによってNervesアプリの開発ができます．つまり，プロジェクトの新規作成やビルド，依存関係の管理など，通常のElixirと同様の開発手法で進めることができます．

細かいデバイスドライバの開発なんかはCやRust等のベアメタル言語との連携も必須ではあります．
ただしElixir Circuitsでたいていの通信プロトコルは整備されていますし，いったんデバドラを開発・公開すれば使い回しも容易です．言い方をかえれば，言語ごとの特性と長所を活かしあって使い分けすればいいだけです．


## NervesHubがカッコイイ！

NervesHubとは，クラウドサーバ越しにIoTデバイスのファーム・アプリをアップデートする仕組みです．つまりアプリの新規更新を，デバイスに物理的に接続することなく，どこにあるデバイスでも，自由に行うことができます！この仕組みがとっても素晴らしい！！

OTA技術は他のフレームワークでも実現されていますが，ここまでcoolに実現できているものはNerves以外に知りません．
ネットワークとなるとセキュリティが気になるところですが，X.509認証とNervesKey回路の技術によってきちんと担保されます．
\# この辺りの記事もきちんと書かないとなぁ^^;


## IoT"システム"の開発がElixirだけで出来る！

IoTってITの総合格闘技なんですよ！
本記事でも触れていますが，WebフレームワークPhoenixの人気によって，Elixir/Erlangはサーバ・エンタプライズ分野ではすでに多くの事例があります．
NervesでもPhoenixはChannel/PubSub通信などもちろん使えますので，つまりクラウドやサーバとの連携が容易になります．つまりIoTシステム全体の開発が，１つのプログラミング言語Elixirで実現できるようになります！！

ただし，性能面はカナリ気になるところではあります．
この辺りはZacky先生のPelemayやウチで研究開発を進めているCockatriceも支援できるように頑張りたいところです．
また，特に組込みまわりでは気になるリアルタイム性については，ウチで評価や研究を進めていますので，また追って紹介したいなぁと思っています．

![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F155423%2F251663cd-190f-7164-8f97-ac65758d13f4.png?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&s=4e1a97d55d227c1e36798352cdbd3d24)


# 2020年はどうなる？どうする？？

インパクトを巻き起こすのも難しいですが，これを継続していくのも大変です．極私的な来年の所信表明を記すことします．

- Nervesの良さをもっと広めていくぞ！
    - 記事とか技術書の執筆も！？？
    - [NervesJP](https://nerves-jp.connpass.com/)の同志をもっと増やす！300名に！！（現在はconnpassで72名，Slackで40名です）
    - Maker Faire出展！？？
- JPオリジナルなNerves Trainingをやるぞ！
    - 2019年に開催したNerves Trainingは，Elixir初見にも組込み初見にもツラいですし，なにより分量が多いんですよね，，，
    - よりElixir/Nervesの楽しさが始められるようなコンテンツ作りを準備中です．Grove対応なAdd-on Boardを活用予定！
    - その折には，全国の皆さままたご協力とご参加を〜
- [hard mode] 日本でのNervesの「実例」をつくるぞ！
    - ホビー層にはウケてます，これはとても大事です．
    - でも，実際のIoTサービス製品や産業製品にNervesが使われた！となったら，その衝撃ヤバくないですか？？
    - ご興味のある企業様や技術者の方，いませんか？？高瀬はacademiaとしても全力でサポートします！！

来年もAdvent Calendarやりましょう！いろいろ作っていきましょう！
というところで，良い年をお迎えください〜〜