BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース FacebookやGoogleに倣うAndroidアプリの起動時間の改善

FacebookやGoogleに倣うAndroidアプリの起動時間の改善

ブックマーク

原文(投稿日:2021/12/16)へのリンク

最近の記事で、GoogleとFacebookのエンジニアが、Androidアプリが起動時に応答するまでの時間を短縮し、最適なユーザエクスペリエンスを確保する上での、最も重要なことに関するヒントを提供した。

Facebookのエンジニアによると、アプリのスタートアップは、ユーザの関心を維持し、利用を拡大するための重要な要素だ。アプリの起動時間を改善するための最初のステップは、Androidの2つの標準的な指標を使ってそれらを測定することである。Time-To-Full-Display(TTFD)は、アプリがユーザとの対話の準備ができるまでにかかる時間だ。Time-To-Initial-Display (TTID)は、アプリが最小限の機能を使えるようになるまでの時間を測るものだ。たとえば、ユーザがナビゲートできるようになるまでの時間のことで、一方で、まだいくつかのコンテンツをダウンロードしている状態である。

アプリによっては、TTFDはTTIDよりも関連性の高い指標になるかもしれない。その逆もあるが、TTIDは常にTTFDに含まれるものである。TTIDは最適化のスタートとして適している。さらに、TTIDは、Google Playのリストでアプリをランク付けするためにGoogleによって使われている。

Facebookにおける起動の指標は、「悪い」と見なされるアプリの起動の割合です。これは、TTFDが2.5秒を超える起動、または起動の一部が失敗した(たとえば、画像の読み込みに失敗したり、アプリがクラッシュした)場合です。

TTIDとTTFDはどちらも、Androidシステムコールを使って簡単に計測できる。TTIDはlogcatDisplayed値が使われ、TTFDは[reportFullyDrawn](https://developer.android.com/reference/android/app/Activity#reportFullyDrawn())を使ってlogcatに記録される。

reportFullyDrawnを呼び出すことは特に重要な方法である。それは、リソース使用量を最適化して、その呼び出しの前に発生する作業に優先順位を付けるための有用な情報をAndroidに提供するためだとGoogleのエンジニアは言っている。

アプリが完全に使用可能な状態のときにこのメソッドを呼び出すと、アプリの起動時間が短縮されます。すべてのアプリケーションでこのAPIを使ったほうがよいです。そしてそれを測定することを忘れないでください。

TTIDとTTFDは、何を最適化できるか、何を最適化すべきかを理解するための強固な基盤を提供する。この目的のために、Facebookのエンジニアはいくつかの推奨事項を列挙します。例えば、起動時のクラッシュに特に注力すること、利用可能なすべてのコアを使って処理を並列化すること、アプリの起動エクスペリエンスに関係のない処理を遅延させる、あるいはバックグラウンドに送信することである。

キャッシュを使うことは、処理を高速化し、アプリに重要なコンテンツを投入するための優れた方法である。しかし、キャッシュされたコンテンツは、意味がある場合、つまり古くない場合にのみ使う必要がある。

ネットワークが遅い場合には、古いコンテンツを表示するためのタイムアウトを使って、できるだけ早く新しいコンテンツを表示するように最適化するのがよいかどうか評価してください。また、ネットワークがオフラインの場合には、すぐに利用できるものを表示するのがよいかどうかを評価してください。

起動時間を最適化するには、起動時に何が起こっているか、何がクリティカルパスか、障害がどこにあるかを注意深く理解する必要がある。このために、Androidは、traceJetpack Macrobenchmark: Startupなどの多くのツールを提供している。これは、アプリが起動時に多くのことを初期化しようとして、あまりにも多くのことを行おうとしているかどうかを理解するのにも役立つ。もう1つの便利なツールは、Jetpack Appスタートアップライブラリである。これは、アプリケーションの起動時に指定された順序でコンポーネントを初期化する手段を提供する。

アプリのスタートアップの最適化について、ここで要約できるよりも、まだまだたくさんのことがあるため、詳細をすべて入手できる元の記事をお見逃しなく。

作者について

この記事に星をつける

おすすめ度
スタイル

こんにちは

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

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

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

コミュニティコメント

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

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

BT