パーフェクトJavaScript (PERFECT SERIES 4)
過去の2冊にならって、「パーフェクトJavaScript」の振り返りを書きます。
パーフェクトJava
実践JS サーバサイドJavaScript 入門
Part1 概論
「サーバサイドJavaScript」本と内容が一部被っている、かつそんなにぶっ飛んだことも書いていません。序章として軽く読み飛ばしてください。
Part2 JavaScript言語仕様
このパートから本題です。
Part2はJavaScriptの言語仕様の解説です。最初の2章でざっと広く浅く流して、その後の3章から7章でもう一度深く説明する構成にしました。「パーフェクトJava」には本書の2章に当たる広く浅く流す章はないので、少し違うスタイルを試してみました。予備知識の少ない人には「パーフェクトJavaScript」スタイルのほうが良い気がします。欠点は同じ説明を微妙に繰り返す必要がある点です。
3章から7章の各論をどういう順序にするかはプログラミング本を書く時に頭を悩ます部分です。説明する順序は重要です。個人的には下から積み上げる説明がもっともわかりやすく感じます。なるべく前提が不要な原理原則の説明が先にあり、その説明を元に積み上げるように説明が続く構成です。何かを読む時、前提知識が可能な限り少なく済むのが脳に優しいと思うからです。本の前半の内容を前提に後半が書かれていて、その傾斜がなだらかであればあるほど易しく感じます。
ただこの理想的な構成にこだわると前半が抽象的になりすぎる危険があります。そして、抽象論と具体例のバランスの取り方を誤るとてんで意味不明の本になります。すごく頭が良ければ抽象論だけの本でも構わないかもしれませんが、ぼくは抽象論だけで理解できるほど頭がよくありません。抽象だけで説明されると腑に落ちません。しかし具象だけだと話がつながらない感じがして気持ち悪く感じていらいらします。そんなわけで、基本的には抽象と具象を同時並行で一緒に説明します。一緒に説明と言っても、頭の中身を一気にコピーはできません。言語にシリアライズして伝達しないといけないので説明には順序が発生します。抽象だけが続くとぼんやりし、具象だけが続くといらいらします。難儀です。
結果として次の構成になっています。
- 3章 JavaScriptの型
- 4章 文、式、演算子
- 5章 変数とオブジェクト
- 6章 関数とクロージャ
- 7章 データ処理
変数とオブジェクトより先に型の説明は変だろう、と言う人もいるかもしれませんが、2章で全体を軽く流しているので成り立っていると思っています。
ただ結局のところ、伝達が正しくできているのかはわかりません。
Part3 クライアントサイドJavaScript
土江さんによるパートです。DOMの話、イベントの話、AJAX、クロスオリジン通信と盛りだくさんです。ライブラリはfeaturing jQueryです。
Part4 HTML5
ミスターHTML5の浜辺さんのパートです。パーフェクトJavaScriptはHTML5本として後発だと思いますが、後発の良さとして、おおよそHTML5の主要な部分をきれいに切り取れていると思います。HTML5関連で抜けている大きなトピックはCSS3ぐらいでしょうか。
Part5 Web API
Web APIってJavaScriptと関係あるの?、と言われそうですが、クライアントサイドJavaScriptからクロスオリジン通信でかつOAuth使って、認証が必要なWeb APIを叩くのが201x年代のトレンドです。AJAXのようなキャッチコピーがないのと、本の中でも書きましたが、高度にAPIが進化するとJavaScriptの存在が隠蔽されるので目立ちませんが、トレンドです(たぶん)。
20章の実例ではTwitter、FacebookなどのWeb APIの実例を載せて大衆に媚びました。でも少し内容が薄いかもしれません。雰囲気をつかんだら自分でリファレンスを調べてください。
Part6 サーバサイドJavaScript
「実践JS サーバサイドJavaScript 入門」のリベンジ(?)でNode.jsを2章書きました。この2章を読んだだけでNode.jsマスターにはなれませんが、その辺の女子大生に語れるぐらいにはNode.jsに詳しくなれると思います。
非同期プログラミングと言うか、イベントドリブンプログラミングは昔から好きですが、Webアプリに向いているかは実は微妙に思っています。Webアプリのコードの構成そのものは、単純化するとHTTPのリクエストを受けてレスポンスを返す一本道の構成です。単純なのは悪い話ではなく、むしろ利点ですが、この構成のコードにイベントドリブンが適しているかはだいぶ微妙です。Node.jsを擁護しておくと、Node.jsはWebアプリだけのためのプログラミング環境ではないですし、WebもHTTP一本やりの世界から変わっていく可能性もあります。
最近のコメント