Rails開発者ら、JavaScriptフレームワーク「Cinco」を発表
Ruby on Railsの生みの親、DHH(David Heinemeier Hansson)らが、モバイル向けのフレームワーク「Cinco」(シンコ)を間もなくオープンソースで公開する模様です(思わせぶりなブログエントリ)。以下は、37signalsのCincoを使った最初のモバイルアプリ「Basecamp Mobile」のデモ映像です。
Cinco自体はまだソースコードが公表されていません。準備が整うまでに数カ月かかるだろと言っています。Cincoはモバイル向けフレームワークで、「基本的には単一ページのJavaScriptアプリを扱うためのRailsだ」と説明されています。対応するプラットフォームは、
- iPhone 3GS
- iPhone 4
- iPad
- Motorola Droid X
- Motorola Droid 2
- Samsung Galaxy S
- HTC Incredible
- HTC Evo
- Palm Pre 2
- BlackBerry Torch
など、WebKitベースのブラウザを搭載するモバイル端末であれば動くよ、ということです。cincoはスペイン語でfiveの意味ですから、5種類の端末というイメージからの命名でしょうか。HTMLシンコということでHTML5を暗示しているのでしょうか。DHHは、eco、stitch、zepto、backbone.jsなどの名前で検索すると何かが出てくるかもね、とつぶやいているので、5つのモジュールからなるフレームワークという意味かもしれません。
●なぜ作ったのか?
Basecampeは、DHHがパートナーを勤める37signalsのWebアプリの1つで、プロジェクト管理サービスです。今回、これのモバイル版を作るに当たって、フレームワークを作ったということです。
すでに小規模向けCRMのHighriseというサービスではモバイル版としてiPhoneアプリを出したりもしていますが、ずっとiPhone開発者を雇い続けなければいけないのかという違和感を感じていたといいます。Android版のために、また別に開発者が必要になる? えーっ、冗談でしょ、という。
結局、37signalsでの結論は、自分たちがいちばん得意なWeb関連技術でやろう、そうすれば、37signalsの誰であってもコードの読み書きができるし、ワークフローも非常に慣れたもののままでやっていけるから、ということだったそうです。
スキル習得や開発・維持コスト、プラットフォームの多様化、HTML5+JavaScriptの成熟スピードのことを考えれば、モバイルアプリの未来のかなり大きな部分がネイティブアプリではなくHTMLアプリにあるというのは自明という気もしますが、37signalsのような会社がハッキリとそれを言って、フレームワークまで作ったというのはインパクトがあると思います。別の注目株として、jQuery Mobileも今日、3つ目のアルファ版を出してきたりしていて、この分野は盛り上がりそうです。
先日、Sencha Touchも含めて、この辺りのモバイル・フレームワークをiPadやAndroidでまとめて触ってみました。触ってみると分かりますが、ネイティブアプリに比べるとユーザー体験はまだまだ……、というレベルです。ただ、すでに書いたメリット・デメリット、今後の技術の成熟を考えると、「もうモバイルでネイティブは特殊用途向けだけだよね」と誰もが考えるようになるのは時間の問題だと思います。プロセッサもまだ速くなりますし、JavaScriptエンジンだってガンガン最適化が進んでいます。
DHHは、このへんの事情について、「2011年の今、iOSだけに向けてモバイルWebアプリを作るなんて、2001年の段階でIE4だけに向けてビジネスをWeb対応させるようなもんだ」と言っています。
ちょっと意味が取りづらい発言ですが、特定の非オープンなOSやプラットフォーム向けに作れば、ほかの端末からアクセスできないという指摘のようです。
●Rails+JavaScriptという未来
CincoはサーバサイドはRailsで、クライアント側がJavaScriptのようです。もしかしたら、中島聡さんが1月末に公開した「JavaScript HTMLテンプレートエンジン SNBinder」と同様に、サーバサイドはMVCのモデルだけを担当し、「JSON over HTTP+RESTful」なアーキテクチャでビューとコントローラはJavaScriptで書くということかもしれません。TwitterなどイケてるWebはそうなっていますし、こういうアーキテクチャは確実に増えているように思います。つまり、そろそろちゃんとしたフレームワークが求められているということではないでしょうか。
すでに名前が明かされているCincoのモジュールのうち、Ecoはテンプレートエンジン、Stichはコンパイラだと言っています。ん!? コンパイラ? RubyをJavaScriptにコンパイルするというのはあるかもしれませんか? しれませんか?
ここでRubyistでない人からの「だったら最初からJavaScriptで書けよ」という声が聞こえてきそうです。そもそもバックエンドもNode.jsにすれば、JavaScriptだけで終わりじゃんというのも、結構正しそうに思えます。これに対するDHHの反応は、次の通りです。
つまり、「JavaScriptは良い言語だけれども、Rubyは素晴らしい言語だ。それで話は終わりだよ」ということです。先日のRubyConf2010でDHHは、「なぜRubyなのか?」について、非常にパンチのある感じのトーク(ほかの言語ユーザーや、言語なんてもうあんまり関係ないよねという達観したハッカーをムッとさせそうな感じです)をしているので、興味のある方は、こちらもご覧ください(とても面白いトークなので、近いうちにサマリを記事にしようかと考えています)。