フォーム構造体とチェンジセット
本書は、『Elixir/Phoenix初級』シリーズの第3巻です。前巻で作成した簡易予定表管理システムNanoPlannerの機能拡張を進めながら、プログラミング言語ElixirとWebアプリケーション開発フレームワークPhoenixの学習を並行的に進めていきます。
ただしこの巻では、Elixirに関する新しい知識はほとんど出てきません(第3章で触れるコードフォーマッターとモジュール属性の話を例外として)。その代わり、Phoenixに関する新たなテーマが次々と登場します。
本巻は、大きくふたつの部分に分けられます。全体の5分の1程度を占める前半部分(第1章から第4章)では、Phoenixのバージョンを1.2から1.3にアップグレードする手順を解説します。具体的には、Phoenix 1.3で採用された新しいディレクトリ構造と命名規則に合わせてNanoPlannerのソースコードを書き換えていきます。 その過程で、「コンテキスト」という新しい概念について学習します。
後半部分(第5章から第15章)で、本巻の副題にもなっているフォーム構造体とチェンジセットについて学習します。そのための演習として、私たちは予定項目を追加・編集・削除する機能をNanoPlannerに加えていきます。
第5章では「HTMLフォーム」について概要を説明します。Phoenix以外のプラットフォームでWeb開発をした経験のある方にとっては、既知の内容ばかりかもしれません。第6章のテーマは経路(route)設定です。『初級1』では、GETというタイプのHTTP動詞(HTTP verb)しか扱いませんでしたが、本巻ではPOST、PUT、DELETE、などのHTTP動詞に対応する経路を設定します。 また、リソースという概念を利用して複数の関連する経路群を効率よく定義する方法についても紹介します。
第7章では、チェンジセットと呼ばれる構造体について学習します。データベーステーブルにレコードを挿入したり、既存レコードの値を変更する際にこの構造体が重要な役割を担います。
第8章から第11章では、それまでに学んだ知識を利用して予定項目の追加・編集機能をNanoPlannerに加えます。第12章では、部分テンプレートを利用してEExテンプレートから重複を取り除く方法について学びます。
第13章では、予定項目の削除機能を実装します。続く第14章では、ユーザーに完了した操作の結果を通知する方法(フラッシュ)とこれから行う操作の確認を通知する方法(ポップアップとモーダル)を学びます。
最後の第15章では、仮想フィールドという概念が登場します。この概念自体はそれほど難しくないのですが、そこにセットされた値をデータベースとの間で同期するのにちょっとした工夫が必要になります。この章は、やや手強いかもしれません。