Facebookは如何にして新興国市場向けAndroidアプリを設計したか

世界をつなげるというビジョンを達成するため、Facebookは新興国市場での利用に最適化したAndroid用アプリ「Facebook Lite」を開発している。FacebookのエンジニアであるGautam Roy氏がその設計について説明した

最近、モバイルテクノロジーが新興国市場でブームになっているのは事実だが、モバイルの世界における新興国と先進国の違いは大きい。具体的に、新興国においては、3G・4Gモバイルネットワークは広範囲に利用できず、たとえ3Gコネクションが使えても、途切れがちだろう。しかも、たいていの場合、一般人にとって3Gコネクションは高すぎる。それに対し、Gautam Roy氏の言うように、2Gネットワークは世界中の人々の96%をカバーし、世界の人口の半数以上で使われている。このことから、Facebookは次のように目標を定義した。

  • アプリのフットプリントを小さくする(APKサイズを1MB以下に)
  • データ利用を小さくし、2Gネットワークをサポートする
  • 古い2009年相当のデバイスをサポートする

Facebookのエンジニアが採用したアーキテクチャ設計は、プロキシサーバーを利用して、ThinクライアントとしてAndroidアプリを実装するというものだった。

このアークテクチャでは、サーバーが力仕事をするように設計された、とRoy氏は語る。サーバーはFacebookのバックエンドサービスからデータを取得し、それをクライアントが使えるようにパッケージングする。アプリ機能の大部分はプロキシサーバーによって実装されている。クライアントアプリ自体は、ある種のバーチャルマシンとして設計されており、カメラ、SQL liteエンジン、UIエンジン等のOSリソースへのアクセスを提供している。さらに、同じアイテムに複数回リクエストするのを避けるため、クライアントアプリはローカルキャッシュを活用する。興味深いことに、Facebookのエンジニアは、HTTPSを使う代わりに、TLS上に独自のメッセージプロトコルを考案した。データ利用をさらに削減して、セキュアなコネクションを確立するのに必要な時間を短縮するためだ。

こうした設計選択のおかげで、ログイン、情報の更新、画像のロード時間のようなタスクで最高の性能を実現し、パフォーマンスが低くて途切れがちなネットワーク環境でも適切に動作するという。