Javascript

Meteorの前にはDerbyがいた: サーバサイドJavaScriptフレームワークの競争が活況

次の記事

Facebook初の業績報告会見:マーク・ザッカーバーグとシェリル・サンドバーグの発言ハイライト

Nodejs_logo_light

Google DocsのようなリアルタイムのJavaScriptアプリケーションを作るためのフレームワークMeteorが先日、1120万ドルという大きな資金を獲得したばかりだが、でも選択肢はほかにもある。今週初めの記事では、Yahooが開発したフレームワークMojitoを紹介した。しかし実は、Meteorよりも前から、Derbyという現役選手がいたのだ。

DerbyもMeteorやMojitoと同じく、クライアントサイド/サーバサイド両方のJavaScriptフレームワークで、リアルタイムのアプリケーションを作るために用いる。その同期化エンジンRacerは、単独でも利用できる。

Nate Smith(元Google)とBrian Noguchiがこのフレームワークの中心的デベロッパで、両人はLeverというステルスなスタートアップのファウンダでもある。“うちの資金基盤は安定している”、とSmithはプロジェクトのGoogle Groupに書いている。“うちのビジネスモデルはMeteorとは相当違う。うちはサービスよりもプロダクトに軸足を置いた企業としてフレームワークをサポートしていく”。一方Meteorはあくまでも、Meteor Development Groupが開発提供しているPaaSプロダクトだ。

技術的に大きな違いは、サーバサイドのJavaScriptの扱い方だ。どちらもサーバサイドではNode.jsを使うが、MeteorではFibersというライブラリを使うので、アプリケーションを書くときNode.jsで書いているという感じにはならない。Node.jsはデフォルトではコールバックを使う(用語説明が必要な人はとりあえずここを見て)。Fibersはコールバックを抽象化しているので、デベロッパは従来のふつうのプログラミングのスタイルでコードを書いていく。Node.jsのコミュニティでは今でも、Fibers派とコールバック派の論争が絶えない。Fibers派は、コールバックを直接書くよりも簡単だ、と言う。Node.jsを開発/メンテしている人たちは、声ばかりでかい少数派の連中がFibersを好んでいるだけだ、と主張する。そうだとしても、コールバックが嫌いなデベロッパはそれだけで、Node.jsを敬遠してしまうだろう。Node.jsの成功の鍵はコールバックの採用にあった、という説もある。サーバサイドJavaScriptの試みは、この言語が使われ始めた1995年ごろからすでにあるが、実用レベルに達した成功作はNode.js(2009年)が初めてである。サーバサイドJavaScriptのそれまでの失敗作の多くは、JavaScriptを従来的なプログラミングの形式に押し込もうとしていた。それに対してNode.jsは、JavaScriptの非同期な性質をうまく利用したのだ*。〔*: コールバックは、単純に言うと、プログラマが何かの処理内容を直接書くのではなく、その処理の実行をスケジューラ/ディスパッチャやイベントハンドラにお願いするコードを書く。つまり、お願いしたときと、目的の処理が実際に実行されるときとが非同期になる(訳者の私見では、慣れるとプログラミングはこっちのほうが楽で、コードの見通しも良くなる)。〕

でも、どちらかのやり方だけが完全にダメということはない。Cloud9 IDEでNode.jsのメンターをしているTim Caswell結論では、“新人にそんなツールは決して使うなと言うのではなく、まずNode.jsの基礎をしっかり修得し、自由に快適に使えるようになったら、いろんなツールをトライしてみるのもいいだろう”、ということだ。つまりツールに対する価値判断は、Node.jsをよく分かっている者が自分でやるべきこと。

いずれにしてもこれは、どちらかが一人勝ちできる世界ではない。優劣を決めるのはコミュニティだろう。Matt Asayが言ってるように、VCのお金でコミュニティを買うことはできない。しかもNode.js開発ツールでは、どのコミュニティも若い。寄与貢献者の数ではMeteorがDerbyをやや上回っているが、両者とも複数の外部スポンサー企業がいる。またどちらも、ML(メーリングリスト)上のコミュニケーションが非常に活発だ。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中