---
# System prepended metadata

title: いまElixirとPhoenixが求められる理由

---



[「とは何か」と「仕組み」節の構成を統一する · Issue #14 · elixirjp-slack-com/webdbpress-vol127](https://github.com/elixirjp-slack-com/webdbpress-vol127/issues/14)

[「技術仕様」節の構成を統一する · Issue #15 · elixirjp-slack-com/webdbpress-vol127](https://github.com/elixirjp-slack-com/webdbpress-vol127/issues/15)

[RealWorld節の構成を統一する · Issue #16 · elixirjp-slack-com/webdbpress-vol127](https://github.com/elixirjp-slack-com/webdbpress-vol127/issues/16)


-----

chapter1.md:□1章：なぜいまWebサービス開発でElixirなのか

# いまElixirとPhoenixが求められる理由
## 昨今のWebサービスへの要求
### 大量のクライアントによる接続
### インタラクティブなフロントエンドによるリッチなUX
## Phoenix：Elixir製のWebフレームワーク
### 軽量プロセスを活かした並行処理
### Phoenix LiveView：バックエンドとフロントエンドのElixirによる統合
## 主要なライブラリのマイルストーンリリース
### Phoenix 1.6
### LiveView 0.16

# Elixirを始める
## Elixirのインストール
### パッケージマネージャーasdfによるインストール
### Dockerによる実行
## IEx：REPL操作を提供するCLIアプリケーション
## 依存パッケージの利用
### 依存パッケージの宣言
### 依存パッケージの動的な利用

# 本特集を読む上で最低限必要なElixirの特色
## 関数型言語であること
### パターンマッチ
### イミュータブルな変数
### パイプ演算子によるフロー処理
## モジュールによって実装すること
### モジュールの命名規約
### モジュールの実装
## 軽量プロセスを数多く起動すること
### プロセスの起動
### 高度なプロセスの利用

# 本特集の構成
## RealWorld：シンプルなブログの実装例
## Realworldの開発で学ぶElixirによるWebサービス開発

# おわりに
#### IoTやAI分野でもElixir

chapter2.md:□2章：Phoenixを用いたWebサービスの開発

# この章で達成すること

# Phoenixとは何か
## Phoenixが解決すること
## Phoenixの特徴

# Phoenixの基礎知識
## Phoenixのディレクトリ構成
### Contextsによる機能のグループ化
## リクエストルーティング
## Mixタスクによるスキャフォールディング

# Phoenixの実践的な使い方
## 事前に必要なもの
### Elixir
### Postgres
## Phoenixのインストール
## Phoenixプロジェクトの作成
## phx.gen.htmlによるスキャフォールディング
## Phoenixの起動

# PhoenixによるRealWorldの開発
## 記事一覧/投稿/削除/編集機能の実装
## コメント機能の実装
## 実装した機能のテスト
### 記事一覧のテスト

# おわりに

# コラム: Phoenixアプリケーションのデプロイについて

chapter3.md:□3章：EctoによるDBアプリケーションの開発

# この章で達成すること

# Ectoとは何か
## Ectoが解決すること
## Ectoの特徴

# Ectoの基礎知識
## 主要コンポーネント
### Ecto.Repo --- データストアのラッパー
### Ecto.Query --- Elixirシンタックスで書けるクエリ
### Ecto.Schema --- データソースとElixir構造体のマッピング
### Ecto.Changeset --- 外部パラメータのフィルター、キャスト、バリデーション
## データベースを利用するアプリケーション開発に欠かせないもの
### マイグレーション
### トランザクション

# Ectoの実践的な使い方
## データベース作成
## マイグレーション
## データ操作
### 作成(Create)
### 読み出し(Read)
### 更新(Update)
### 削除(Delete)
## データリセット

# EctoによるRealWorldの開発
## コメントと記事を関連づけた保存の実装
## タグと記事を関連づけた保存の実装
## タグによる記事検索の実装
## タグによる記事検索のテスト

# おわりに

chapter4.md:□4章:phx.gen.auth を用いた安全な認証機能の開発

# この章で達成すること

# phx.gen.authとは何か
## phx.gen.authが解決すること
## phx.gen.authの特徴

# phx.gen.authの基礎知識
## phx.gen.authが生成する機能
## 認証機能
### 新規登録
### ログイン・ログアウト
## 確認処理による本登録
## email・パスワード変更
## パスワードリセット

## 認証形式
### トークンベース
### DB管理とTTL

## アクセスコントロール
### pipelineによる処理の共通化
### 認証を必要とするscope 必要としない scope

# phx.gen.authの実践的な使い方
## パスワードの最低文字数を変更する
### パスワードバリデーション
### テストの修正

## メールの送信方法を変更する
### ブラウザで見る
### SMTP
### SendGrid

# phx.gen.authによるRealWorldの開発
## 認証機能を追加する
## 現在ログイン中のユーザーを取得する
## 記事の投稿に Author を追加する
## コメントの投稿に Author を追加する
## アクセスコントロールをテストする

# おわりに

chapter5.md:□5章：LiveViewによるフロントエンドの開発

# この章で達成すること

# LiveViewとは何か
## LiveViewが解決すること
## LiveViewの特徴
~~### LiveViewの仕組み~~
~~### 他のフロントエンド技術との比較~~
~~### LiveViewのユースケース~~

# LiveViewの~~技術仕様~~基礎知識
## LiveViewのディレクトリ構造
## LiveViewのライフサイクル
## UIの制御
### HEExテンプレート
### DOMバインディング
### ルーティング
~~### JavaScriptとの連携~~
## 状態の管理と更新
~~## 状態の制御~~
~~### 状態の管理と更新~~
~~### ファイルアップロード~~
~~### PubSubによるリアルタイム更新~~
~~## Phoenix.LiveViewTestによる結合テスト~~
~~## 実装例 --- シンプルなカウンター~~

# LiveViewの実践的な使い方
## ファイルアップロード
## PubSubによるリアルタイム更新
## JavaScriptとの連携
## Phoenix.LiveViewTestによる結合テスト
## 実装例 --- シンプルなカウンター

# LiveView~~での~~によるRealWorldの開発
## 画面の実装 --- 記事一覧/作成/削除/更新
## コンポーネント分割
### Phoenix.Component --- ステートレスなコンポーネント
### Phoenix.LiveComponent --- ステートフルなコンポーネント
## データの更新をリアルタイムに反映
### 記事の登録を一覧と詳細に反映
### 記事の更新を一覧と詳細に反映
### 記事の削除を一覧と詳細に反映
## タグによる記事検索のテスト

# おわりに