ISBN 9784297140144

Elixir実践入門──基本文法、Web開発、機械学習、IoT

Elixir実践入門──基本文法、Web開発、機械学習、IoT
出版社
技術評論社
刊行
2024-02

概要

Erlang VM 上の Elixir をWeb・機械学習・IoT で横断的に実践する

想定読者

Ruby・Python・JavaScript などの経験を持ち、関数型・並行プログラミングを次の武器に加えたいバックエンド/フルスタック開発者

こんな人には向いていない

  • プログラミング自体が初めての人。本書は他言語の経験を前提に書かれており、関数型の概念説明に紙面を割いていない
  • Phoenix や Nerves を本番運用している中〜上級者。基礎構文から丁寧に積み上げる構成のため、既存ユーザーには基本事項の比重が大きい
  • 機械学習を深く掘り下げたい読者。Nx/Axon/Livebook の章は概観と入口に留まり、深い理論は別書が必要

読了後にできるようになること

  • Elixir のパターンマッチング・パイプ演算子・イミュータブルデータを実務コードで使いこなす
  • OTP(GenServer / Supervisor / Task)を用いた耐障害性の高い並行プロセス設計ができる
  • Phoenix + Ecto + LiveView でリアルタイム UI を持つ Web アプリを一から構築・デプロイできる
  • Nx と Axon を Livebook 上で操作し、画像分類などの機械学習パイプラインを試作できる
  • Nerves でマイコンボードのファームウェアを Elixir で記述し、センサーデータを Web に連携できる
  • 単一言語で Web・ML・IoT を横断する「オールインワン Elixir」スタックの全体像を把握できる

本書のキー概念(章解説)

  • 第 1 章 Elixir の歴史と概要
  • 第 2 章 基本文法
  • 第 3 章 型とパターンマッチング
  • 第 4 章 モジュールと関数
  • 第 5 章 Mix とプロジェクト管理
  • 第 6 章 並行プログラミングと OTP — GenServer・Supervisor を図解で整理。本書最大の学習価値がある章
  • 第 7 章 Phoenix 概要とルーティング
  • 第 8 章 Ecto によるデータベース操作
  • 第 9 章 phx.gen.auth による認証
  • 第 10 章 LiveView によるリアルタイム UI
  • 第 11 章 フルスタックアプリ開発とクラウドデプロイ — 実際のデプロイまで収録しており実践志向
  • 第 12 章 Nx — 数値計算ライブラリ
  • 第 13 章 Axon — ディープラーニングフレームワーク
  • 第 14 章 Livebook での ML ツール活用
  • 第 15 章 画像分類 Web アプリの実装
  • 第 16 章 Nerves と IoT の概要
  • 第 17 章 Nerves 開発環境の構築
  • 第 18 章 Elixir Circuits による GPIO/I2C 制御
  • 第 19 章 温湿度センサーと Phoenix Web の統合 — センサーデータをリアルタイム Web 表示する end-to-end 構成

ハイライト

  • 第6章の並行処理は本書のハイライトのひとつで、アクター・プロセス・Task・Agent・GenServer・Supervisorが図解付きで明確に解説されている(Elixir 固有の並行モデルが最も体系的にまとまっている箇所として複数レビューで言及されている)
  • 書籍の通りに Livebook で入力していけば、補完もしてくれるしすぐに確認もできます(機械学習章のハンズオン性の高さを端的に示す読者の声)
  • Elixir は既存の解決策を完全に置き換えるのではなく、Web・IoT など複数ドメインで一貫したスキルを横断適用できる統一プラットフォームとして機能する(IoT 章を読んだ読者が本書全体を通じて感じた Elixir の位置づけを表現している)

外部からの言及

  • 複数の章別所感記事が Qiita に投稿されており、並行処理(第6章)とフルスタック Web(7〜11章)の説明の丁寧さを評価する声が目立つ。一方で Ecto の context 設計やパイプ演算子の解説量が物足りないという指摘もある(qiita)
  • 機械学習章(12〜15章)について、Livebook でそのまま試せる手軽さは好評だが、Bumblebee と Hugging Face の前提説明が薄く、初学者には文脈が掴みにくいという意見がある(qiita)
  • IoT 章(16〜19章)は Nerves が解決する問題から説明を始める構成が実践的と評価され、安価な Grove モジュールを用いた具体例が理解を助けるという感想がある(qiita)

編集メモ

Qiita 言及 7 件 / 累計 likes 約 74。Essential(10件以上/200likes以上)・practical(5件以上)の中間帯だが 2024年2月刊の比較的新しい書籍であり、コミュニティ内では発刊イベントとして記録されている。現時点の言及量からは supplementary が適切

読む前に押さえておきたいこと

  • 任意の言語でのオブジェクト指向またはスクリプト言語の実務経験(Ruby/Python/JavaScript いずれか)
  • HTTP/JSON を用いた Web アプリケーションの基本的な仕組みの理解
  • コマンドラインとパッケージマネージャの基本操作

学習のコツ

  • 第6章(並行処理と OTP)は本書の核心。第1〜5章で文法を一通り押さえたら、Web 章(7〜11章)に進む前に第6章をじっくり読むと Phoenix の設計思想が腑に落ちやすい
  • 機械学習章(12〜15章)は Livebook を手元に立ち上げながら読むことを前提に設計されており、コードセルをそのまま実行できるため逐次確認しながら進める
  • IoT 章(16〜19章)は Raspberry Pi などのハードウェアがなくても概念は追えるが、Grove モジュールセット(合計約 1,300 円程度)を用意すると第18〜19章が格段に実感を伴う
  • Rails や Django 経験者は Phoenix の scaffold コードに見覚えを感じるが、Ecto の context 分割は Rails の concerns とは異なる設計観。第8章は先入観を外して読むと理解が早い
出版社による内容紹介

本書は、Elixirの言語仕様と実践的な利用方法を解説した入門書です。 Elixirは、低遅延で高い可用性を要求される分散システムの構築と運用を目的とするErlang VM上で動作する言語で、その文法はRubyから大きく影響を受けています。ゲームやチャットプラットフォームなど大量のコネクションとトラフィックを扱う必要のあるシステムを構築するのに利用されています。有用なツールやライブラリが多数開発されているのも後押しとなり、近年ではさまざまな分野に活躍の場を広げつつあります。 本書では、Webアプリケーション、機械学習、IoTなどでのElixirの活用方法を解説します。サンプルアプリケーションを開発しながらコードを紹介しつつ解説しています。Phoenix、Nx、Livebook、Nervesといったツールやライブラリの実践的な活用方法も紹介しているので、今の開発に即した実践的な知識が身に付けられます。

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。