トップ «前の日記(2011-12-05) 最新 次の日記(2011-12-10)» 編集

日々の破片

著作一覧

2011-12-08

_ 理想のJavaScript入門書

アスキーの鈴木さんから、テスト駆動JavaScriptをいただいた。

これは、実に良い。おれが考える理想のJavaScript入門書に限りなく近い(というか、おれが書くより良いから上方向から近い)。

まず、これはTDDの本であり、JavaScriptの問題点は、それがRubyなどのスクリプト言語より、固いプログラミング言語(JavaとかCとか)に近い構文を持っているのが原因だと思うけど、どうしても変数とか関数名とか長く書きたくなるし(これは不思議な心理的な要求による)、言語が持つ予約語自体が長いし(functionだよ)、つまりいやでもタイプミスして死ぬ。

どうすれば良いかといえば、解決方法は2つしかない。プリプロセッサを用意して未定義変数とか利用していないかチェックするか、あるいはテストするかだ。前者よりも後者のほうがまあ有意義だ。というわけで、TDDが解決方法だというのは自明なのだが、これが結構めんどうだ。理由は簡単でブラウザが(Rhyno使うとかあるけど)必要だからだ。

で、この本では、今の本だというのがまさに良いところで、JsUnitYUIといった過去の勇者たちに敬意を表しつつも、今はJsTestDriverでしょうとして(このあたりのJavaScriptのxUnit群の紹介と批評は読み物としてもおもしろい)いて、本文ではJsTestDriverを使っている。おれも早速本業ではJsTestDriverを使うことにした。

全体は3部構成で、まずはJavaScriptにおけるxUnitの紹介をしつつ、TDDの手順についての説明。まあ、普通というか常道だが、JavaScriptはコンソールベースよりもブラウザベースのほうが多いから、そのあたりの説明がうまくまとまっているのが良い。

第2部がJavaScriptのプログラミング入門で、ここが特に良い。少なくとも2010年代のJavaScript入門であれば、これを書くべきというものがこれでもかこれでもかと出てくる。というか、まったく知らないものもあって、驚く。ちなみに、おれは匿名が好きだが、この本は無名関数という用語を使っているので、そういうのが大好きな人でも安心して読めるだろう。おれは、無名という言葉は、無名市民とか無名戦士とかみたいな墓石とルサンチマンの香りがするから大嫌いなのだが、そういう言葉が好きな人もいるからそこらに記念碑とかが建てられるんだろう。というわけで、おれは、そのイヤな臭いを消すために匿名にリファクタリングしたいけどな。

で、それはどうでも良くて、つまり、この本は、20世紀に見られたJavaのようなクラスベースOOPLや、VBみたいな制御構文一直線の手続き型言語に寄りかかったJavaScriptの本ではないというということだ。

というわけで、JavaScriptで使える関数やオブジェクトのあるべき使い方が示される(というのは、TDDの究極の目的はリファクタリングにあり、リファクタリングするためには、良い書き方を知らなければならないからだ)ので、目からうろこが剥げ落ちまくる。

で、本書の半分を占める第3部のTDDの実際編となる。ここも現時点のJavaScript本としてあるべきもので、Ajax、Comet、Node.js(サーバサイド)と、実際編らしくふむふむそうやるのか、と読むことになる(もちろん、手を動かすほうがもっと良いのだろうが、JavaScriptは読めるプログラミング言語なので、読んでいるだけでえらくおもしろい)。

で、4部とついているけど、おまけみたいな感じで、TDDのパターンとしてスタブやフェイク、ダミー、モックそれぞれについて紹介など。

テスト駆動JavaScript(Christian Johansen)

強く勧める。それにしても、アスキーの黒い本のシリーズは実に良いな。

というか、強く勧めるどころか、題名は「テスト駆動」とかついているが、手続き的な書き方は知っているプログラマ(超初心者というわけではないという意味)が、JavaScriptの入門書を買うのであれば、サイよりも、何よりも、この本を買うべきだ。そして、この本を参照しながら、開発するべきだ。つまり、これがJavaScript入門書のスタンダードだ。(バイブルがサイなら、実用書がこれというか、ECMAの仕様書とこの本があればサイはいらない気がする)

_ 補足

これだけすごい本なのだから、amazon.comでも大絶賛の嵐だろうと思ったら(おれは、結構、USのamazon評は信用できるような気がしてるんだ。経験則だけど)、星1つがいくつかある。

Test-Driven JavaScript Development (Developer's Library)(Johansen, Christian)

(.comのほうにリンクしているわけじゃないので注意。.comへのリンクは上にある)

なぜだ? と思ったら、Kindle版が高いとか、Androidじゃ読めねぇとか……うーん、書籍そのものについての批評と、メディアの批評が同じ重み付けになるのは、あまり良くないなぁ。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

ジェズイットを見習え