やりたいこと -> やってみること

僕は裏で同人誌を書く(「描く」ではありません、文章を「書く」)ことなんぞをやっているのですが、そこのサイトがドメイン取ったはいいが作っていなかったので、そいつを練習がてらnode.jsで書いています。

みんなだいすきExpress

フレームワークは今のところExpressで、テンプレートエンジンはJade、スタイルシートにStylusを使う、ハズだった。
Expressは、node.jsでは割とみんな使っているRubySinatraライクのフレームワーク。要はこういうふうに書けるよってやつですね。

//サーバインスタンスを作る
var app = express.createServer();

//ドキュメントルート(/)に以下のメソッドをバインディング
app.get('/', function(req, res){
//ハローワールド!
    res.send('Hello World');
});

//3000ポートで受け付けるよ
app.listen(3000);

みたいな。これ、公式サイトにあるやつなんですけれど。あとインスタンス生成とかそういう文言でいいのかな。JavaScirpt/node.js初心者なので鵜呑みにしないでね。
Sinatraとか僕がよく使うPythonのFlaskでもそうなんですが、メソッドとバインドするURLが一対一の関係になっていて、ページをシンプルに書けるというのが特徴みたいです。
これがRailsなんかだとファイル名からどーのこーのするので、めんどくさい。あそこまでの大規模じゃなくてよくて、もちろんルーティングは正規表現なんかも使えるので、もっとシンプルに行こうじゃないかという思想です。こういうマイクロフレームワークとよばれるやつらは、いろんな言語であるみたいです。

SocketStream

で、これからの話。僕が作るページというのはワンページでJavaScriptをドバドバ使って画面遷移なしでいろいろ表示させるシンプルなものにしようとしていたので、URLルーティングでページをドバドバ変えていくようなExpressじゃ不向きじゃねえか、と思った。いや、SocketStreamを見つけるまではExpressだろうなーそうだろうなー、しかないよなーとか思っていたんだけれど。
SocketStreamなるものを見つけたわけです。こいつはSingle-page Applicationに向いているらしいフレームワーク。ExpressはJadeでテンプレートエンジンまでは面倒は見るけれど、たぶんクライアント側のJavaScriptに関しては面倒を見ないはずです(間違ったら言ってください)。SocketStreamはクライアント側スクリプトまで面倒を見る仕様です。
イマドキのWebアプリケーションで双方向にリアルタイム通信するにはWebSocketなる仕組みや、それに似せたポーリングなんかを駆使したやつを使うわけですが、そいつらをJavaScript上で使いやすくしてくれるのがSocket.IOというライブラリです。この公式サイトに超シンプルなコードがありますけれど、あらためて言いますがこれだけで通信できるなんて僕感動です。
こいつでバリバリやりとりすることで画面遷移なしで動かすっていうのをやるわけですね。
で、SocketStreamもSocket.IOの手助けを借りつつ(なんかドキュメント見るとWebSocketそのまま使うことも出来るみたいですが)こうバリバリってやっていくわけですね。
しかも超イケてるのは、CoffeeScriptがそのまま使えること。もちろんJavaScriptも使えますが。CoffeeScriptについてはこちらを。
今日から始めるCoffeeScript | tech.kayac.com - KAYAC engineers' blog tech.kayac.com
http://tech.kayac.com/archive/coffeescript-tutorial.html

はい、擬音が多くなったのはこれからやるからです。実はSocketStreamでまだ書いていない。
しかもこっちで公開できるかな……。創作アカウントとこのアカウントは分離したいんだ。

というわけで、今後も躓いたり発見したことをここに書いていきます。