みずりゅの自由帳

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

技術書典7でElixir本「PhoenixLiveViewとNervesをさわるElixirへのいざない」を頒布します。

PhoenixLiveViewとNervesをさわるElixirへのいざない」というタイトルのElixir入門本を2019年9月22日の技術書典7で頒布する予定です。

タイトルが長いので「えりいざ」とでも略してください。

本のタイトルの通り、Phoenix LiveViewNervesと呼ばれるプログラミング言語Elixirの2つのフレームワークについて、『実際にさわって体験をしてみよう』な内容となっています。

先日、「ねこのしっぽ」さんで早割入稿してきました。

これで、本については会場で受け取って頒布するだけです。

比較的余裕もできたので、紹介ページを用意しました。

サークル名は「URAMASU」です。
また、配置場所は「せ27D」で、会場の2F側です。詳細は下の会場画像を参照ください。

f:id:mzryuka:20190908224303p:plain

紹介文を読んで興味を持たれた方は、ぜひお寄りください。

また、サークルチェックもつけてくださると当日までの励みになります。


techbookfest.org


概要:

Erlang & Elixir Fest 2019で発表されていたPhoenix LiveViewとNervesというフレームワーク

その2つのフレームワークに感銘をうけた私が、実際にインストールして簡単なプロジェクトを作ってみた、という内容です。

本の内容に従ってコードを記述していけば、私と同様の「体験」ができるようになっています。

すでに触ったことがある人には物足りない内容ではありますが、初見者に対しての入門本としても使えるように書いています。

対象者

以下の方を対象としています。

  • Elixirって何?と興味を持たれた方
  • Elixirをこれから始めようと考えている方
  • Elixirでどんなことができるようになるんだろうと思っている方
  • Phoenix Frameworkに興味を持たれている方
  • JavaScriptはいまいち好みではないけどSPAを体験してみたい方
  • IoT機器の操作でC言語を触りたくない方
  • 難しい話は置いといて雰囲気で新しい言語を体験してみたい方
頒布物情報


一部、サークルページの頒布情報にも載せている画像です。

サークルページよりも画像が大きくなっていますので、見易いと思われます。

f:id:mzryuka:20190908222307p:plain

f:id:mzryuka:20190908222441p:plain

f:id:mzryuka:20190908222407p:plain

f:id:mzryuka:20190908222417p:plain

これだけだと物足りないので、各章の概要も少しだけ記述しておきます。

1章:Elixirを体験する

Elixirを自分のマシン上にインストールして、Elixirを体験してみる、という章です。

なお、ElixirとはRubyを意識して作れた動的な関数型言語です。

asdfとDockerを利用したインストール方法に加え、各OS毎のインストール方法についても触れています。

文法的な箇所については、最低限な点にしか触れていません。

これは、この本の趣旨として文法には重きを置いていないためです。

f:id:mzryuka:20190908222516p:plain

2章:Mixを体験する

ElixirのビルドツールであるMixについて体験してみる、という章です。

Mixを利用して、プロジェクト作成/ビルド/テストについて簡単に体験できます。

Phoenix LiveViwやNervesでもMixは利用しますので、その準備段階といった内容となっています。

f:id:mzryuka:20190908222538p:plain

3章:Phoenixを体験する

ElixirのWebFrameWorkであるPhoenixについて体験してみる、という章です。

Phoenixは、RubyでいうRuby on Railsのようなフレームワークです。
ElixirがRubyを意識して作れたように、PhoenixRuby on Railsを意識して作られています。

この章では、Phoenixをインストールして動作させる/画面を追加して表示させる、といった流れで記載しています。

次の章で記載している「Phoenix LiveView」はPhoenixのライブラリの1つであるので、この章でPhoenixの使い方を確認する流れになっています。

なお、難易度を下げるために、DBを利用しないプロジェクトにしています。

f:id:mzryuka:20190908222605p:plain

4章:Phoenix LiveViewを体験する

この本を書くきっかけになった理由の1つ、Phoenix LiveView について体験してみる、という章です。

Phoenix LiveViewはPhoenixのライブラリの一つであり、その特徴としてJavaScriptを直接記述しなくてもSPA(シングルページアプリケーション)の機能を作れます。つまり、サーバサイドレンダリング側だけでSPAが作れるので、コードもElixirだけ書ければ良いことになります。

一方で、LiveViewはPhoenixのscaffoldに(まだ)対応していません。そのため、自分のマシンで利用できるようになるまでの適用手順を記載しています。
config、Route、endpoint、Controller、View、Template、Socket設定などを小分けにして記載しています。


(2019年9月時点では、)意外と手を入れる箇所が多いため、本という形でまとめたことには少しは意味があるでは、と考えています。

f:id:mzryuka:20190908222627p:plain

加えて、この章の後半ではGitHub上に公開されているPhoenix LiveViewのDEMOコードを動作させる手順についても触れています。
ここでは、動作させるために必要であるため、限定的にDBも利用しています。

DEMOを動かせるようになると、以下のような機能を操作できます。

f:id:mzryuka:20190908234848p:plain

f:id:mzryuka:20190908234908p:plain

5章: Nervesを体験する

この本を書くきっかけのもう1つの理由、Nerves について体験してみる、という章です。

Nervesは、Elixir(とErlang)だけで、IoT機器を動作させることができるフレームワークです。

Nervesを利用できるIoT機器はRaspberry PiやBeagleBone Blackなど一部の機器だけですが、それでもElixirだけで完結するのは魅了です。
何より、開発でC言語を触らなかったり、IoT用のOSをインストールした後に別途プログラミング言語をインストールするなどの手間が省けます。

この章では、Nervesのインストール方法、Nervesを使ってRaspberry Pi3とRaspberry Pi ZeroでそれぞれLチカする手順を記載しています。

f:id:mzryuka:20190908222644p:plain

たかがLチカですが、実際に動かそうとすると色々とハマり要素も多いです。
ここでは、筆者が見聞きしたり体験したハマりどころについても記載しており、スムーズにLチカを体験できるように留意して書いています。

f:id:mzryuka:20190908235714j:plain

余談1:印刷所のお姉さんに言われた言葉

初めての同人誌だったということもあり、同人初心者にも優しいと評判の「ねこのしっぽ」さんに直接持ち込んで入稿することにしました。

その際、原稿をチェックし終えたお姉さんに「この表紙のキャラ、可愛いですね」「本文中に出てくるのもポイント高いです」「(このキャラの)グッズが出たら買っちゃうかも」というお言葉をいただきました。

(仮に営業トークだったとしても、)キャラには思い入れを持ってデザイナーさんに描いていただいたので、非常に嬉しかったです。

余談2:Twitter上での反応

いくつか反応をいただけたのでご紹介まで。図らずも「 #ElixirConfJP 」の開催日だったので、反応が良かったようです。

正誤表

「PhoenixLiveViewとNervesをさわるElixirへのいざない」正誤表

※2019.09.09:正誤表追記しました。

まとめ

PhoenixLiveViewとNervesをさわるElixirへのいざない」いかがでしょうか。

この本は、Elixirというプログラム言語でこんなことが出来るようになるんだ、というワクワク感を伝えたいという想いで書きました。

そして、できれば一緒にElixirへの道を歩んでいきたい。

そんな想いを込めて、「入門」ではなく「いざない(誘い)」とタイトルをつけています。

少しでも興味を持って、手にとってくれると嬉しいです。

ちなみに、電子版については未定です。
ただ、数名の方から電子版での要望もいただいています。当日来れない方もいますしね。
なので、物理本のおまけで用意したりとか、技術書典後に期間限定的で頒布する風にしようかな、とか考えています。