本書は、Elixir言語を使った組み込み機器を作るためのフレームワークNervesの入門書です。
Elixirは、関数型言語Erlangの仮想マシン(Erlang VM)上で動作し、大量の並行処理を安定的に実行できる仕組みと、それらを安定して動作させ続けるための仕組みを持つ関数型言語です。
Nervesは、Elixirならではの特長を生かしつつ、OSであるLinuxやElixirコンパイラ、その他開発に必要なツールをコンパクトにまとめたフレームワークです。
普段C言語やPythonなどを使っている筆者自身が、ElixirとNervesの特徴をきいて、はじめて触りはじめたときは、習得のとっかかりで苦労しました。Elixir言語そのものの書き方から、インストールやプロジェクトの作り方、各種設定、コマンドラインや特定のエラー対策など、あまりに資料が少なかったためです。
本書の内容は、Elixir言語の細かい説明は省略し、Raspberry Piの周辺機器の制御の作例としては、大変初歩的な内容に絞っています。ですが、Elixirでのハードウェア操作やネットワーク通信の基本、開発における便利な機能や、途中目にすると思われるトラブルシューティングまでを網羅しました。ElixirとNervesに初めてチャレンジする方にとって、助けになることを願っています。
この本を読んで頂いたことをきっかけに、新しい言語との出会いや、何かひとつの作品を作るきっかけになれば幸いです。
2023年 夏 三宅 泰宏
・本書の記載情報に基づいた行動によって発生した一切の事項について、発行元、著者は、一切の責任を負いかねます。
・本書の一部、あるいは全部を、著作権法の定める範囲を超えて、無断で(紙面、電子データ他を含む)複写、複製、転載、アップロードなどを行う事はおやめ下さい。
・本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。
本書では、Elixirを活用したハードウェア開発について、下記の流れで説明します。
1.Nerves環境の構築(第2章)
2.Elixir言語からのRaspberry Pi 入出力の操作(第3章、第6章)
3.Nervesで便利なElixir言語の機能と、Nerves独自機能(第4章、第5章)
4.IoT機器の作例(第7章)
5.開発効率化のための手法(第8章)
本書では、以下の環境での動作を前提としています。
機材 | OS | バージョン |
Windows11 PC (VirtualBox) | Ubuntu Linux | 22.04 |
Linux PC | Ubuntu Linux | 22.04 |
Mac Book Pro (intel CPU) | macOS | 12.6 |
機材 | 仕様 |
本体1 | Raspberry Pi 4 B+ |
本体2 | Raspberry Pi Zero WH |
Raspberry Pi本体の40ピンコネクタに接続して、入力・出力を扱いやすくするための拡張ボード、Grove Base Hat for Raspberry Pi1を使用します。
今回使用した部品は、以下の店舗、通販で購入できます。(在庫状況によっては一軒の店舗では揃わない可能性があります)
店名 | URL |
マルツパーツ館 | https://www.marutsu.co.jp/ |
シリコンハウス共立 | https://eleshop.jp/ |
秋月電子通商 | https://akizukidenshi.com/ |
千石電商 | https://www.sengoku.co.jp/ |
スイッチサイエンス | https://www.switch-science.com/ |
今回使用するライブラリのドキュメントのリンク先です。
ライブラリ名 | URL |
Elixir Circuits | https://elixir-circuits.github.io/ |
Nerves | https://elixirschool.com/ja/lessons/misc/nerves |
Raspberry Pi OS の一般的な環境構築については、筆者のQiitaにも手順をまとめておりますので、ご参考下さい。
・「電子工作er向けのラズパイのセットアップ」