このページの内容

Awesome Elixir Books

Elixir Booksを扱う資料や関連プロジェクトをまとめたAwesomeリストです。

目次

書籍

入門書

Adopting Elixir

導入に必要なのはプログラミングだけではありません。Elixirは魅力的な新しい言語ですが、アプリケーションを構想から本番環境まで成功させるには、言語以外の知識も必要です。本書の事例と戦略を通じて、設計、チーム作り、利害関係者の管理、デプロイ、監視に至るアプリケーションのライフサイクル全体のベストプラクティスを学びます。構文やツールの先へ進み、Elixirアプリケーションを構想から本番環境へ届けるための技法を身につけます。

Elixir Cookbook

本書は、テーマごとに分類されたレシピの集合であり、アイデアを得るための参考書や、問題に対する解決策を迅速に検索するための手がかりとなる。まず、IExセッションを起動し、いくつかのアイデアをテストする。次に、モジュールの読み込みやコンパイル、システムの確認、監視アプリケーションの生成など、さまざまな操作を行う。さらに、不変性(immutability)、データ構造の操作、パターンマッチング、ストリームモジュールを使って無限データシーケンスを生成するといった内容に触れ、文字列の結合からテキスト内の単語頻度の決定まで、さまざまなテーマについて学ぶ。モジュールと関数に関しては、他のモジュールからコードを読み込み、関数内のガードとパターンマッチングの使い方についても学ぶ。

Elixir in Action

Elixir in Actionでは、Elixirを使ってスケーラビリティ、並行処理、耐障害性、高可用性といった実践的な課題を解決する方法を学ぶ。まず言語の基本要素を学び、次にElixirの関数型プログラミングの考え方で問題を捉える。その基礎をもとに、ElixirとBEAM、そして実績ある抽象化を提供するErlangの強力なOTPフレームワークとのシームレスな統合を探求する。最後に、システムを複数のマシンに分散し、本番環境で運用する方法を解説する。

Elixir succinctly Free

これはElixirとOTPについて要点を簡潔に解説する入門書です。約100ページで言語とプラットフォームを学べます。

Études for Elixir Free

この書籍では、Elixirで書けるプログラムの説明が載っています。これらのプログラムは通常短く、それぞれが特定のElixirプログラミングコンセプトに対する練習材料として設計されています。これらのプログラムは、非常に難しいものではありませんが、本書『Elixirをはじめよう』に載っている即座の内容や例に少し脱線して考えるよう求めることもあります。

Getting Started Free

公式Elixir入門ガイドで、言語の基礎を学び、MixとOTPを使ってプロジェクトを構築する方法を学び、メタプログラミングなどの高度な技術についても紹介します。

Introducing Elixir

Elixirは、関数型プログラミングについて学びたい人にとって非常に優れた言語です。本書の実践的な導入により、Elixirがいかに強力で楽しい言語であるかを体験できます。この言語はErlangの堅牢な関数型プログラミングと、Rubyに似た構文を組み合わせており、メタプログラミングに強い機能を備えています。

Learn Functional Programming with Elixir

Elixirのシンプルな構文とこのガイドツアーにより、現代の関数型プログラミング技術を学ぶための明確でシンプルな道が開かれます。事前の関数型プログラミング経験は不要です!本書は、不変値や明示的なデータ変換、関数、モジュール、再帰関数、パターンマッチング、高階関数、多型、失敗処理といった概念を、適切なペースで導入し、副作用を避けながら学びます。

Learn You Some Erlang for Great Good

こんにちは!これは『Learn You Some Erlang for Great Good!』です。あなたがすでにいくつかのプログラミング経験を持ち、関数型プログラミングについてあまり詳しくない場合に、この本はあなたにぴったりです。関数型プログラミングにあまり詳しくない場合でも、この本は進化するテーマに触れることで、依然として役立つでしょう。

Learning Elixir

ElixirはErlangの仮想マシンとエコシステムに基づいており、スケーラビリティ、並列処理、障害耐性、高可用性といった目標を達成しやすくします。これらの目標は、どのプログラミング言語やパラダイムを使用する開発者にとっても求められます。Elixirは、Erlang仮想マシンが提供するメリットを活かしつつ、Erlangの複雑な文法をほとんど取り入れない、現代的なプログラミング言語です。

Programming Elixir ≥ 1.6

この本は、経験豊富なプログラマ向けのElixirの入門書であり、Elixir 1.6以降に完全に更新されています。学術的な説明を避け、関数型プログラミングを実用的に学びましょう(モンードについてもう一度教えてください)。並列アプリケーションを作成できますが、ロックや一貫性の問題を避けながら、正しく作成できます。Elixirは、確実なErlang仮想マシンに構築された、現代的で関数型かつ並列な言語です。Elixirの実用的な文法とメタプログラミングの内蔵サポートにより、あなたは効率的に作業でき、長期間にわたり興味を持ち続けられます。おそらく、次の大きな革新の時代が来たかもしれません。おそらくそれはElixirかもしれません。

The Little Elixir & OTP Guidebook

『The Little Elixir & OTP Guidebook』は、ElixirとOTPを使ったアプリケーション開発の入門書です。Elixirの構文と、それを使うのに必要な関数型プログラミングを手短に学んだ後、OTPを使ってスケーラブルで耐障害性のある分散アプリケーションを構築します。Elixirでプログラミングの喜びを再発見し、初心者だった頃の感覚を思い出せます。

The Ultimate Guide For Making the Jump To Elixir

注目を集める関数型プログラミング言語を学びたいですか?Ruby on Railsのコアチームメンバー、José Valimが設計したElixirを紹介します。仕事や家族などで時間が限られ、ブログ記事を読み続けたりオープンソースへ貢献したりする余裕がない人が、必要な知識を短時間で身につけるための本です。

上級書

Building Scalable Applications with Erlang

Erlangは、極めて高い信頼性、可用性、スケーラビリティが必要なミッションクリティカルな企業環境で、並行プログラミングを担う主要言語の一つです。FacebookやAmazonをはじめ、多くの組織がすでに利用し、導入を検討しています。 一方、関数型言語であるErlangは、C++やJavaなどの従来のオブジェクト指向言語とは根本的に異なります。本書は、経験豊富なオブジェクト指向プログラマーがErlangと関数型プログラミングの原則を短期間で習得できるよう解説します。Jerry Jacksonが主要な概念、原則、機能を丁寧に説明し、最大99.9999999%の稼働率を持つ大規模な実システムを構築する方法を示します。

Craft GraphQL APIs in Elixir with Absinthe

あなたのドメインは豊かで相互に結びついており、APIもそれと同じように設計すべきです。Web APIをGraphQLにアップグレードし、その柔軟なクエリをユーザーに活用させ、その宣言型構造をコードの簡易化に活かしてください。Absintheは、関数型プログラミング言語Elixir向けのGraphQLツールキットです。Absintheの開発者たちが執筆した本書は、この二つの革新的な技術を最大限に活用する手助けになります。ステップバイステップのガイドと、他に見つからない専門家のアドバイスをもとに、独自の柔軟かつ高性能なAPIを構築してください。

Designing Elixir Systems with OTP

Elixirでコードを書けるようになったら、Elixirの思考スタイルを学びましょう。知的なレイヤーを持つライブラリを設計し、適切なデータ構造を形成し、関数から関数へと自然に流れ、適切なAPIを提供するように設計します。30年以上、電話システムの信頼性と高速性を維持してきた、同じOTPを採用しましょう。OTPの関数の理解を越えて、その内部の仕組みを理解し、なぜそれが重要であるかを理解しましょう。その知識をもとに、ユーザーに迅速かつ頑健なサービスを提供するシステム設計を、直感的に設計できるようになります。すべてがElixirの視点で行われます。

Designing for Scalability with Erlang/OTP

もし、スケーラブルで障害に強いシステムを構築し、高い可用性を要件としている場合、Erlang/OTPプラットフォームが、その機能の幅、深さ、そして一貫性においてなぜ特別であるのかを発見してください。この実践的なガイドは、Erlangプログラミング言語とそのOTPフレームワーク(再利用可能なライブラリ、ツール、設計原則)を用いて、失敗しない複雑な商業レベルのシステムを開発する方法を示しています。

Erlang and Elixir for Imperative Programmers

ErlangおよびElixirについて学び、それらの基礎にある関数型プログラミングの概念について実用的な理解を得ましょう。本書は、関数型プログラミングとリアルタイムシステムを必要とするプロジェクトを実施した著者の経験を、分解し、整理したものです。あなたは、既知の言語との違い、スタートするべき場所、そして次に進むべき場所について必要な知識を得られます。

Erlang and OTP in Action

Erlang and OTP in Actionでは、並行プログラミングの概念とErlangのメッセージパッシングモデルを学びます。段階的に高度になる例を通じてErlangシステムを構築し、SOAやウェブアーキテクチャを含むC/C++、Java、.NETアプリケーションと統合します。

Erlang In Anger

本書は、いわば「戦時下のErlang衛生兵」になるための小さなガイドです。障害の原因を理解するためのヒントやコツと、Erlangで構築された本番システムのデバッグに役立ったコードスニペットや実践例を集めています。

Mastering Elixir

この書籍では、ErlangのOTPとElixir自身の抽象構造を活用して、並列化・分散化が容易なアプリケーションを構築する方法を学びます。ファイルアップロードの処理にはGenStageを使用し、その後、DSLを実装してそれを簡略化します。アプリケーションを世界に公開するにはPhoenixを使用します。実装が終了した後、Kubernetesを使ってアプリケーションをクラウドに移行し、自動的にデプロイ・スケーリング・管理する方法を学びます。最後に、アプリケーションが本番環境に投入された際に、そのアプリケーションを徹底的にテストし、監視する方法を学び、心の安全を確保します。

Metaprogramming Elixir

Elixirのマクロを使って、コードを書くコードを書く。マクロはメタプログラミングを可能にし、言語自体を定義します。本書では、マクロを使って、高速かつ維持性の高いコードで言語を拡張し、これまで考えられなかった方法で機能を共有する方法を学びます。Elixirに独自の第一クラスの機能を追加し、パフォーマンスを最適化し、ドメイン特定言語を作成する方法を発見します。

Programming Erlang

マルチユーザーのゲーム、ウェブサイト、クラウドアプリケーション、ネットワーク接続データベースは、同時に数千人のユーザーが相互に作用しています。このような状況では、並列・同時処理環境に固有の非常に難しい問題を解決するための強力で産業レベルのツールが必要です。そのツールはErlangです。このベストセラー『Programming Erlang』の2版では、マルチコアシステム上でスケーラブルに動作する並列プログラムを書く方法を学びます。

Property-Based Testing with PropEr, Erlang, and Elixir

プロパティベースのテストは、少ないコードでより良い、より確実なテストを構築します。ErlangおよびElixirでPropErフレームワークを使用することで、本書は自動的にテストケースを生成し、状態を持つプログラムをテストする方法、そしてソフトウェア設計に取り入れるためのより原則的で信頼性の高いアプローチを学びます。問題空間をより深く探索し、プログラムの振る舞いを設計する際に立てた仮定を検証し、設計に潜む予期しない弱点を暴露できるようになります。PropErは、発見したバグを再現する方法まで示してくれます。本書を読むことで、効率的なプロパティベースのテストを短時間で書くことができます。

Hands-on Elixir & OTP: Cryptocurrency trading bot Free

Elixir & OTPを実際のプロジェクトで作成しながら学びたいですか?『Hands-on Elixir & OTP: Cryptocurrency trading bot』では、興味深いソフトウェアプロジェクトに取り組むことで、実践的な経験を積みます。本書では、反復的な実装改善を通じて、すべての重要な抽象化と基本的な原則を探索します。

ウェブ開発

Building Web Applications with Erlang

ウェブアプリケーションにErlangを選ぶ理由は?この書籍で簡単なウェブサービスを構築しながら、その答えを実際に体験してください。もしあなたがすでにウェブ開発に詳しい方で、基本的なErlangの知識を持っているなら、本書ではREST、動的コンテンツ、ウェブソケット、並列処理について、いくつかの例を通じて学びます。その過程で、Erlangがビジネスに重要なサービスを構築するのに最適であることを、実際に体感できます。

Elixir and Elm Tutorial

機能型ウェブプログラミングの世界へようこそ!本書では、楽しい、スケーラブルで維持性の高いウェブアプリケーションを作成する方法を学びます。最新のElixirやElmといった新しい言語から生まれたアイデアを活用し、楽しい体験を提供します。理論に重点を置くのではなく、実用的なアプローチをとり、実際のアプリケーションを構築します。

Functional Web Development with Elixir, OTP, and Phoenix

ElixirとPhoenixは、現代のウェブアプリケーション開発に最適なプラットフォームとして、大きな注目を集めています。ElixirとOTPを使って状態を持つウェブアプリケーションを構築しながら、その力を最大限に活かしてください。ORMやデータベースを使わずにドメインエンティティをモデル化します。サーバーの状態を管理し、コードを清潔に保つためにOTPの行動を活用します。ビジネスロジックに結びつけることなく、Phoenixのウェブインターフェースを追加します。これにより、ウェブ開発について根本的に新しい視点を持つようになります。

Phoenix in Action

フィニックスは、Elixir言語に特化した現代的なウェブフレームワークです。洗練された設計、障害耐性、そして高いパフォーマンスを備え、Railsと同様に使いやすく、ElixirのErlangベースの基礎に匹敵する安定性を備えています。『Phoenix in Action』は、既存のウェブ開発スキルを活かしながら、フィニックスの独自の利点を学び、必要なだけのElixirの知識を習得します。

Programming Ecto

言語は時代とともに変化しても、リレーショナルデータベースは長く使われ続けます。Elixirを代表するデータベースライブラリEctoを使い、ElixirやPhoenixアプリケーションをデータベースへ接続する方法を学びます。基本要素をモジュールごとに理解した後、アプリケーション開発でよく遭遇する場面に沿ったレシピ形式で、高度なトピックとベストプラクティスを身につけます。Ectoの開発者が共著し、Ectoを効果的に使うための必須知識を提供します。

Programming Phoenix

速さと美しさの妥協を拒否しましょう:両方を実現できます。フィニックスの開発者であるクリス・マッコード、Elixirの開発者であるジョセ・バルム、賞を受賞した著者であるブライス・テートが、速くかつ信頼性の高いアプリケーションを構築するプロセスを一緒に歩みます。各ステップで、フィニックス開発者の視点から、単に「どうするか」だけでなく、「なぜそうするか」まで学びましょう。この決定的なガイドは、フィニックスの初心者から専門家へと進む旅の途中で、あなたを常に支えるパートナーになります。新しい世代のウェブアプリケーションの構築に役立ちます。

Real-Time Phoenix

ユーザーが期待するリアルタイム体験を提供するために、Elixirとフィニックスチャンネルを使って、変化に即座に反応し、アプリケーションの現実の状態を正確に反映するアプリケーションを構築します。Elixirとフィニックスが、大量のユーザーにスケーラブルなリアルタイムアプリケーションを簡単に、そして快適に構築できるようにする方法を学びましょう。システム設計および開発のベストプラクティスを適用し、保守しやすいアプリケーションを構築します。ユーザーが実際に問題に直面する前に、アプリケーションを分解する方法を学び、自信をもって開発を進めましょう。リソース使用量を最小限に抑え、パフォーマンスを最大化したアプリケーションのデプロイを実現します。

Testing Elixir

Elixirは新しいパラダイムを提供し、従来とは異なるテスト方法を求めます。まず、単体テストから結合テストまで必要な機能をほぼすべて備えるExUnitを最大限に活用する方法を学びます。OTPベースのモジュール、非同期コード、EctoやPhoenixのアプリケーションなど、Elixir固有の課題を検証し、MoxによるモックやStreamDataによるプロパティベーステストも扱います。こうした知識により、本番サイクルに価値を加え、リグレッションを防ぐテストスイートを構築できます。

Exploring Graphs with Elixir

データはあらゆる場所に存在していますが、それらが非常にうまくつながっていないため、データセット同士を関連付けるのは非常に難しい状況です。グラフを基本的な結合手段として使うことで、データを簡単に結合し、多様なデータセット間のナビゲーション経路を構築できます。Elixirの優れた並列処理能力を加えると、データネットワークのマスターになるでしょう。Elixir内で異なるグラフモデルをアクセス・使用する方法、そしてグラフデータ構造の上に堅牢な意味論のオーバーレイを構築する方法について学びましょう。基本から始め、主なグラフアプローチを検討します。つながったデータの世界へようこそ!

Genetic Algorithms in Elixir

金融から人工知能まで、遺伝アルゴリズムは幅広い応用を持つ強力なツールです。しかし、新しい言語やフレームワークを学ぶ必要はありません。すでに使い慣れている言語で遺伝アルゴリズムについて学ぶことができます。遺伝アルゴリズムを書くために必要なアルゴリズム、技術、手法について、深く掘り下げて学びましょう。初心者向けの問題から現実の応用まで、遺伝アルゴリズムによる問題解決の基本原理を学びましょう。

Programmer Passport: Elixir

Elixirは多くの境界を越える関数型言語です。Rubyの影響を強く受けた構文、ErlangのBEAM上で動くランタイム、Lispのようなマクロシステム、Haskellを思わせるストリーミングライブラリなど、さまざまな環境の優れた特徴を取り入れています。Erlangの「Let It Crash」哲学を受け継ぎつつ、構造体、第一級の衛生的マクロ、プロトコルなどの抽象化を加えています。本書はElixirの魅力的な世界を短時間で案内します。

Build a Binary Clock with Elixir and Nerves

Elixirでコードをより良くするには、Nervesを使ってハードウェアプロジェクトを書くのがおすすめです。このバイナリ時計を構築する中で、多くの商業電話スイッチに使われているOTPを用いて、耐性(resiliency)を構築していきます。専門家が使うように、層ごとに複雑性に取り組みます。目標にたどり着くまでの小さな、検証しやすいステップを踏みながら、デバッグスキルを磨きます。完成すると、実際に動くバイナリ時計と、ハードウェアシステムに必要な作業の理解が深まります。また、今後書くすべてのElixirコードにその理解を適用できるようになります。

Build a Weather Station with Elixir and Nerves

Elixirは、信頼性、耐障害性、堅牢性の高いサーバー側アプリケーションを作るための代表的なツールです。Nervesにより、同じ利点を組み込みアプリケーションでも活かせます。本書では、ネットワーク対応デバイス向けに本番品質のNervesアプリケーションを設計、構築、デプロイする方法を学びます。気象観測センサーハブを題材に、組み込みNervesデバイスからPhoenixバックエンド、Grafanaによる時系列データ可視化まで、フルスタックのIoTソリューションを構築します。

Concurrent Data Processing in Elixir

スケーラビリティや耐障害性を損なわず、Elixirで並行コードを書いてアプリケーションの性能を高める方法を学びます。バックグラウンドタスクや並行データ処理は多くのプロジェクトに有効ですが、OTPや各種ライブラリの選択は簡単ではありません。どのSupervisorと戦略を使うのか、GenServerは必要か、バックプレッシャーにはGenStage、Flow、Broadwayのどれが適するのかを理解し、高速で障害に強く、拡張しやすいアプリケーションを構築します。

Programming Phoenix LiveView

従来のリクエスト・レスポンス型ウェブアプリケーションの時代は終わりましたが、ユーザーが求める対話的なアプリケーションを作るために、JavaScriptの海をかき分ける必要はありません。Phoenix LiveViewなら、信頼性を損なわず、高速で高度に対話的なアプリケーションを構築できます。本書は単なるリファレンスではなく、LiveViewで考え、専門家のようにレイヤーごとにコードを書き、最良の性能を引き出す技法を学ぶためのガイドです。

資料

貢献

貢献はいつでも歓迎します。ルールに従ってください。

ライセンス

本作品は Creative Commons Attribution 4.0 International License の下で提供されています。