教科書の設計について
自分が学んだことを今後どのようにまとめてゆけばよいのかについて、PHP の教科書を例に考える。
概念を学んでから最終的にアプリケーションをつくるのではなく、最初につくるべきアプリケーションの要件や機能を示した上で、概念を学んでゆく。 個別の課題はできるだけ最終成果のアプリケーションにつながるようにすべきである。重要であるがアプリケーションをつくる上で必須ではない項目は書かないか、最後の補足としてまとめる。
アプリケーションをつくる際にはマイクロフレームワークを使う。素の PHP を書いた上でマイクロフレームワークを使ったコードのリファクタリングしてもよいだろう。マイクロフレームワークを導入する前にテンプレートエンジンの導入を示したほうがわかりやすいだろう。テンプレートエンジンに最小限のロジックしか求めないので、Mustache がよいかもしれない。教科書の説明に必要な最小限のマイクロフレームワークにすれば、フレームワークの学習負担を減らすことができる。
データの保存に関しては、データベースよりも JSON 形式のテキストにすれば SQL および noSQL データベースのセットアップが不要になるので、 練習しやすくなる。データベースを使うのであれば SQLite3 がよいだろう。デフォルトで PHP に搭載されているからだ。
学習において SQL を使わないメリットはフィルタリングの操作を PHP で書く必要があるので、配列関数のトレーニングになる。また SQL に慣れてしない人が SQL でつまずく問題を減らすことができる。もっとも、高度なフィルタリングを考えると、高階関数とクロージャの学習が必要になるので、ここでつまずく可能性がある。
アプリができれば、今度は異なるプログラミングパラダイムに切り替えるために、別のフレームワークに置き換えることも考えられる。
最小限でも実用的なアプリをつくるためには PHP だけでなく、HTML5、JavaScript の学習が必要になる。
バリデーションに関して、PHP、HTML5、JavaScript を統一的に学ぶ必要がある。
JavaScript の部分の実装に関して、素の JavaScript、jQuery、MVC フレームワークの選択肢がある。
教科書の方針としては jQuery を使ったコードから MVC フレームワークを使ったコードにリファクタリングすることである。
DOM、イベント、Ajax の学習について手際よくまとめる必要がある。
PHP と JavaScript を並行して使うために、クロージャを使ったイベント駆動のプログラミングについては PHP にも説明が必要だろう。