text.ssig33.com

created at 2011-05-23 08:22:33 UTC

いい加減 node.js で何も作ったことありません、じゃダサいだろうと思ったので。

まずはこのサイトを node.js でリプレイスしてみた。あまりこのサイトをブログと呼びたくはないのだが、まず一般的なブログエンジンのうち、最も機能が少ないものを作ったといえると思う。

express(WAF), node-markdown(記法エンジン), hamljs(テンプレートエンジン) node-sqlite3(DB Driver)と必要なものは全て揃っている。めんどくさい点などはいくつかあったものの特に問題無くアプリケーションを作ることが出来た。

node.js のよいと思ったところ

  • coffee script の分かりやすい文法を使うことが出来る
    • ただ Ruby なり Python なり Perl なりと比較した時にどれだけ言語的な魅力があるかは、正直なところ、微妙という感じではある。
  • サーバーの起動終了が非常に速いので、コードリローダーなどが揃っていないにも関わらず開発のストレスが非常に低い
    • ファイルの保存をフックして node を再起動するというようなやり方でも Rails の development モードのような開発の軽快さを得られる
  • express フレームワークは Sinatra like で非常に使いやすい

node.js の悪いと思ったところ

  • 絶対的なライブラリ不足。 O/R Mapper など揃っていないので前近代的な SQL の手書きを駆使することになる。何年前の Web 開発やってんだという気分になれる。
    • MongoDB 用の O/R Mapper(のような何か)はあるので、 MongoDB を使うのがよいでしょう。
  • コールバック主体の制御。利点にして欠点。コードの見通しはかなり悪くなる。

今回は DB に SQLite3 を使うアプリケーションを作ったところ、 Sinatra だろうが express だろうが実行速度が大して変わらないという若干悲しい結末が得られました。

60req/sec ぐらいでどちらも動くので、これが SQLite3 の限界ということなのでしょう。 SQLite3 など低速なバックエンドを使うアプリケーションを制作する場合現状 node.js のメリットはほぼ無いといっていいと思います。

node.js の使い所はどちらかというと、 MongoDB 等近代的なソフトウェアを積極的に使用出来る新規に開発するアプリケーションや、イベント駆動などの特性を上手く生かせるアプリケーションということになりそうです。

ただ今後 O/R Mapping まわりとかが整ってくれば、とりあえず node.js というのも積極的な選択肢になる可能性もあるとは思います。

まあぶっちゃけ界隈の動向とかには特に注目しなくてもいいかなというのが使ってみた最終的な感想。べつに Sinatra でええわ。