Elixir(エリクサー)はプログラミング言語の名前です。アプリケーション開発のためのフレームワークです。年代に開発が始まったばかりの「新顔」です。別々の存在なのですが、本シリーズではこれらを同時並行的に解説していこうと考えています。アプリケーション開発にあります。機能を網羅的に説明したリファレンスではありません。サイトを想定し、その完成に向けて作業を進めながらプログラミングを学んでいくというスタイルで書かれています。アプリ開発に初めて挑戦する人を想定しています。周辺技術についてもかなり丁寧に説明しています。サイトの制作・開発に携わっている方々にとっては、既知の話が続く場面があるかもしれませんが、お許しください。比較する記述がところどころにあります。書く」という感じの注釈を加えています。強い影響を受けており、外見的にかなり似たところがあります。開発の経験者が本書を読むケースも多いだろうと考え、このような書き方を採用しました。知識は本シリーズを読むための前提ではありません。アプリを作りながら、以下に挙げるテーマについて学習していきます。巻であえて扱わなかった主なテーマを列挙しておきます。「存在価値」と言ってもいいようなものですが、本書の想定読者には高すぎるハードルであると考えました。巻以降でおいおい解説していく予定です。1,000円(+税)本書は、『Elixir/Phoenix初級』シリーズの第4巻です。第2巻から作り始めた簡易予定表管理システムNanoPlannerの機能拡張を進めながら、プログラミング言語ElixirとWebアプリケーション開発フレームワークPhoenixの学習を並行的に進めていきます。本巻は大きく5つの部分に分かれます。バリデーションとエラーメッセージの表示(第13章から第18章)第2部(第2章から第4章)では、Phoenixのバージョンを1.3から1.4にアップグレードします。前巻で行った1.2から1.3へのアップグレードと比べると作業量は少ないのですが、フロントエンドビルドツールがBrunchからwebpackに切り替わったので、手順はそれなりに複雑です。第3部(第5章から第8章)では、NanoPlannerに登録された予定項目を特定の条件に基づいて絞り込む方法について学習します。具体的には「今日」という時間範囲の中にある項目だけを一覧表示するにはどうすればいいのかを考えます。簡単そうに思えるかもしれませんが、日付をまたぐ予定項目のことを考慮に入れると、意外に難しいです。第4部(第9章から第12章)のテーマは真偽値とチェックボックスです。ある時刻に始まりある時刻に終わる予定項目しか扱えなかったNanoPlannerに、「終日」という概念を導入します。その結果、ある日付からある日付まで続く予定項目を管理できるようになります。ユーザーが「終日」チェックボックスをOn/Offしたときのユーザーインターフェースをどうするか、データベースにどのような値を記録すればいいのか、さまざまな側面について検討します。分量的にもっとも長い第5部(第13章から第18章)では、Phoenixアプリケーションにおけるバリデーション(値の検証)の初歩を学びます。本巻の副題になっていることからもわかるように、本書の山場です。第13章で「空の件名が入力されたらエラーにする」という仕様を実装します。これは、最も単純なバリデーションです。次に、第14章でBootstrapのスタイルシートを用いてエラーが起きた入力欄のスタイルを変更します。第15章では、Gettextモジュールを用いた国際化について学び、エラーメッセージを日本語で表示できるようにします。第16章から最終章では、NanoPlannerに文字列の長さと日付・日時の前後関係に関してバリデーションを行う機能を追加していきます。プログラミング言語Elixir自体の学習という側面から見ると、パターンマッチングを用いた関数定義が頻出することが本巻の特徴です。皆さんの大好きなパイプ演算子を使って工夫したコーディング例も多く用意しました。関数型プログラミングの楽しさが読者の皆さんに少しでも伝われば幸いです。1,000円(+税)本書は、『Elixir/Phoenix初級』シリーズの第3巻です。前巻で作成した簡易予定表管理システムNanoPlannerの機能拡張を進めながら、プログラミング言語ElixirとWebアプリケーション開発フレームワークPhoenixの学習を並行的に進めていきます。この巻では、Elixirに関する新しい知識はほとんど出てきません(第3章で触れるコードフォーマッターとモジュール属性の話を例外として)。その代わり、Phoenixに関する新たなテーマが次々と登場します。本巻は、大きくふたつの部分に分けられます。全体の5分の1程度を占める前半部分(第1章から第4章)では、Phoenixのバージョンを1.2から1.3にアップグレードする手順を解説します。1.3で採用された新しいディレクトリ構造と命名規則に合わせてNanoPlannerのソースコードを書き換えていきます。その過程で、「コンテキスト」という新しい概念について学習します。後半部分(第5章から第15章)で、本巻の副題にもなっているフォーム構造体とチェンジセットについて学習します。そのための演習として、私たちは予定項目を追加・編集・削除する機能をNanoPlannerに加えていきます。第5章では「HTMLフォーム」について概要を説明します。Phoenix以外のプラットフォームでWeb開発をした経験のある方にとっては、既知の内容ばかりかもしれません。第6章のテーマは経路(route)設定です。verb)しか扱いませんでしたが、本巻ではPOST、PUT、DELETE、などのHTTP動詞に対応する経路を設定します。リソースという概念を利用して複数の関連する経路群を効率よく定義する方法についても紹介します。第7章では、チェンジセットと呼ばれる構造体について学習します。データベーステーブルにレコードを挿入したり、既存レコードの値を変更する際にこの構造体が重要な役割を担います。第8章から第11章では、それまでに学んだ知識を利用して予定項目の追加・編集機能をNanoPlannerに加えます。第12章では、部分テンプレートを利用してEExテンプレートから重複を取り除く方法について学びます。第13章では、予定項目の削除機能を実装します。続く第14章では、ユーザーに完了した操作の結果を通知する方法(フラッシュ)とこれから行う操作の確認を通知する方法(ポップアップとモーダル)を学びます。最後の第15章では、仮想フィールドという概念が登場します。この概念自体はそれほど難しくないのですが、そこにセットされた値をデータベースとの間で同期するのにちょっとした工夫が必要になります。この章は、やや手強いかもしれません。5.0初級』シリーズの第4巻です。前巻に引き続き、簡易予定表管理システムPicoPlannerの開発を行いながら、RailsにおけるHTMLフォームの取り扱い方について学んでいきます。導入部に当たる第1章を除くと、この巻の内容は三つの部分に分類できます。バリデーションとエラーメッセージ「今日の予定表」機能とは、今日始まる予定項目および昨日以前に始まって継続中の予定項目をリスト表示する機能です。この機能を実装する過程で、私たちは「七つの基本アクション」に含まれないアクションを定義する方法、時刻を基準としてデータベースのレコードを絞り込む方法、BootstrapのNavコンポーネントの使い方、などの知識を得ます。続いて、「終日」フラグの導入により、一日中続く予定項目や開始と終了の時刻がはっきりしない予定項目をPicoPlannerで扱えるようにします。ここでのメインの学習目標は、ブーリアン(真偽値)という型の値をRailsおよびデータベースで扱う方法です。HTMLフォームにチェックボックスを設置する方法、jQueryを利用してチェックボックスの状態に応じてフォームの一部の表示・非表示を切り替える方法についても学びます。最後に、Railsのバリデーション機能について学びます。この機能自体はそんなに複雑なものではありませんが、現実のWebアプリケーション開発で応用しようとするとさまざまな工夫が必要となります。日付や時刻に関わるバリデーションを丁寧に説明しました。バリデーションが失敗したことをユーザーに知らせるため、フォームのビジュアルデザインを制御する方法についても丁寧に説明しました。ラベル文字列や入力欄の枠線に色を付けたり、日本語でエラーメッセージを表示しながら、RailsとBootstrapのさまざまな小技を学んで行くことになります。第12章「フォームビルダーの拡張」では、オブジェクト指向プログラミングの「華」とも言える「委譲(delegation)」という概念が本シリーズで初めて登場します。方は理解するのに少し時間を要するかもしれませんが、大事なところなのでじっくりと腰を据えて取り組んでいただきたいと思います。初級5』(2017年秋〜冬刊行予定)に進んでください。扉・目次・奥付を除いた本文の分量はB5変型判(一般的なコンピュータ書の判型)で186ページ相当です。インストール手順書』の改訂版に当たります。サーバーの起動と終了までが本書の範囲です。学習を始めようとしている初学者向けに、学習と開発の環境を整える方法をまとめた解説書です。Rails自体についてはほとんど説明していませんので、その点ご了承ください。インストール手順書』との相違点をまとめると、次のようになります。MySQL)のセットアップ方法を解説した。セットアップ方法を解説した。VirtualBoxを利用してWindows上にUbuntuの仮想環境を構築すれば、本書を使って学習を進めることができます。VirtualBoxのインストール方法や使い方については本書では解説しません。スタートアップガイド』を参照してください。Kindle版とペーパーバック版があります。インストール手順書』の増補改訂版にあたります。B5版で60ページ相当の内容が追加されています。章までについては、大きな変更点はありません。正式リリースされましたら、あまり時間をおかずに、本書の改訂版を出す予定です。※当面の間、紙版(ペーパーバック版)を出す予定はありません。450円(+税)本書は、VirtualBoxとUbuntuをWindowsパソコンに導入する手順を丁寧にまとめた初心者向けの解説書です。多数のスクリーンショットを掲載した点が特長です。本書が想定している主な読者は、これからRubyやPHPを用いてWebアプリの開発に取り組みたいと考えている方々です。RubyやPHPの開発現場ではLinuxの世界で生まれたソフトウェアが使われることが多いので、WindowsユーザーもはじめからLinuxの環境で学習する方がいいと筆者は考えています。そこで登場するのがVirtualBoxとUbuntuです。VirtualBox(バーチャルボックス)は、「仮想マシン」を作るソフトウェアです。あなたのWindowsパソコンの上に「仮想マシン」を作れば、そこに別のOSをインストールできます。他方、Ubuntu(ウブントゥ)はLinuxをベースとするOSの一種です。VirtualBoxで作られた「仮想マシン」の上にインストールすることができます。筆者が多くのLinux系OSの中からUbuntuを選んだのには理由があります。UbuntuはデスクトップPC向けのOSとして人気があると同時に、サーバコンピュータ向けのOSとしても広く普及しています。最終的にWebアプリはサーバコンピュータに設置されてインターネットに向けて公開されます。開発環境と本番環境を同一のOSで揃えることには、多くのメリットがあります。本書は全部で8章から構成されています。最初の3章でVirtualBoxとUbuntuのインストールを行い、第4章でUbuntuの基本的な操作法を学習します。最後の4章でディスプレイ、外観、共有フォルダ、ネットワークなどの設定方法を解説します。900円(+税)本書は、『Elixir/Phoenix初級』シリーズの第2巻です。前巻に引き続き、プログラミング言語ElixirとWebアプリケーション開発フレームワークPhoenixの学習を並行的に進めていきます。例題としてNanoPlannerという簡易予約表管理システムを作ります。timexライブラリ、タイムゾーン、Bootstrapのグリッドシステムこれらのうち、パイプ演算子とパターンマッチングはElixir特有の言語仕様で、慣れるまで時間がかかるかもしれません。『Elixir/Phoenix初級1』とは内容的に独立しています。前巻で例題として作成したWebアプリModestGreeterの開発を続けるのではなく、別のWebアプリを最初から作っていくので、『初級1』を読んでいなくても本書での学習を進めることができます。本文の中でしばしば『初級1』を参照していますし、『初級1』で説明したことについてはごく手短に済ませたり、解説を省いたりしています。できれば『初級1』を手元において必要に応じて復習しながら学習を続けることをお勧めします。5.0初級2』をベースに、内容をElixirとPhoenix向けに書き直したものです。そのため、本文の一部に重複があります。5.0初級2』の該当部分とほとんど同じです。初級』シリーズの第3巻です。副題「HTMLフォーム(前編)」が示すように、この巻のメインテーマは、HTMLフォームです。ブラウザの画面上に配置された入力欄に対してユーザーが文字列を入力し、「送信」ボタンをクリックするといったユーザーインターフェースの作り方を学びます。HTMLフォームを通じて送信されたデータを処理する「アクション」の書き方についても学習します。「Parametersオブジェクト」という概念の理解が鍵になります。第二のテーマは、モデルオブジェクトやHTMLフォームを扱うための経路(route)の書き方です。verb)しか扱いませんでしたが、本巻ではPOST、PATCH、DELETE、などのHTTP動詞に対応する経路を設定します。リソースという概念を利用して複数の関連する経路群を効率よく定義する方法についても紹介します。第三のテーマは、部分テンプレートとプライベートメソッドです。いずれも重複部分を共通化して、ソースコードを読みやすくするために利用します。複雑なWebアプリを開発する上で非常に重要なところです。第四のテーマは、ユーザーが日付と時刻を入力するテキスト入力欄のデザインです。PickerというJavaScriptライブラリを利用して「カレンダーと時計」のように見えるウィジェットを導入します。最終章では日付と時刻の入力欄を分離する方法について紹介します。5.0初級2』から続いています。アプリ(簡易予約表管理システムPicoPlanner)の開発をさらに進めていきます。初級4』(2017年春刊行予定)に進んでください。扉・目次・奥付を除いた本文の分量はB5変型判(一般的なコンピュータ書の判型)で155ページ相当です。この巻のメインテーマは、モデルオブジェクトとリレーションオブジェクトです。データを総称してオブジェクトと呼びます。このオブジェクトに新しい仲間が加わるというわけです。モデルオブジェクトとリレーションオブジェクトは「データベース」に関わるオブジェクトです。この巻では、データベースの初歩についても学習します。サブテーマとして、「日付と時刻」の扱い方を学びます。文字列や整数といったオブジェクトと比べて、「日付と時刻」はやや複雑なオブジェクトです。ひとつのサブテーマは、条件分岐です。記述する方法について解説します。system)が重要テーマとなります。design)を簡単に実現できます。初級1』から内容的に独立しています。PicoPlanner)を最初から作っていきます。前巻を読んでいなくてもこの巻を用いて学習を進めることはできます。本文の中で『初級1』を参照していますし、『初級1』で説明したことについてはごく手短に済ませたり、解説を省いたりしています。できれば、『初級1』を手元において、復習しながら学習を続けることをお勧めします。年冬刊行予定)に進んでください。