Facebookはここ数年の計画であったHTML5でのモバイルコンテンツの開発を止め、ネイティブアプリの開発へ舵を切った。この記事ではこの変更の技術的な詳細とXamarinとMozillaの反応を紹介する。
FacebookのCEOであるMark Zuckerberg氏はTechCrunchのインタビューに答えて、“企業としての最大の失敗はネイティブアプリではなくHTML5に賭けすぎたことです。時期尚早でした。”と話した。“iOSアプリにしたら、利用者のフィードの消費が2倍になりました。”
Zuckerberg氏はHTML5の何が彼らにとって問題だったのかは明言していない。しかし、開発した製品の品質が不十分だったことをほのめかしている。“優れたモバイル体験には、… 最高の品質が必要であり、達成するにはネイティブアプリしかありません。”
Facebookのソフトウエアエンジニアであり同社のW3C代表であるTobie Langel氏はHTML5ベースでのモバイル開発で同社が直面した性能問題について詳述している。まず氏が書いているのはデバッグツールの欠如についてだ。
モバイルブラウザ向けツールがないので、何が本当の問題なのか理解するのがとても難しいです。…
私たちが直面した最大の問題はメモリが関係していました。私たちのコンテンツのサイズを考えるとデバイスの能力を使い切ってクラッシュしてしまうのは珍しくありませんでした。しかし、何が起きているのか正確に把握するのが難しかったのです。GPUのバッファが枯渇したのか、それともリソースの限界に達したのか、答えを見つけるのは大変でした。
氏はヒープやオブジェクト、GPUバッファの利用状況、GCサイクルの情報、FPSなどが知りたかった。
もうひとつの問題はスクロールのパフォーマンスだ。スクロールはほとんどJavaScriptで実装した。というのは、“他の方法では十分な性能がでないから”だ。
安定しないフレームの比率、UIスレッドの遅延
コンテンツのサイズと画像の多さに起因するGPUバッファの枯渇
ネイティブの慣性スクロールはOSによって感じ方が違います。JSの実装は最終的には一種類のOS用向けになり、他のOSでは不適当な使用感になりました。
Androidデバイスのタッチイベントの性能問題はJSのスクロールの実装をさらに脆くしてしまいます。
また、その他の問題として氏が挙げているのは、“ブラックボックス”なGPU、より良いタッチトラッキングサポートの必要性、よりスムースなアニメーション、より優れたキャッシュの必要性。これらの問題の中には、すでにW3CのウェブパフォーマンスWGに提出されている。
クロスプラットフォームのネイティブアプリ開発ツールの開発元であるXamarinのCEOであるNat Friedman氏はFacebookのこの動きを歓迎している。“デバイスの開発者、アプリの開発者、そしてなによりも消費者にとってこの動きは素晴らしいことです”。氏はモバイルの標準が現れるのはまだ早すぎるという。
モバイルのイノベーションはまだものすごいスピードで進んでいます。 ‘標準’を策定するには早すぎるスピードです。歴史的には、新しいOSがリリースされた場合、その新しい能力は新しいが故にOSレベルでしか活用できません。それゆえ、最も優れたアプリやイノベーションはOSに近いところで出現します。この動きは現在のモバイルデバイスでも同様です。マーケットシェア拡大のレースはOSのデバイスレベルで多くの変化とイノベーションを生み出しています。今後数年で、これらのOSは安定し、このレベルのイノベーションは遅くなります。そうなれば標準化も可能になるでしょう。しかし、まだ数年はかかります。
MozillaのCTOであるBrendan Eich氏はFacebookのHTML5の失敗について別の見方を示している。ZDNetによれば、
[Mark Zuckerberg氏の発言の]行間を読むと、彼らはネイティブとHTMLの混ぜようとしたようですが、これにはどうしてもシステム間に縫い目が生じます。私の友人のJoe HewittはFacebookに勤めていたとき、初のハイブリッドアプリを開発しました。そのアプリはとてもよく統合されていました。しかし、彼が同社を去った後、そのアプリの後継バージョンには、統合をシームレスなままにしておくための技術と、そのためのAppleからの技術支援の可能性がなくなってしまいました。
Eich氏は最終的にはウェブが勝つと確信している。
ウェブが負けるとは思っていません。…
Facebookのような企業はネイティブアプリを作る余裕があります。特にiOSにおいてです。しかし、そのような会社以外の開発者はウェブの技術を使った開発をするでしょうし、それで満足するでしょう。
ウェブが足りないAPIを補い性能がよくなる方向に進化すれば、[開発者は]ウェブの技術以外を使う必要はありません。…
私が思うに、[これから10年で]ウェブはもっと良くなります。今際限なく続いているネイティブ対ウェブの論争も存在しなくなるでしょう。
The Registerの編集者であるMatt Asay氏はネイティブ vs. HTML5論争での、Facebookのエンジニアリングマネージャの言葉を引用している。
現在、Facebookはネイティブコード開発によって最高速で動いています。HTML5が評判通りではなかったということではありません。現時点ではムーアの法則にまだ働く余地があり、ウェブのエンジンには伸びしろがあるということです。なので私たちは現実的な決定を下しました。最終的にHTML5の方が優れたものになったら、また元の方針に戻るかもしれません。なんであれ素早いペースで高品質の仕事ができる技術を使うつもりです。
Mark Zuckerberg氏も長期的にはHTML5が有望だと考えている。
HTML5が悪いということではありません。長期的にはHTML5が有望だと思います。日単位で見るとモバイルのウェブのFacebookの利用者はiOSアプリとAndroidアプリの利用者の合計よりも多いです。なのでモバイルウェブは私たちにとってとても重要です。
Facebookは8月にiOSのネイティブアプリをリリースした。近いうちに同様のアプリをAndroid向けに Google Playから提供する予定だ。