BT

FacebookがiOS向けアプリのスタートタイムを改善した方法

| 作者: Sergio De Simone フォローする 17 人のフォロワー , 翻訳者 西村 美沙 フォローする 0 人のフォロワー 投稿日 2015年12月20日. 推定読書時間: 2 分 |

原文(投稿日:2015/12/06)へのリンク

 

FacebookエンジニアのNatansh Verma氏は、iOS向けのFacebookアプリのローンチタイムを数秒カットした方法を説明した。

Verma氏によると、ローンチタイムを最適化する初めの一歩は静的なメトリクスを定義することだという。例えば、彼らはフィードのロードが完了した瞬間が、ローンチプロセスがいつ完了するかを予想する良い参考になることを見出した。加えて、いわゆる“コールドスタート”、すなわち、アプリをローンチする時間を最適化することを決断した。すでにバックグラウンドで動作しているアプリがイベントによって再開するウォームスタートと比べ、コールドスタートは全く稼働していないところから処理が始まるため、より長い時間が掛かるのである。

アプリを計測してみると、Facebookエンジニアは、最初のフィードリクエストを送り出す初期化工程の時間が長過ぎると気付いた。これには2つの異なる方法で対処した。

  • 最初のネットワークリクエストでは有効な認証トークンと利用可能なフィードカーソルだけが必要なので、パスにあるそれ以外の不要な依存性を分析し、排除すること。
  • セキュアなTCPコネクションを確立するのに掛かる時間に取り組むこと。UDPプライミングと呼ばれる技術のおかげで、サーバに3ラウンドトリップを要求する。手短に言うと、アプリは暗号化されたUDPパケットをフィードリクエストに乗せてサーバに送る。これによって正当なTCPリクエストが来ていることをサーバに暗示し、プリフェッチとデータをキャッシュをしておける。

最初のフィードリクエストが送信されたことをできるだけ早く確かめたあと、Facebookエンジニアは他の領域でもストーリーフェッチングの方略において改善の余地を確認した。3つのうち2つのバッチにあるストーリーと7つのストーリーの提供から、1+1+Xのバッチで提供したストーリーにあるストリームライクなモデルに移行した。

興味深いことに、最初のストーリーが戻ってくるのに掛かる時間を削減することでレンダリングエンジンを遅くするアプリサービス間のリソース競合をいくつかハイライトする効果があった。この特定の問題はキューメカニズムの導入で解決され、それによってサービスはアプリの起動が完了し次第、動作を始められた。

まとめると、Verma氏が言うには、これらの最適化はアプリのローンチタイムに数秒の改善をもたらした。

モバイルアプリのローンチタイムはユーザエクスペリエンスの重要な要因であり、Appleはユーザがアプリを使う気がなくならないよう、極力短くするべきだと提唱している。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT