今年はJavaScript Yearになるのか?

ハイパフォーマンスJavaScript

ハイパフォーマンスJavaScript

最近、オライリーからJavaScript関係の本が続々出てる。今年は、JavaScriptが本格にくるらしい。たしかにnode.jsも盛り上がってるし、新しいもの取り込みが遅れ気味な業務系システムの開発でも非FlashでのRIA、つまり、Ajax+DHTML(でも最近このキーワード聞かないよなぁ。)でのフロント構築がほぼ必須になっている。(他にもRIA技術はあるけどね)さすがにHTML5の流れはまだ来てないけどね。それでも、ユーザは「ねぇ、GoogleみたなUIになんないの?」「iphone対応とかは?」みたいな事は言うので、その日も遠くはないだろうな。

個人的には、HTML5が普及して、IE6/7/8が消えてくれると非常に助かると思ったら本日のニュース。
http://www.publickey1.jp/blog/11/internet_explorer_9314ie10.html

これでやっと、メジャーなブラウザが一応HTML5対応になった訳だ。各ユーザ企業の皆様におかれましては標準ブラウザのバージョンアップを検討頂きたく。。。ただ、まだIEにこだわる必要がどれほどあるんだろうかはしらんけど。

でもこの流れも良い事ばかりではない。

これだけJavaScriptが言語として盛り上がってくると、当然、いろいろと別の問題も生じる。よくJava屋さんが、クライアントサイドのJavaScriptフレームワークとか考えちゃうと、クラスベースのオブジェクト指向にどっぷりなので、クラスという発想から抜けれないこと。巨大なクラスの継承ツリーとか見ると引きます。。。プロトタイプベースのオブジェクト指向言語であるJavaScriptでは、クラスという概念はない。でも、まあそれも仕方ない。だって、

 var hoge = new Object();

って文法なんだもん。こういう書き方だと、そりゃクラスベースの発想になるもの無理ない。(それにclassというキーワードも将来の拡張の為の予約語だったりする。。。)なので、自分は、こっちの書き方の方を好んで使います。タイプも楽だしね。

 var hoge = {};

このあたりの、JavaScriptの残念な点は、

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

に詳しいです。

その悪い部分に加えて、JavaScriptの言語仕様としての自由度の高さが、様々なコーディングスタイルを生み出し、邪悪な暗黙的なグローバル変数及び、IEの中途半端なDOM イベントモデルと合成されると、もう「保守性?拡張性?なにそれ?」的なUIの一丁あがりです。こういった問題は、jQueryとか、最近はあまり流行っていないけどPrototype.js等を使えば、ある程度回避できるんだけど、操るプログラマの力量に大きく左右される言語である事は間違いない。

自分の場合は、大規模で使う場合は、そのドメインで使うUIコンポーネントを作って、その後に、そのUIコンポーネントのDOM構造を扱うAPIを予め設計して、みんなでそれを使うという方法をよく採用する。それとは別にでCSSフレームワークもしっかり設計しておく。DSLの発想にかなり近い考え方で、保守性の向上と、生産性の向上を両立している。もちろんドメインが限定されるというデメリットはあるけどね。

えええと。。。何の話だっけ?

JavaScriptが流行るかという話か。うーん。わかりません。サーバサイドJavaScriptが大きな鍵を握っているとは思うけど、RilasレベルのJavaScriptフレームワークが出たりなんかすると面白い事になるだろうなぁ。

・追記

こんなの発見

JavaScript quiz
http://perfectionkills.com/javascript-quiz/

これはキツイ。特に後半。言語仕様を相当熟知してないと解けない。
自分は8点でした。。。人にJavaScript教える資格ねぇ〜。