Upgrade to Pro — share decks privately, control downloads, hide ads and more …

いかにしてアプリの起動時間を改善するか

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for haru067 haru067
October 10, 2021

 いかにしてアプリの起動時間を改善するか

Avatar for haru067

haru067

October 10, 2021
Tweet

More Decks by haru067

Other Decks in Programming

Transcript

  1. アプリ起動時に起きること Android Developers - App startup time https://developer.android.com/topic/performance/vitals/launch-time Application 


    onCreate Activity 
 init その他 Activity 
 onCreate in fl ate views, etc ただし、毎回全てが発生するわけではない 時間
  2. Android Vitalsにおける起動パターン アプリの安定性とパフォーマンスを改善するためのGoogleの取り組みとして、 
 Android Vitalsがあり、Vitalsでは3つの起動パターンを紹介している • Cold start •

    Warm start • Hot start 完全にまっさらな状態からの起動 部分的な起動(例:バックキーで戻ってからの再起動) アクティビティをフォアグラウンドにすることで起動
  3. • Cold start • Warm start • Hot start で、これらをどうすればいいの?

    Android Vitalsでは、次の場合に遅いとみなされる 5秒以上 2秒以上 1.5秒以上 どれをなおせばいいの? coldを想定するのが良い。なぜならcoldの中にwarmとhotも含まれているから
  4. 眺める:Jetpack MacroBenchmark (2021.10現在) alpha版、Android 10(API 29)以上 テストを実行する形で起動時間を計測することができる • cold/warm/hot start

    の計測 • 繰り返しの実行、その中央値などの計測 • テスト結果をトレースファイルとして閲覧 ここでは雰囲気程度に使い方を紹介します 
 (詳細は公式ドキュメントを参照してください)
  5. 眺める:logcatでの計測 ActivityTaskManagerがlogcatに起動時間を出力している • I/ActivityTaskManager: Displayed com.myapp/.MainActivity: +256ms 最初の描画までにかかった時間(Displayed time) I/ActivityTaskManager:

    Fully drawn com.myapp/.MainActivity: +5s192ms Activity.reportFullyDrawn()が呼ばれるまでの時間 Activity.reportFullyDrawn()は手動で呼んであげる必要あり
  6. 図で Application 
 onCreate Activity 
 init その他 Activity 


    onCreate in fl ate views, etc Displayed time Fully Drawn
  7. CPU Profilerの使い方 Pro fi leボタン(or Run → Pro fi le

    'app')で実行 Pro fi leタブにプロファイルの様子が表示されるので、起動が完了したら止める
  8. まとめ • 3種の起動パターン: cold/warm/hot start、まずはcoldから改善していくの がオススメ • 計測より始めよ • 3つの計測:

    大雑把に怪しい箇所を見つけ、詳細を調べ、実際のユーザーにおける 起動時間が改善しているか確認する • 計測ツール: MacroBenchmark, logcat, CPU Pro fi ler, Firebase Performance Monitoring • 速くするだけでなく、「遅くしない」ための監視も頑張ろう