最近のクライアントサイド技術事情

なんかまたしても混沌としてきたクライアントサイド技術。
一度まとめた気がするけど、その時よりもさらにいろんなタイプがでてきたので、
もう一度まとめてみる。


ざっくりまとめると自分の中のJavaScript系クライアントサイド技術は

  1. ライブラリ系
  2. コンポーネント指向
  3. イベントハンドリング系FW
  4. クライアントサイドMVC

に分けられる。

まず「ライブラリ系」
これは、jQueryとか underscore.jsとかフレームワークとかに依存しなくてよくセットで使われるやつ。
zepto.jsでもいいかもしれない。



コンポーネント指向」のやつはいわゆるウィジェット
jQuery UIだとか、Kendo UI だとかUIコンポーネントをはめ込むやつ。
Ext JSGWTとかもそうだし、Sencha Touchとかもそうだと思う。
あとあまり知られてないかもしれないけど、ajax.org は凄いっす。
ajax.orgはCloud9 IDEも作っている。c9.ioでコードホスティングしてるサービスのソースコードがまるごとGitHubにあがっているからそれを見てみるのも面白い。
https://github.com/ajaxorg/cloud9
(※GWTコンポーネント指向というよりJavaの型付けができるのが肝というのでコンポーネント指向から外しました。出てきた時代からコンポーネント指向に分類したが、確かにGWTの肝はそこじゃないなーと思ったので訂正します)


で、その後に出て来た「イベントハンドリング系FW(フレームワーク)」。
ActiveJSKnockoutjsとか。これはクリックをした時とかのイベントのハンドリング(バインディング)を簡単にしたJSフレームワーク
※注)自分なりの乱暴な分け方なので、その他の機能も比べてほしいところ。ただ自分の理解としては一番肝になるのは「イベントハンドリング」のところかなと。Knockout.jsは「イベントバインディング系FW」かも。



最後に「クライアントサイドMVC」。
backbone.jsbrunch.ioTower.jsあたりのもの。さらにbackbone.jsの後発としてbrunch.ioやTower.jsがあると思っている。
brunch.ioとTower.jsが後発と言ったのは、これらはJavaScriptじゃなくてCoffeeScriptで書いているところ。
さらにサーバーサイドもnode.jsとセットになって使われている。
個人的にはTower.jsのRailsライクな書き方が気に入っているのだけど、サーバサイドがnode.jsなのがどうしようかなぁと迷っているところ。




とりあえず、ざっとこんな感じ。
何も考えずに書いたし、あくまで自分の中の分類なので間違っているところがあったら指摘して欲しいです。


つぎはTower.jsのインストールについて書こうかな。