みずりゅの自由帳

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

技術書典8向けに書いた「Elixirへのいざない2」PDF版をBOOTHで頒布しています

2020年2月29日から、技術書典8向けに執筆した「 Elixirへのいざない2 〜もっとNervesをさわる〜 」をBOOTHにて頒布しています。

こちらの表紙が目印です。

PDF版のみで、価格は500円。表紙込の71ページです。
BOOTH内で「技術書典 elixir」で検索すると表示されます。

mzryuka.booth.pm

現在はBOOTHでのみ販売しておりますが、3月7日からの「技術書典 応援祭」でも頒布予定です。

blog.techbookfest.org


また、先日ブログにも書きましたが、お試し版も用意しています。

mzryuka.hatenablog.jp

mzryuka.booth.pm

なお、タイトルに「2」とあるように、拙著「PhoenixLiveView と Nerves をさわる Elixir へのいざない」の続編となっております。
ただし、本の内容自体には直接的なつながりはありません。
前回が入門編だったのに対して、本書は少しだけ応用編になります。



本書の内容


本書では、動的な関数型言語であるElixirのIoTフレームワーク『Nerves』について、『実際にさわって体験をしてみよう』という内容となっています。

本書は以下の3章構成となっています。

  • 第1章 イントロダクション
  • 第2章 NervesでGPIOを操作する
  • 第3章 Nervesで7セグメントLEDを操作する

第1章では、後の章で利用しているElixirの基本的な記述形式について説明しています。また、NervesやPhoenix Frameworkでも利用されている「GenServer」モジュールについても触れています。この部分がわかってくると、NervesやPhoenixFrameworkの構造がより理解しやすくなります。

第2章では、Nerves経由でRaspberryPiのGPIOを操作して、簡単な電子回路のLEDを点灯させる方法を説明します。

第3章では、GPIO操作を応用して、7セグメントLEDと4桁7セグメントLEDを利用した電子回路の操作方法を説明します。

すなわち、本書の内容をなぞっていくと、Nervesというフレームワークを利用して、IoT機器のGPIOを使って電子回路を操作する方法を知ることができます。

なお、本書はNervesの使い方のちょっとした応用編として記述しています。
そのため、Nervesのインストール方法については触れていません。

Nervesのインストールに方法については、公式ページ(英語)を読むか、前著「Elixirへのいざない」をご参照ください。こちらは、電子版はBOOTH、物理本(+電子版ダウンロードカード付き)はとらのあなで購入できます。
他にも、QiitaなどでNervesのインストール方法を紹介している記事もありますので、そちらを参照されるのも良いでしょう。

hexdocs.pm

mzryuka.booth.pm

ec.toranoana.jp

おまけ:回路図

本文中には電子回路図を載せているのですが、モノトーンな画像となっています。
これは、物理本ではモノクロ印刷を想定していたためです。
ですが、少し見辛いと思いますので、カラー版の画像も載せておこうと思います。

※ 別途、GitHub上のサンプルコードのリポジトリにも画像を貼り付けておきます。

GPIOでLチカする回路

f:id:mzryuka:20200229222434p:plain

7セグメントLEDを操作する回路

f:id:mzryuka:20200229222419p:plain

4桁7セグメントLEDを操作する回路

f:id:mzryuka:20200229222339p:plain

4桁7セグメントLEDで4桁数字をカウントアップする回路(カウンタリセット付き)

f:id:mzryuka:20200229222402p:plain

ちなみに、7セグメントLEDや4桁7セグメントLEDを実際に操作した時の動画を、下の記事に載せています。

mzryuka.hatenablog.jp

Podcastでも宣伝

テック系Podcast番組「テック系フリーランスが選ぶ最近の気になるトピックス」さんで、「Elixirへのいざない2」の宣伝をさせていただきました。
リンクを載せておきます。

free-engineer.xrea.jp

さいごに

関数型言語でIoTをさわるという発想が斬新だと思いませんか?
奇抜性だけではなく、軽量LinuxによるBootの速さや関数型言語による実装での簡素化、などメリットは多いと思っています。(無いのは、大きな実績のみ。)


ほんと「NervesはElixirのIoTでナウでヤングなクールなすごいやつ」なんです。