最近、某案件でJavaScriptをガリガリと書く必要があって、これまでprototype.jsを使っていたのを改め、今さらながらライブラリとしてjQueryを使っています。

これはまた良いライブラリですね。

一言で言うと、「汚いけど書いてて気持ちいい」。略して「キタナ気持ちイイ」JavaScriptライブラリです。

例えば、id=elemの要素の前にある要素の幅とフォントを設定して表示してから内容を設定して選択・・・というような一連の処理を、以下のようにドット演算子でドンドン繋げて書けるのがすばらしい。

$(”#elem’).prev().width(100).css({fontSize: “12px”}).show().val(”hoge”).select();

あとは、例えば要素をグリグリ移動したりする系のWebアプリだと、自分でこんな拡張↓を書いてやると
さらに幸せになります。これは、要素のY座標を一発で取得(もしくは設定)してやる関数です。

jQuery.prototype.top = function(val) {
if (val == undefined)
return this.offset().top;
else
return this.css(”top”, val + “px”);
};

しかし、このjQueryの「キタナ気持ちイイ」感じ、どこかで見たことあると思ったら、まさしくRubyの「キタナ気持ちよさ」じゃないですか。eachとかそもそも「$」とか、人間の理解上自然な範囲でメソッドを濫用(オーバーロード)してるところとか、上のように処理の順にドット演算子でずらずらつなげられるところとかそのまんま。

前にまつもとゆきひろさんが講演で、言語の設計において多くの人が「シンプルにしすぎてしまう」という過ちを犯す、ということを話しておられました。プログラミング言語において、シンプルさイコール書きやすさ、ではないことはRubyの非シンプルさが証明しています。

考えてみればWebサービスなんかもそうですね。自分らエンジニアって、ついつい設計を美しくシンプルにしてしまう傾向があるのだけれども、それが必ずユーザーの気持ちよさに繋がっているかどうかを常に自問自答する必要がありますね。