3分で読めます
| iOS
先週、FacebookはiOS向けモバイルアプリのバージョン5.0を発表しました。この新しいアプリはパフォーマンスの大幅な向上を謳っており、その舞台裏を覗いてみると、Facebookがアプリ開発においてHTML 5を廃止し、AppleのObjective-Cを採用することで、このパフォーマンス向上を実現できたことがわかります。
遅い
同社の総トラフィックの大きな割合を占めるようになっているこのアプリ(6月30日時点で月間ユーザー数5億4,300万人)は、2008年の創業以来、数々の名高い歴史を歩んできた。パフォーマンスはブラウザ体験を完全に再現したことはなかったが、昨年秋の4.0の改修では、iPadのネイティブサポートが待望されていたものの、大量の新しいバグや不快な速度低下がもたらされた。
過去1年間でアプリのパフォーマンスはさらに低下し、Twitter、Instagram、Googleといった他のソーシャルメディア公式アプリにデザインと機能面で追い抜かれてしまいました。ありがたいことに、バージョン5.0では、以前のバージョンと比べて最大2倍のパフォーマンス向上が約束されており、ユーザーインターフェースも微妙に再解釈されています。
では、なぜアップデートにこれほど時間がかかったのでしょうか?現代のソーシャルネットワーキングの先駆者であるFacebookなら、適切に機能するアプリの開発に十分なリソースを投入できるはずです。ところが、これまでのアプリの欠陥は、開発言語であるHTML5に根ざしていたのです。
先週木曜日まで、iOS版Facebookは主にHTML5で構成され、App Store初期にFacebookが開発したThree20フレームワーク上に構築されていました。しかし、App Storeの進化とiOSデバイスの多様化に伴い、Three20プラットフォームは機能不全に陥り始め、アプリのバックエンドとしてはHTML5が不十分な「包括的な」ソリューションとして浮上しました。
Facebook の HTML5 基盤は、もともと iOS、Android、その他のモバイル デバイスにわたってスケーラブルで統一された最新のエクスペリエンスを提供することを目的としていましたが、Facebook が独自のプラットフォームを更新し続ける一方で、ますます多くの開発者がアプリの開発に iOS ネイティブの Objective-C 言語を使用するようになったため、iOS アプリの動作が重く、機能しないものになっていました。
速い
Facebookは自らの苦境に気づき、6月に同社のエンジニア2人がニューヨーク・タイムズ紙に対し、大幅に高速化された新しいアプリが7月のリリースに向けて開発中であることを明らかにした。結局、このアプリは8月にリリースされたが、Objective-Cの書き換えといくつかの追加的な裏方機能強化により、当初の謳い文句通りの速度を実現している。
先週公開されたFacebook公式ノートで、エンジニアのジョナサン・ダン氏は、5.0リリースの取り組みについてより詳細に説明しました。ダン氏によると、アプリの構造を再調整し、CPU負荷の高いタスクをアプリのメインスレッドから分離することで、わずかな速度向上を実現できたとのことです。
さらに、アプリは起動時に以前にキャッシュされたデータを表示するようになりました。これにより、起動時間が短縮され、象徴的な(そして恐ろしい)灰色のスピナーを見つめる時間が短縮されます。これらの変更はすべて、アプリの基本的なレベルの使いやすさ、読み込み時間、安定性の向上に役立ちます。
モジュラー
Facebook開発チームは、アプリのコア部分をObjective-Cに移行しただけでなく、以前のメッセージに特化したObjective-CアプリであるスタンドアロンのFacebook Messengerのコードの大部分を流用しました。Facebook Messengerをベースに、アプリ内のモジュールシステムを開発しました。
ダン氏は投稿の中で、これらの新しいモジュールは依存関係を指定し、メッセージ、ブックマーク、通知の更新に使用されると述べています。将来の速度低下を防ぐため、モジュールシステムは新機能が追加されるたびにアプリケーションのセットアップが正しく行われているかどうかを確認します。
継続的な機能強化や新機能のリリースへの適応が不十分であることが、アプリの初期リリースにおける大きな問題でした。Jonathan Dann氏と彼のチームは、最新バージョンのFacebookモバイル向けの「フォールバック」レンダラーを開発することで、この問題を回避しました。
アプリが理解できない新しいタイプのニュースフィード記事や投稿が追加されると、前述のレンダラーが呼び出されて翻訳されます。記事の情報は、アプリが既に理解できる形式でレンダリング・表示されます。これにより、HTML5ベースのバージョンで顕著だった表示の不具合やレンダリングの問題の多くが軽減されます。
新しいアプリはほぼ完全に Objective-C ベースですが、チームはアプリのサーバー側を更新するために HTML5 を部分的に使用し続けるため、App Store を通じて iOS ユーザーに絶え間なく更新をプッシュする必要がなくなります。
Facebook(そしてソーシャルネットワーキング)の将来はますますモバイル化が進んでおり、モバイルでのプレゼンスをさらに拡大したいのであれば、堅牢で高速かつ機能的なアプリを持つことが重要な要件となります。ダン氏は次のように述べています。
ネイティブiOSをベースに開発することで、アプリの高速化、信頼性の向上、そして機能強化を実現し続ける大きなチャンスが生まれます。Facebookをご利用いただく時間が30秒でも電車での移動時間でも、私たちはお客様に高速で満足のいく体験を提供したいと考えています。モバイルこそがFacebookにとって最適なプラットフォームであると確信しており、新しいFacebook for iOSは、いつでもどこでも最高のFacebook体験をお届けするための私たちの取り組みの一つに過ぎません。
これまでのところ、エンジニアリングチームと開発チームは目標を達成したようです。バージョン5.0は大幅な改善が見られます。これまでiOS版Facebookを避けてきた方は、今こそ検討してみる価値があるかもしれません。バージョン5.0は間違いなく「いいね!」する価値があります。