famousshot

写真拡大

Famo.usによってJavaScriptでHTML5アプリを作ることができるようになる。目指すのはFlashのようなパフォーマンスがプラグイン無しで実現することだ。

HTML5はウェブ・ページをアプリのように動かし、そしてFlashに取って代わるはずだった。しかしパフォーマンスの問題で、アプリ開発者のHTML5導入は遅れてしまっている。

Famo.us社はこのギャップを埋めるためにスタートした小さな会社だ。同社は2Dと3Dの両方のエフェクトを高速表示するため、HTML5の遅延要素を本質的に回避する独自のフレームワークを開発した。このFamo.usによって、開発者はHTML5のパフォーマンスの問題に苦しむことなく、より短期間でクロスプラットフォームのアプリを開発することが可能となったのだ。

Famo.usの秘密はJavaScriptを利用していることだ。JavaScriptは極めて高速に動作し、既にあらゆるブラウザで広く使われている。Flashとは異なり、ブラウザ・プラグインをユーザーがダウンロードしたり、ブラウザメーカーがそれをサポートする必要もない。(アップルは3年前に、iPhoneのSafariブラウザでのFlashのサポートを拒絶することで事実上Flashと決別している。)

「Famo.usの前提は『もしJavaScriptでレンダリングとアニメーションのエンジンを作れたとしたらどうだろうか?』だった。」と創業者でCEOのスティーブ・ニューカムは語った。「JavaScriptはすべてのブラウザで最初から有効化されているため、プラグインをインストールしなくても動く。だからAppleやGoogleその他のブラウザメーカーがJavaScriptを好きか嫌いかに関係なく、JavaScriptはどんなブラウザにも存在するのだ。」

HTML5の未来

もちろんHTML5には、表示部分に関して改善の余地が残されている。しかし、HTML5がFlashの表示力を超えると期待していた開発者達は、今の状態に失望している。

「Flashは一部のことにおいては完璧だった。」ニューカムは説明する。「Flashの表示は速く美しかったが、プラグインのインストールや実行が必要だった。ブラウザがこれをデフォルトの機能として受け入れることができず、それがFlashの没落につながったのだ。」

2010年4月にアップルのモバイル・デバイスがFlashをサポートしないだろうとスティーブ・ジョブスが発表した後、多くの開発者がHTML5に期待をした。Flashと違いHTML5はどんなデバイスやブラウザにも対応でき、プラグインも必要としない。その後すぐにフェイスブックも、自社のアプリをすべてHTML5で開発する計画を公表した。

しかし残念なことに、HTML5にはブラウザのデフォルトのレンダリング・エンジン上で動作するという技術的な欠点があった。開発者はすぐに、HTML5で作ったアプリは、動作が遅くまるで10年程前のアプリのように思えることを知ることになった。

「元々ブラウザのレンダリング・エンジンは、アプリではなくリンク付きのドキュメントを描画するためのものだった。」ニューカムは指摘する。動作が遅いという問題の解決法としてFamo.us社が見出したのが、ブラウザのレンダリング・エンジンを回避し、自社独自のものを代わりに使うことだった。

WebKitや他のブラウザ・ベースのレンダリング・エンジンの代わりに、Famo.usはグラフィックスの描画にJavaScriptを使う。それも対象となるデバイスにおいて、理論上一番理想的な方法で描画するのだ。(ニューカムによれば、Famo.usは例えばグラフィックをHTML、WebGL JavaScript API、あるいはHTML5のキャンバス要素としてレンダリングすることが可能だ。)つまりFamo.usは、現在のHTML5に比べてグラフィック表示をより効率的に処理できるエンジンなのだ。

「HTMLのパフォーマンスの問題解決に取り組んでいることで、多くの人はFamo.us社がHTML5の会社であると考えているようだ。しかしそれは必ずしも正確ではない。」とニューカムは語った。「Famo.us社はJavaScriptの会社であり、Famo.usがレンダリングする先の1つがHTMLなのだ。Famo.usで開発者がアプリを書くと、我々はそれを独自のエンジン内に仮想的にレンダリングする。それによってHTMLでアプリの構築が可能となり、HTML5の大きな問題が解決できるのだ。」

誰もが使えるエンジン

HTML5が期待外れとわかると、Facebookやその他開発者達はネイティブ・アプリに逆戻りした。つまりiOSやAndroidなどの特定のOSを対象として構築されたプログラムに戻ったのだ。これらネイティブ・アプリはその他多くのアプリケーション・ソフトウェアと同様、スピードとコンパクト化のために機械語にコンパイルされる。そして特定のハードウェアやソフトウェア・プラットフォームに限定して動作するものとなる。

いくつかの点においてネイティブ・アプリは素晴らしい。動作が速いだけでなく、デバイスに依存しないアプリでは使うことが難しいような、特定のOSとハードウェアの機能を利用することが可能だ。しかし特定のプラットフォーム向けに開発されたネイティブ・アプリは他のプラットフォームでは動作することができず、開発を複雑にしている。様々なプラットフォームのために、アプリの開発やメンテナンスを同時に行わなくてはならないのだ。

ニューカムは、ネイティブ・アプリはあくまで一時的な解決策だとしている。「インターネットの素晴らしいところは、誰もがウェブ・ページを右クリックしてソースを見て、HTMLのコードを学ぶことができることだ。だがネイティブ・アプリは閉じた環境だ。右クリックしてもソース・コードを見ることができない。」

そのため、Famo.usには全ての長所が取り入れられている。Flashのようにゲームやアプリ、広告、アニメーション、インターフェースを作ることができ、ネイティブ・アプリのようにモバイルで動作する。そしてHTML5のようにプラグイン不要でブラウザ上で動作するのだ。

実際にニューカムは、Famo.usで書かれたインタラクティブなLightboxギャラリーアプリを見せてくれた。

See the Pen Lightbox by famo.us (@befamous) on CodePen

10数年前からJavaScriptの実行速度が、ブラウザ全体の実行速度のベンチマークだった。JavaScriptの実行速度が遅かった時代では、Famo.usは存在し得なかっただろう。しかし、ブラウザ間の熾烈なスピード争いによってJavaScriptは高速化し、パワフルなレンダリング・エンジンさえも実行できる程になった。

今ではJavaScriptは、どんなデバイスのどんなブラウザであっても、高速で動作するアニメーションをまるでネイティブ・アプリのごとく実行してくれる。そしてHTML5と同様、右クリックでソース・コードを見ることもできるのだ。

Famo.usはつい最近、Hack Reactorがサンフランシスコで開いた12週間のプログラミング研修会の題材となった。初級エンジニア向け研修の最終過程では、Famo.usのプライベート・ベータ版へアクセスし、自分独自のツイッターを作るという課題が参加したエンジニア達に与えられた。

「一部の上級エンジニアがObjective Cでプログラムを書くかわりに、高校生がJavaScriptでプログラミングすることができる。」とニューカムは言う。「JavaScriptを利用してFamo.usを作ったことは、誰もが利用することができるという意味で、教育面の意義は大きい。」

本質的にはFamo.usはプロの開発者向けだ。すでに7万人もの開発者がプライベート・ベータ版に参加している。しかしニューカムは、この無料でオープンソースなFamo.usが、次世代の開発者の未来を切り開く存在となることを望んでいる。

「私もエンジニアとして本格的な教育を受けた訳ではない。」とニューカムは語る。「ただ右クリックでソースを眺めて勉強しただけだったが、これが私のキャリアに大きな影響をもたらした。だから私は、私と同じようなエンジニア達が素晴らしいものを作り出すことを願っている。そのための手段を提供したいのだ。」

Lauren Orsini
[原文]