目次

はじめに

本書の目的
本書の対象読者
執筆時点
本書で扱う各種バージョンについて
免責事項
表記関係について
底本について

第1章 Elixirを体験する

1.1 まえがき
1.2 動作環境OSについて
1.3 Elixirをインストールする
1.4 Elixirが動作することを確認する
1.5 環境構築:おまけ
1.6 まとめ

第2章 Mixを体験する

2.1 まえがき
2.2 Mixのインストール
2.3 Mixを使ってプロジェクトを作成する
2.4 実行してみる
2.5 テストしてみる
2.6 コード&テストコードを追加してみる
2.7 おまけ:ソースコード一式

第3章 Phoenixを体験する

3.1 まえがき
3.2 まずは体験してみる
3.3 Phoenixが動く環境を用意する
3.4 Phoenixプロジェクトの作成
3.5 Phoenix Fromeworkで画面を追加する
3.6 Phoenix Fromeworkで動的な画面を追加する
3.7 LiveDashboard機能
3.8 まとめ

第4章 Phoenix LiveViewを体験する

4.1 まえがき
4.2 Phoenix LiveViewとは
4.3 Phoenix LiveViewのサンプルを動かしてみる
4.4 Phoenix LiveViewをインストールする
4.5 Phoenix LiveViewを動かすための設定追加
4.6 エンドポイントへの署名ソルトの設定
4.7 Phoenix LiveViewで検索画面を作る
4.8 定期的に画面内容を更新してみる
4.9 Phoenix LiveViewで広がる世界

第5章 Nervesを体験する

5.1 まえがき
5.2 Nervesとは
5.3 Nervesのインストール
5.4 IoT機器の準備
5.5 Raspberry Pi 3でLチカ
5.6 Raspberry Pi Zero WHでLチカ
5.7 Nervesで広がる世界

あとがき

レビュアー

はじめに

本書の目的

 本書を手にとっていただき、ありがとうございます。

 本書の目的は、関数型プログラミング言語Elixirに興味を持ってもらうことです。Elixirは聞いたことあるけど、まだ始められていない/どんなことができるようになるんだろう、と考えている方に向けた内容となっています。

 本書では、Elixirの特徴である動的な関数型や並行性については極力触れません。筆者自身が人に伝えるほど咀嚼できていない点もありますが、始めるときに関数型や並行性を学んで「難しい」となってしまうと、Elixirの楽しみに出会う前に終わってしまう可能性があると思っているからです。

 では、どんなことについて触れるのかと言うと、大きく「Phoenix LiveView」と「Nerves」について紹介したいと考えています。

 なぜこのふたつの紹介なのか。それは、筆者がこれからに期待できると感じたからです。

 前者のPhoenix LiveViewは、JavaScriptを記述しなくても、サーバーサイド側のElixirだけでSPA(シングルページアプリケーション)を作成できます。近年のJavaScriptは種類がありすぎて追いつけない、という人でもは興味が湧いてくるではないでしょうか。

 後者のNervesは、組込機器に対しての操作をElixirでできるようになります。これは、組込はC言語と言う考えしかなかった自分には衝撃でした。そして、組込機器にElixirが使えることに胸がワクワクしました。

 残念ながら、このふたつのフレームワークにはまだ実績と言える実績はありません。しかし、だからこそ、これからが期待できると思いました。もし、この内容を読んでワクワクした方がいれば、ぜひ触り始めてみませんか?実は筆者自身もまだ触り始めたばかりなのです。ともにElixirの道を歩いていきましょう。

 本書を読んで、あなたのプログラミング活動のひとつにElixirが加わってくれると幸いです。

本書の対象読者

 本書の対象読者は、以下の方を想定しています。

 ・Elixirって何?と興味を持った方

 ・Elixirをこれから始めようと考えている方

 ・Elixirではどんなことができるんだろうと思っている方

 ・Phoenix Frameworkに興味を持っている方

 ・JavaScriptはいまいち好みではないけどSPAを体験してみたい方

 ・IoT機器の操作でC言語を触りたくない方

 ・難しい話は置いといて、雰囲気で新しい言語を体験してみたい方

 一方で、これらの方には物足りない可能性が高いです。

 ・Elixirの関数型としての特徴や並行性について知りたい方

 ・業務でバリバリElixirを利用されている方

 ・本家サイトのドキュメントを読んで、一人でバリバリ進められる方

図: ではいきますか

執筆時点

 本書では、たびたび「執筆時点」と出てきます。

 その際の執筆時点は、2020年4月30日を指します。

本書で扱う各種バージョンについて

 本書で扱う言語/フレームワーク/ライブラリーのバージョンは以下のとおりです。

 ・Elixir : 1.10.3

 ・Erlang : 22.3.2

 ・Node.js : 12.16.2

 ・Phoenix Framework : 1.5.1

 ・Phoenix LiveView : 0.12.1

 ・Nerves : 1.6.1

免責事項

 ・本書の内容は、情報提供のみを目的としております。正確性には留意しておりますが、正確性を保証するものではありません。

 ・本書の記載内容に基づく一切の結果について、一切の責任を負いません。

 ・特定の会社、製品、案件について、不当に貶める意図はありません。

表記関係について

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©︎、®︎、™️マークなどは表示していません。

底本について

 本書籍は、技術系同人誌即売会「技術書典7」で頒布されたものを底本としています。

第1章 Elixirを体験する

1.1 まえがき

 Elixirとは、並行処理や動的な関数型の特徴を持つ、Erlangの仮想マシン(BEAM)上で動作するプログラム言語です。ベースとなるErlangの長所をそのままに、Rubyライクな文法で記述できます。

 なお、本書で利用するElixirのバージョンは1.10系(Erlangのバージョンは22系)を前提としています。古いバージョンを利用している場合は、この章で紹介する方法でバージョンを合わせておいてください。

1.2 動作環境OSについて

 本書では、以下のOSで環境構築することをオススメします。

 ・macOS

 ・Linux

 Linuxについては、可能であればUbuntu等のDebian系としてください。これは、ElixirのDocker ImageがDebian系で用意されているので、参考にしやすいためです。RedHat系列(CentOSなど)でも問題はありませんが、ライブラリーのインストール等については記載しませんので、適宜読み替えてください。

 また、Windowsについては、本書で説明するNervesのサポート対象外となっています。1Windows PCをご利用の場合、VirtualBoxやVMware Player等を利用して、Linux環境を用意してください。

1.3 Elixirをインストールする

 まずは、ご自身の環境にElixirをインストールします。筆者のオススメは以下のふたつです。

 ・asdfを利用する

 ・Dockerを利用する

 その理由としては、Elixirのバージョン管理がしやすいからです。ツールによっては特定のバージョンでしか動かない場合もあります。ですので、任意のバージョンを指定できる環境を構築することをオススメします。

 Dockerを利用できる方は、まずはDockerを利用してみましょう。手っ取り早くElixirを体験できます。

 なお、本書ではバージョン管理ツール「asdf」を利用したElixirのインストールを推奨します。これは、バージョンを自由に変更できることに加えて、Nervesを利用する際にも推奨されている環境だからです。

1.3.1 asdfを利用する

 asdfとは、CLIベースのバージョン管理ツールです。特定言語に対して複数のランタイムバージョンを管理できます。

 ・公式ページ: https://asdf-vm.com/#/

 ここでは、asdfを利用してElixirをインストールする手順を説明します。asdfのインストール手順については、後述の「asdfをインストールする」で確認してください。

 以下、asdfにパスが通っている前提とします。また、ElixirとErlangのバージョンは、Nervesを利用する際に重要になってきます。執筆時点の最新版であるNerves 1.6.1ではElixirのバージョン1.10系がサポートされています。今回はそれにしたがって、Elixir 1.10系をインストールします。

 「asdf plugin-add <言語名>」を実行後、「asdf install <言語名> <バージョン>」を入力すると、当該バージョンのインストールが始まります。

 Elixirのインストールには、事前にErlangのインストールが必要です。なお、Erlangのインストールには時間がかかります。著者の環境では、体感で10~15分程度でしたが、マシンスペックによっても変わってくると思います。終わるまでのんびりと待っていてください。

 一方で、Elixirのインストールはすぐに完了します。

 インストール完了後は、「asdf global <言語名> <バージョン>」で利用するバージョンを指定します。

$ asdf plugin-add erlang

$ asdf plugin-add elixir


$ asdf install erlang 22.3.2

$ asdf install elixir 1.10.3-otp-22


$ asdf global erlang 22.3.2

$ asdf global elixir 1.10.3-otp-22

 上記では、Elixirのバージョンを1.10.3としていますが、1.10系であれば問題ありません。

1.3.2 Dockerを利用する

 本書では、公式のElixirのDockerfileを利用します。バージョンとしては、執筆時点での最新版である1.10.3を利用しています。

 なお、Imageファイルのファイルサイズは1.23GBあります。通信量や利用するマシンのディスクサイズにはご注意ください。

$ docker run -it --rm elixir

 もし、特定のバージョンものを利用したい場合には、「elixir:<タグ名>」で指定してください。たとえば、明示的に「Elixirのバージョン1.10.3」を利用したい場合には、以下のように実施します。

$ docker run -it --rm elixir:1.10.3

 なお、上記の2パターンでは、docker run実行後にiexが起動します。iexについては後ほど説明します。いったんコンテナのOSを起動しておきたい場合には、引数にbashなどのシェルコマンドを渡してください。

$ docker run -it --rm elixir bash

1. ただし、Nervesの1.6.1以降は、Windows10バージョン18917以降のWSL2であればサポートしています。https://hexdocs.pm/nerves/installation.html#windows

試し読みはここまでです。
この続きは、製品版でお楽しみください。