Nerves 大好きな僕が2022年にやったこと

前日は @takasehideki の「NervesJPの2022年を（たぶん）ふりかえる」でした！

---

怒涛の勢いで2022年が終わろうとしています。みなさま、いかがお過ごしですか？
今年は仕事が12月中旬で一段落したので、落ち着いて記事を書いています。
（一段落後にコロナにかかって辛い日々がありました
（Number Girl の二度目の解散ライブに参加できなかったことは痛恨の極みです

去年のNervesアドベントカレンダーでは、「[Nerves大好きな僕が2021年にしたこと](https://qiita.com/pojiro/items/30b6ef01c32882fc7c19)」という記事を書きました。
今年はそのタイトルままに2022年版を書こうと思います。

あいかわらず Nerves 大好きであることは変わっていないので、毎年このタイトルで更新できればいいなと思っています。

2022年も、大好きな Nerves に以下の活動をしてきました。

- 活用する
- コントリビュートする
- 布教（Nervesいいぜ！と紹介）する

本記事ではその活動について書いてみます。

---

# 時系列できごと

以下のことをしてきました。

- 01月
  - ALGYAN, 「[OSSでガチにプロダクト開発！実状紹介セミナー！](https://algyan.connpass.com/event/232035/)」で以下のタイトルで発表
    - 「[OSSを全面利用して商用プロダクトを作る](https://speakerdeck.com/pojiro/osswoquan-mian-li-yong-siteshang-yong-purodakutowozuo-ru)」
  - [NervesJP #22 新年LT回](https://nerves-jp.connpass.com/event/234191/)
- 02月
  - [NervesJP #23 2月18日 mix upload ライブ調査回](https://nerves-jp.connpass.com/event/236900/)
  - [nerves_system_stm32mp157c_odyssey](https://github.com/b5g-ex/nerves_system_stm32mp157c_odyssey) のポーティング
    - Nerves ポーティングをお仕事として受託し、実施しました。
- 03月
  - [【YouTube配信決定！】特別編WEB+DB PRESS Phoenix特集こたつで座談会](https://nerves-jp.connpass.com/event/240173/)
    - fukuoka.ex との合同（？）で @takasehideki が参加されていました。 @pojiro は協力できず。
- 04月
  - [NervesJP #24 GRiSP 2ボードをイゴかしてみる回](https://nerves-jp.connpass.com/event/245699/)
- 05月
  - [NervesJP #25 #kochiex がなんかええもんつくったらしい回](https://nerves-jp.connpass.com/event/247904/)
  - [Circuits.UART](https://github.com/elixir-circuits/circuits_uart) を使った装置シミュレータの作成
- 06月
  - [NervesJP #26 Nerves tips, /bin/sh & nerves_heart](https://nerves-jp.connpass.com/event/251185/)
- 07月
  - [NervesJP #27 MNishiguchiさんCore Teamにjoin記念！！LT回！！](https://nerves-jp.connpass.com/event/252692/)
  - Pocket LANcher で使用している NervesHub のバージョンアップ
    - 上記作業中に見つけたバグを２つ修正, https://github.com/nerves-hub/nerves_hub_web/releases/tag/v1.0.3
- 08月
  - [NervesJP #28 夏休みにNervesでこんなんやってみましたLT回！！](https://nerves-jp.connpass.com/event/257021/)
- 09月
  - [NervesJP #29 Nervesでサイネージ？ 描画ライブラリScenic紹介](https://nerves-jp.connpass.com/event/260256/)
  - [SWEST24](https://swest.toppers.jp/) で協賛企業デモ展示「Nervesを利用した商用製品『Pocket LANcher』の紹介」をしました。
- 10月
  - [NervesJP #30 LivebookでNervesハンズオン！する回](https://nerves-jp.connpass.com/event/261408/)
- 11月
  - [NervesJP #31 Code BEAM America 2022に行ってきた回](https://nerves-jp.connpass.com/event/265627/)
  - [Rclex](https://github.com/rclex/rclex) の [Nerves 対応](https://hexdocs.pm/rclex/use_on_nerves.html)に貢献しました。
- 12月
  - [NervesJP #32 アドベントカレンダーの記事を見て回る！回](https://nerves-jp.connpass.com/event/267869/)
  - [nerves_system_kr260](https://github.com/b5g-ex/nerves_system_kr260) のポーティング
    - Nerves ポーティングをお仕事として受託し実施しました。

この時系列をふりかえりつつ、書いていきます。

# 活用する

昨年に引き続き

* Nerves を移植
* Nerves 対応
* Nerves を使った製品の運用

をしました。Nerves を継続してさわり続けているので Nerves に対する理解は深まっていっています。 yey!!

## Nerves の移植

[nerves_system_f3rp70](https://github.com/pojiro/nerves_system_f3rp70) をポーティングしたのが 2021 年でしたが、そのことを発表したことがお仕事につながり、 2022 年は以下の２つのポーティングをお仕事としてさせていただくことができました。

* [nerves_system_stm32mp157c_odyssey](https://github.com/b5g-ex/nerves_system_stm32mp157c_odyssey)
  * Cortex-A7 と Cortex-M4 が載るボードで A7 側で Nerves が動作します。 M4 との協調動作もできるはずなので、活用が楽しみなボードです。

https://github.com/b5g-ex/nerves_system_stm32mp157c_odyssey

* [nerves_system_kr260](https://github.com/b5g-ex/nerves_system_kr260)
  * Xilinx の Kria K26 が載るボードです。 FPGA にアクセラレータをロードさせることができるよう [dfx-mgr](https://github.com/Xilinx/dfx-mgr) も Nerves システムに取り込んでいます。 FPGA が使いこなせる人には面白い Nerves になっていると思います！

https://github.com/b5g-ex/nerves_system_kr260

## Nerves 対応

ROS 2 クライアントの Elixir 版として @takasehideki がメンテナーの [Rclex](https://github.com/rclex/rclex) があります。

https://github.com/rclex/rclex

この Rclex の Nerves 対応（ Nerves 上での動作をできるようにする）にコントリビュートしました。

Nerves で ROS 2 クライアントが使えるメリットは、

* ロボットにも必要と考えられる電断対策が自動的に施されること
* ファームウェアサイズが小さくできる（ROS 2 をまま使おうとすると Ubuntu が必要で大きくなる）
* Elixir プロジェクトでソフトウェアのパッケージ管理ができる
* Elixir 言語機能の強みである並行・耐障害性のあるプログラムを実装することができるようになる

など、Nerves が備えるメリットをロボット開発で享受できるようになることです。

この成果はFA設備技術勉強会でも発表されています。

https://twitter.com/takasehideki/status/1604043248020131841

Rclex の Nerves 対応により、ロボット分野での Nerves 活用に道が開けたかもしれません。
これからが楽しみです♪

## Nerves を使った製品の運用

2021年にリリースした Pocket LANcher はビジネスとしては好調とはいいがたいです。

https://www.pocket-lancher.com/

しかしながら、 「Pocket LANcher の開発で培った技術」が 2022 年の Elixir/Nerves の仕事につながり、そしてその仕事の中でとても活かすことができました。

また、Pocket LANcher 向けにカスタムしているNerves, Nerves Hub のバージョン追従作業も継続して行うことができており、運用を通して多くのことが学べています。

展示・営業ができていないという課題を感じているので 2023 年はどのように取り組んでいくか考え実践していく必要があります。

これからもお客様に安定したサービスとして継続利用いただけるよう運用してまいります🦾

# コントリビュートする

2022 年は体感として、あまり「時間」でコントリビュートできませんでした。その体感が正しいかをデータで見てみます。

## 時間

### PR

PR は 9 つ。開発・運用の中で気づいたことを PR にしました。
2021 年末の意気込みの割りにコントリビュートできませんでした。

* [nerves-project/erlinit](https://github.com/nerves-project) 2
  * https://github.com/nerves-project/erlinit/pull/99
  * https://github.com/nerves-project/erlinit/pull/100
* [elixir-circuits/circuits_gpio](https://github.com/elixir-circuits/circuits_gpio) 1
  * https://github.com/elixir-circuits/circuits_gpio/pull/119
* [elixir-circuits/circuits_cdev](https://github.com/elixir-circuits/circuits_cdev) 1
  * https://github.com/elixir-circuits/circuits_cdev/pull/26
* [nerves-hub/nerves_hub_web](https://github.com/nerves-hub/nerves_hub_web) 3
  * https://github.com/nerves-hub/nerves_hub_web/pull/844
  * https://github.com/nerves-hub/nerves_hub_web/pull/846
  * https://github.com/nerves-hub/nerves_hub_web/pull/847
* [nerves-project/nerves_bootstrap](https://github.com/nerves-project/nerves_bootstrap) 2
  * https://github.com/nerves-project/nerves_bootstrap/pull/242
  * https://github.com/nerves-project/nerves_bootstrap/pull/243

### コミュニティ活動

NervesJP の 2022 年の目標は「毎月活動をする！」でした。
@takasehideki, kochi.ex の面々とつなぎながら達成したのですが、月イチであっても中々大変でした。

自分たちも楽しみつつ、参加者の方に面白がってもらえるようなイベントにするのは準備時間が必要で難しいことだなと痛感しました。

様々な場でコミュニティ活動・発表をしている @takasehideki はやっぱり、「スゴイ！！」です。

## お金

2021 年同様、 [Open Collective の Nerves Project](https://opencollective.com/nerves-project) の Backer をしています。
2022 年は Elixir, Nerves に関わる開発でまとまったお金を稼ぐことができたので、金額を 月5ドルであったのを、２月から月25ドルに  10月から月50ドル に引き上げています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/369713/558f595a-dd2b-15e0-2832-2313f708b26c.png)

https://opencollective.com/nerves-project

**「目指せ Sponsor」** の思いは変わっていません！！🦾

# Nervesいいぜ！を紹介する

2022 年の紹介の場は、「[ALGYAN](https://algyan.connpass.com/)」と「[SWEST](https://swest.toppers.jp/)」でした。

https://algyan.connpass.com/

https://swest.toppers.jp/

ALGYAN, SWEST ともに 

* Nerves っていう組込み Linux 開発を劇的に良くする OSS が あるよ！
* その Nerves を使って Pocket LANcher っていうのを作ったよ！

という発表をしました。

https://speakerdeck.com/pojiro/osswoquan-mian-li-yong-siteshang-yong-purodakutowozuo-ru

https://twitter.com/takasehideki/status/1565221509375098880

# 2022 年の Nerves 大賞 といえば！

この記事の題からははずれますが、どうしても書きたい 2022 年の僕的 **「Nerves 大賞」** があります。

## [kochi.ex](https://kochi-ex.connpass.com/) の「まくね川小水力発電所」への Nerves 活用

https://www.youtube.com/watch?v=2kbY-EcpQNM

https://www.slideshare.net/YutakaKikuchi1/ss-252287932

https://www.slideshare.net/YutakaKikuchi1/elixir-nerves

https://www.slideshare.net/YutakaKikuchi1/kochiex

kochi.ex のすごいところは

* 専用コンピュータ ExiBee を作る
* それに Nerves を載せる
* それを小水力発電所に投入し運用する

のすべてを成し遂げたことです。 @kikuyuta @nishiuchikazuma @32hero 、「スゴイ！！」です。

次の発電所も作っているとのことなので、 kochi.ex の動向は要チェックです！！
[FA設備技術勉強会](https://fa-study.connpass.com/)で発表が聞けたらと楽しみにしています〜 > @kikuyuta 

## @mnishiguchi joined in Nerves Core Team 🎉🎉🎉

これは Big NEWS でした。継続的なコントリビュートが Join の決め手になったのだと思います。
その継続的な活動は github の 彼のページから分かります。「スゴイ！！」です。

https://github.com/mnishiguchi

Nerves ログイン時に表示されるロゴ等の表示を司る [nerves-project/nerves_motd](https://github.com/nerves-project/nerves_motd) のメンテナーでもあります。

https://github.com/nerves-project/nerves_motd

Code BEAM America で Frank と @takasehideki, @kikuyuta, @mnishiguchi が集まった写真は感慨深いものがあります。素晴らしい！

https://twitter.com/takasehideki/status/1588766118424219649

※自分がそこにいれなかったことが「ちょっと悔しい」と、ここでこぼしておきます笑

# 2022 年のすごく嬉しかったこと

2023/01/01 の追記です。すごく嬉しかったのに書きそびれてしまったことがありました。

https://twitter.com/pojiro3/status/1589905967290146816

それは CODE BEAM AMERICA へ行った @takasehideki がお土産を送ってくれたことでした。
コントリビュートが不意に返ってきた瞬間でした。このときの喜びはうまく表現できないのですが、小躍りするほど嬉しかったです。実際家のリビングで飛び跳ねていました。本当に嬉しかったです！！

# 2023 年に向けて

## 取り組み

2022 年は幸いにも[職業錬金術師](https://qiita.com/pojiro/items/e4a724934feae93180b0)としてコードを書き続けることができました。
2020, 2021 年の下積み（学習して発表しての継続）と運（ご縁）があってお仕事がいただけたと思っています。ありがたいです:pray:

一方で、2020, 2021 年に培ったものを吐き出してしまった感を感じています。技術ですので吐き出してなくなってしまうということはありませんが、もっと伸ばしたいと思うことは山積みで「このままではいかんな」と感じています。挙げればキリが無いですが、

* 営業（発表、展示）
* コミュニティ活動
* プログラミング
    * 表現力の向上
    * 高負荷（通信・処理）に耐える実装
    * モデリング
    * 運用
* デザイン

などなど、これらは初心を大切に 2023 年に取り組んでいきたいです。

## Nerves

Nerves については理解が深まっていっており、自分の中で **良い意味で「特別な技術」でなくなってきています** 。
Nerves は飛び道具的ツールでなく、地に足のついた使える技術であることの実感を強くしています。

一方でその Nerves の良さをうまく伝えられていないとも感じています。

なので、 Nerves を使ってどのような嬉しさを得ることができるのかを示せる事例を作れたらと思っています。
例えば、1000, 10000台オーダーの Nerves を Nerves Hub を使って安定運用し、その中で得られた知見を公開するといったことです。

これは 2023 年にすぐに達成できるようなことではないですが、これができると 「Nerves いいぜ！」 を伝えるにおいて説得力が増すと思っています。

## 貢献の輪の中で

貢献の「[にわとりたまごサイクル](https://qiita.com/pojiro/items/30b6ef01c32882fc7c19#2022%E5%B9%B4%E3%81%AB%E5%90%91%E3%81%91%E3%81%A6)」の一員として、自身にできる pay forward を 2022 年取り組みました。
微力だとしても貢献をつなげられていたとしたら幸いです。

貢献の輪は回り（し）続けることが大事です。止めないこと、継続することが大事です。

2022 年、アントニオ猪木さんが亡くなりました。僕は猪木さんについて知らないのですが、 twitter やメディアでの反響を見るに彼が与えた影響がとても大きくポジティブであることのように感じました。 [toukon-ex](https://autoracex.connpass.com/event/266389/) も猪木さんの影響があってこそできたものだと思います。猪木さんの意思が @torifukukaiou と @mnishiguchi の中に生きているのだと思います。意思はつながっています。

僕一人にできることは微力ですが無いよりはあったほうがいいはず！と信じているので、 2023 年も「自分に出せる価値は何か、貢献は何か」を考えながら意思をつなぐ pay forward に尽力してまいります。

2023 年も Elixir/Nerves やっていきましょう🦾