Famo.usがHTML5アプリ高速化の秘密を明かす–transitionsをJavaScript化

先月、本誌主催TechCrunch DisruptのBattlefieldの記事で、Famo.usを取り上げた。同社が近く立ち上げるHTML5用の開発フレームワークは、同社のデベロッパたちによると、HTML5のアプリケーションをより容易に開発できるだけでなく、できあがったアプリはネイティブアプリと変わらないぐらい高速高性能だ、という。今回同社から、もっと詳しい話を聞けたので、以下にご紹介しよう。
協同ファウンダのSteve Newcombは曰く:“誰もが抱く最初の疑問が、HTML5のパフォーマンスだ。でも今ではそれは、‘どうやったら高いパフォーマンスを得られるのか?’という疑問に変わってきている。そしてわれわれからの答は、‘Famo.usを使いなさい’だ”。
NewcombはPowersetの協同ファウンダとしてその名が知られている。この検索エンジン企業は2008年にMicrosoftに買収された(Powersetは当時、オープンソースのNoSQLデータベースHbase)も開発していた)。
Newcombは昨年、Mark Luと共にFamo.usを創業し、CrunchFundなどから110万ドルの資金を調達した(本誌TechCrunchのオーナーであるAOLがCrunchFundに投資している)。最初の計画では、Newcombが“Pinterest + About.me”みたいなもの、と呼ぶ消費者向けのアイデンティティアプリケーションを作るはずだった。しかしそれはUIの要件が複雑重厚で、しかもブラウザでもスマートフォンでもゲーム機でも、どこでも動くものでなければならなかった。そこでFamo.usのチームは、HTML5で行こう、と決めた。
“ところが、実際にやり始めてみると、ありとあらゆるパフォーマンスの問題にぶつかった”、とNewcombは言う。
結局Luは、問題をブラウザのパフォーマンスの障害になっている部分を迂回する形で解決した。そのときチームは、そのために自分たちが作ったフレームワークのほうが、それを使って作っているプロダクトよりも重要だ、と気づいた。そこで、彼らは方向転換をした。
ふつう、HTML5/CSS3/JavaScriptのアプリを扱うブラウザは、CSSのtransitionsを処理してから、その計算結果をGPUに渡す。Famo.usが発見したのは、transitionsのレンダリングはJavaScriptでやってからCSSタグを付けて直接GPUに計算を渡すほうが、数倍速いということだ。
GPUへのアクセス方法は、製品によってまちまちだ。たとえばiOSのネイティブラッパーを使うときは、Famo.usはOpenGLを使ってGPUに処理を渡す。X-BoxならDirectXだ。Famo.usのフレームワークは、こういう、製品ごとの違いにすべて対応する。しかもプラグインは不要で、JavaScriptのライブラリを使うだけだ。アプリをCanvasやWebGLのような埋め込みオブジェクトにしてしまうようなものは、何も使わない。
同社はそのフレームワークの3Dレンダリング機能を売りにしているが、2Dでも十分に使える…それが最初の目的だった。むしろNewcombによれば、Famo.usのフレームワークはWorld of Warcraftのような没入型(immersive)の3Dゲームのプログラミングには向いていないだろう、ソーシャルネットワーキングアプリ程度なら十分だが、ということだ。
彼によると、Famo.usはレンダリングエンジンであるにすぎない。BackboneやMeteorのような本格的なフレームワークをリプレースするものではなく、むしろそれらと併用するものだ。併用は、簡単かつ良好にできる。
このフレームワークがGithubで正式に公開されるのは、まだ数か月先だ。しかし、テストに参加しているデベロッパはすでに数千人いるそうだ。
そして、ビジネスモデルについては、目下研究中である。


