[「とは何か」と「仕組み」節の構成を統一する · 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 --- ステートフルなコンポーネント ## データの更新をリアルタイムに反映 ### 記事の登録を一覧と詳細に反映 ### 記事の更新を一覧と詳細に反映 ### 記事の削除を一覧と詳細に反映 ## タグによる記事検索のテスト # おわりに