$30 off During Our Annual Pro Sale. View Details »

パフォーマンス監視 ツールの活用

Recruit
PRO
September 15, 2023

パフォーマンス監視 ツールの活用

2023/09/15に、droidkaigi.jp2023で発表した、清水の資料です。

Recruit
PRO

September 15, 2023
Tweet

More Decks by Recruit

Other Decks in Business

Transcript

  1. •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    マスタ タイトルの書式設定
    1
    パフォーマンス監視
    ツールの活用
    Firebase Performance MonitoringとMacrobenchmarkを駆使して
    Jetpack Compose導入するまで
    株式会社リクルート プロダクト統括本部
    ビューティープロダクト開発 2グループ
    清水大夢

    View Slide

  2. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    2
    2
    自己紹介

    - 名前

    - Taimu Shimizu(X: @shimizuTaimu)

    - 所属

    - 『ホットペッパービューティー』Androidアプリ開発チーム

    - 経歴

    - 2020/10 ~ 2022/3
    - ConTechベンチャーにてRailsエンジニア
    - 2022/4 ~
    - 『ホットペッパービューティー』のAndroidエンジニア

    View Slide

  3. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    3
    3
    本セッションの狙い

    パフォーマンス監視ツールの紹介


    実際の現場への導入


    データ駆動の意識


    View Slide

  4. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    4
    4
    本セッションの狙い

    パフォーマンス監視ツールの紹介


    実際の現場への導入


    データ駆動の意識


    View Slide

  5. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    5
    5
    本セッションの狙い

    パフォーマンス監視ツールの紹介


    実際の現場への導入


    データ駆動の意識


    View Slide

  6. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    6
    6
    本セッションの狙い

    パフォーマンス監視ツールの紹介


    実際の現場への導入


    データ駆動の意識


    View Slide

  7. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    7
    7
    目次

    - パフォーマンス計測が必要になった背景


    - パフォーマンス監視ツールの紹介


    - 実際に取得した指標


    - 取得した指標を元にした今後の動き


    - まとめ


    View Slide

  8. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    8
    8
    目次

    - パフォーマンス計測が必要になった背景


    - パフォーマンス監視ツールの紹介


    - 実際に取得した指標


    - 取得した指標を元にした今後の動き


    - まとめ


    View Slide

  9. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    9
    9
    パフォーマンス計測が必要になった背景

    Jetpack Composeの導入

    - Viewの複雑度削減
    - 生産性の向上
    - Jetpackライブラリと
    の統合

    View Slide

  10. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    10
    10
    パフォーマンス計測が必要になった背景

    Jetpack Composeの導入

    - Viewの複雑度削減
    - 生産性の向上
    - Jetpackライブラリと
    の統合

    View Slide

  11. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    11
    11
    パフォーマンス計測が必要になった背景

    Jetpack Composeの導入

    - Viewの複雑度削減
    - 生産性の向上
    - Jetpackライブラリと
    の統合
    - 開発工数
    - パフォーマンス影響

    View Slide

  12. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    12
    12
    パフォーマンス計測が必要になった背景

    Jetpack Composeの導入

    - Viewの複雑度削減
    - 生産性の向上
    - Jetpackライブラリと
    の統合
    - 開発工数
    - パフォーマンス影響
    パフォーマンス監視ツール

    View Slide

  13. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    13
    13
    パフォーマンス計測が必要になった背景

    Jetpack Composeの導入

    - Viewの複雑度削減
    - 生産性の向上
    - Jetpackライブラリと
    の統合
    - 開発工数
    - パフォーマンス影響
    パフォーマンス監視ツール

    View Slide

  14. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    14
    14
    パフォーマンス計測が必要になった背景

    Jetpack Composeの導入

    - Viewの複雑度削減
    - 生産性の向上
    - Jetpackライブラリと
    の統合
    - 開発工数
    - パフォーマンス影響
    パフォーマンス監視ツール

    View Slide

  15. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    15
    15
    目次

    - パフォーマンス計測が必要になった背景


    - パフォーマンス監視ツールの紹介


    - 実際に取得した指標


    - 取得した指標を元にした今後の動き


    - まとめ


    View Slide

  16. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    16
    16
    パフォーマンス監視ツールの紹介

    今回紹介するパフォーマンス監視ツール


    - Firebase Performance Monitoring


    - Macrobenchmark


    - Microbenchmark


    View Slide

  17. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    17
    17
    Firebase Performance Monitoring
    パフォーマンス監視ツールの紹介


    View Slide

  18. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    18
    18
    パフォーマンス監視ツールの紹介: Firebase Performance Monitoring

    Firebase Performance Monitoringとは?


    - アプリのパフォーマンスを自動収集


    - 属性別に指標を収集


    - アラートの設定が可能


    View Slide

  19. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    19
    19
    パフォーマンス監視ツールの紹介: Firebase Performance Monitoring

    - ネットワークリクエスト


    View Slide

  20. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    20
    20
    - アプリのライフサイクルに関連するトレース

    パフォーマンス監視ツールの紹介: Firebase Performance Monitoring


    View Slide

  21. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    21
    21
    - 画面のレンダリング

    パフォーマンス監視ツールの紹介: Firebase Performance Monitoring


    View Slide

  22. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    22
    22
    パフォーマンス監視ツールの紹介: Firebase Performance Monitoring

    Firebase Performance Monitoringの導入(1/2)


    ①モジュール(アプリレベル)のGradleファイルに依存関係
    を追加する。


    View Slide

  23. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    23
    23
    パフォーマンス監視ツールの紹介: Firebase Performance Monitoring

    Firebase Performance Monitoringの導入(2/2)


    ②ルートレベル(プロジェクトレベル)のGradleファイルに
    プラグインを追加する。



    ③モジュール(アプリレベル)のGradleファイルにプラグイ
    ンを追加する。


    View Slide

  24. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    24
    24
    パフォーマンス監視ツールの紹介: Firebase Performance Monitoring

    カスタムトレース(1/2)


    - 自動で集められる指標に追加して、特定のコードの実行
    速度を計測することができる。


    View Slide

  25. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    25
    25
    パフォーマンス監視ツールの紹介: Firebase Performance Monitoring

    カスタムトレース(2/2)


    - @AddTraceアノテーションを使用すると、メソッドの開始
    から終了までの時間を指標として取得できる。


    View Slide

  26. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    26
    26
    パフォーマンス監視ツールの紹介: Firebase Performance Monitoring

    Firebase Performance Monitoringまとめ


    - 簡単に導入可能


    - 自動収集、手動収集どちらも可能


    - アラートの設定可能


    - カスタムトレース追加時はプロダクションコードに触れ
    る


    View Slide

  27. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    27
    27
    Macrobenchmark
    パフォーマンス監視ツールの紹介


    View Slide

  28. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    28
    28
    パフォーマンス監視ツールの紹介: Macrobenchmark

    Macrobenchmarkとは?


    - JUnit構文を用いたインストゥルメンテーションテスト


    - アプリの起動時間や、スクロール時間などのパフォーマ
    ンスを測定できる。


    - テスト結果はコンソールで確認できると共にJSONファイ
    ルとして出力できる。


    View Slide

  29. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    29
    29
    パフォーマンス監視ツールの紹介: Macrobenchmark

    Macrobenchmarkの導入(1/4)




    ①AndroidStudioの
    [Project]パネルでプロ
    ジェクトを右クリック
    して、モジュールを追
    加する。

    View Slide

  30. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    30
    30
    パフォーマンス監視ツールの紹介: Macrobenchmark

    Macrobenchmarkの導入(2/4)


    モジュールウィザードにより、ビルドタイプ[benchmark]
    が、アプリレベルのGradleファイルに追加される。


    View Slide

  31. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    31
    31
    パフォーマンス監視ツールの紹介: Macrobenchmark

    Macrobenchmarkの導入(3/4)



    モジュールウィザードによ
    り、
    ExampleStartupBenchmark.k
    tが追加される。

    View Slide

  32. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    32
    32
    パフォーマンス監視ツールの紹介: Macrobenchmark

    Macrobenchmarkの導入(4/4)


    ②AndroidManifest.xmlにprofileableタグを追加する。


    View Slide

  33. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    33
    33
    パフォーマンス監視ツールの紹介: Macrobenchmark

    起動時間の測定(1/3)


    指定パラメータは
    - packageName
    - metrics
    - iterations
    - startupMode
    - measureBlock
    pressHome()
    - ベンチマークを基本状態にリセットする。
    startActivityAndWait()
    - デフォルトのアクティビティを開始し、最初の
    フレームをレンダリングするまで待つ

    View Slide

  34. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    34
    34
    パフォーマンス監視ツールの紹介: Macrobenchmark

    起動時間の測定(2/3)

    ①Build Variantをbenchmarkに ②AndroidStudioから実行

    View Slide

  35. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    35
    35
    パフォーマンス監視ツールの紹介: Macrobenchmark

    起動時間の測定(3/3)

    - 実行結果の「最小値」「中央値」「最大値」が出力される。

    View Slide

  36. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    36
    36
    パフォーマンス監視ツールの紹介: Macrobenchmark

    スクロール時間の測定(1/2)

    setupBlock
    - 測定しない準備部分を設定。

    View Slide

  37. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    37
    37
    パフォーマンス監視ツールの紹介: Macrobenchmark

    スクロール時間の測定(1/2)

    setGestureMargin(device.displayWidth / 5)
    - アプリがシステムナビゲーションをトリガーして、スクロールしないで終了するのを防ぐた
    めに追加する。

    View Slide

  38. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    38
    38
    パフォーマンス監視ツールの紹介: Macrobenchmark

    スクロール時間の測定(2/2)

    frameDurationCpuMs
    - フレームの生成にかかった時間
    fameOverrunMs
    - フレームがどれだけの期間、期限を超過したか

    View Slide

  39. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    39
    39
    パフォーマンス監視ツールの紹介: Macrobenchmark

    Macrobenchmarkまとめ


    - ユーザーに近い状態で測定できる


    - プロダクションコードへの影響がない


    - CI連携可能


    - 自動収集は不可能


    View Slide

  40. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    40
    40
    Microbenchmark
    パフォーマンス監視ツールの紹介


    View Slide

  41. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    41
    41
    パフォーマンス監視ツールの紹介: Microbenchmark

    Microbenchmarkとは?


    - JUnit構文を用いたユニットテスト


    - コードの実行時間やメモリ割り当て数などのパフォーマ
    ンスを測定できる。


    - テスト結果はコンソールで確認できると共にJSONファイ
    ルとして出力できる。


    View Slide

  42. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    42
    42
    パフォーマンス監視ツールの紹介: Microbenchmark

    Microbenchmarkの導入(1/3)




    ①AndroidStudioの
    [Project]パネルでプロ
    ジェクトを右クリック
    して、モジュールを追
    加する。

    View Slide

  43. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    43
    43
    パフォーマンス監視ツールの紹介: Microbenchmark

    Microbenchmarkの導入(2/3)


    モジュールウィザードにより、ExampleStartupBenchmark.kt
    が追加される。


    View Slide

  44. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    44
    44
    パフォーマンス監視ツールの紹介: Microbenchmark

    Microbenchmarkの導入(3/3)


    ②新しく追加されたモジュールのGradleファイルに、ベンチ
    マーク対象のコードを含むモジュールを依存関係として指定
    する。


    View Slide

  45. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    45
    45
    パフォーマンス監視ツールの紹介: Microbenchmark

    runWithTimingDisabled

    - 測定対象外のセットアップコードを記述する。


    View Slide

  46. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    46
    46
    パフォーマンス監視ツールの紹介: Microbenchmark

    Microbenchmarkの実行結果

    - ナノ秒単位で結果が出力される。

    View Slide

  47. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    47
    47
    パフォーマンス監視ツールの紹介: Macrobenchmark

    Macrobenchmarkまとめ


    - コードレベルの実行時間を測定できる


    - プロダクションコードへの影響がない


    - CI連携可能


    - 自動収集は不可能


    View Slide

  48. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    48
    48
    パフォーマンス監視ツールの紹介: Macrobenchmark

    紹介しなかったパフォーマンス監視ツール


    - Profiler


    - Perfetto


    View Slide

  49. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    49
    49
    パフォーマンス監視ツールまとめ
    パフォーマンス監視ツールの紹介


    View Slide

  50. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    50
    50
    パフォーマンス監視ツールの紹介

    - 今回のJetpackCompose導入においては、案件起案用の指標収集のために、
    Firebase Performance MonitoringとMacrobenchmarkを使用することにした。

    View Slide

  51. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    51
    51
    目次

    - パフォーマンス計測が必要になった背景


    - パフォーマンス監視ツールの紹介


    - 実際に取得した指標


    - 取得した指標を元にした今後の動き


    - まとめ


    View Slide

  52. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    52
    52
    Firebase Performance Monitoring
    実際に取得した指標


    View Slide

  53. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    53
    53
    実際に取得した指標: Firebase Performance Monitoring

    計測対象画面

    - Composeで置き換えしたActivity


    - 一部をComposeViewで置き換えたFragment


    計測対象指標

    - 置き換え対象Activityのレンダリング時間


    - Compose置き換え前後でのActivityのonCreate、Fragment
    のonCreateViewの実行時間


    View Slide

  54. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    54
    54
    実際に取得した指標: Firebase Performance Monitoring

    計測対象画面

    - Composeで置き換えしたActivity


    - 一部をComposeViewで置き換えたFragment


    計測対象指標

    - 置き換え対象Activityのレンダリング時間


    - Compose置き換え前後でのActivityのonCreate、Fragment
    のonCreateViewの実行時間


    View Slide

  55. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    55
    55
    実際に取得した指標: Firebase Performance Monitoring

    置き換え対象Activityのレンダリング時間測定(1/2)


    View Slide

  56. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    56
    56
    実際に取得した指標: Firebase Performance Monitoring

    置き換え対象Activityのレンダリング時間測定(2/2)


    View Slide

  57. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    57
    57
    実際に取得した指標: Firebase Performance Monitoring

    計測対象画面

    - Composeで置き換えしたActivity


    - 一部をComposeViewで置き換えたFragment


    計測対象指標

    - 置き換え対象Activityのレンダリング時間


    - Compose置き換え前後でのActivityのonCreate、Fragment
    のonCreateViewの実行時間


    View Slide

  58. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    58
    58
    実際に取得した指標: Firebase Performance Monitoring

    onCreate, onCreateViewの実行時間測定


    - @AddTraceアノテーションを使用


    View Slide

  59. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    59
    59
    実際に取得した指標: Firebase Performance Monitoring

    onCreateの実行時間


    View Slide

  60. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    60
    60
    実際に取得した指標: Firebase Performance Monitoring

    onCreateViewの実行時間


    View Slide

  61. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    61
    61
    Macrobenchmark
    実際に取得した指標


    View Slide

  62. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    62
    62
    実際に取得した指標: Macrobenchmark

    計測対象画面

    - Composeで置き換えしたActivity


    計測対象指標

    - (Compose置き換え前)RecyclerView使用時のスクロール速度


    - (Compose置き換え後)LazyColumn使用時のスクロール速度


    備考

    - エミュレーターを使用した。


    View Slide

  63. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    63
    63
    実際に取得した指標: Macrobenchmark

    RecyclerViewでの指標測定コード


    View Slide

  64. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    64
    64
    実際に取得した指標: Macrobenchmark

    RecyclerViewでの指標測定コード


    View Slide

  65. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    65
    65
    実際に取得した指標: Macrobenchmark

    RecyclerViewでの指標測定コード


    View Slide

  66. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    66
    66
    実際に取得した指標: Macrobenchmark

    LazyColumnでの指標測定コード


    View Slide

  67. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    67
    67
    実際に取得した指標: Macrobenchmark

    LazyColumnでの指標測定コード


    View Slide

  68. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    68
    68
    実際に取得した指標: Macrobenchmark

    LazyColumnでの指標測定コード

    semanticsを追加しないとtestTag認識されなかった。


    View Slide

  69. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    69
    69
    実際に取得した指標: Macrobenchmark

    RecyclerViewの測定結果




    LazyColumnの測定結果




    View Slide

  70. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    70
    70
    実際に取得した指標: Macrobenchmark


    View Slide

  71. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    71
    71
    実際に取得した指標: Macrobenchmark

    Compose置き換えによってパフォーマンスが悪化した

    View Slide

  72. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    72
    72
    実際に取得した指標: Macrobenchmark

    パフォーマンス悪化の原因を調べていると・・

    参照:https://android-developers-jp.googleblog.com/2022/03/improving-app-performance-with-baseline.html

    View Slide

  73. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    73
    73
    実際に取得した指標: Macrobenchmark

    ベースラインプロファイルとは


    - APKに含まれるクラスとメソッドのリスト


    - Macrobenchmarkを使用して、作成することが可能


    - クラウドプロファイルと違い、リリース後すぐに適用さ
    れる


    View Slide

  74. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    74
    74
    実際に取得した指標: Macrobenchmark

    ベースラインプロファイルの作成準備(1/3)


    モジュール(アプリレベル)のGradleファイルに
    profileinstallerライブラリを追加


    View Slide

  75. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    75
    75
    実際に取得した指標: Macrobenchmark

    ベースラインプロファイルの作成準備(2/3)


    appモジュール内に

    benchmarkrules.pro

    を作成


    View Slide

  76. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    76
    76
    実際に取得した指標: Macrobenchmark

    ベースラインプロファイルの作成準備(3/3)


    buildType benchmarkでproguardFilesに
    benchmark-rules.proを指定


    View Slide

  77. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    77
    77
    実際に取得した指標: Macrobenchmark

    ベースラインプロファイルの作成(1/3)



    View Slide

  78. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    78
    78
    実際に取得した指標: Macrobenchmark

    ベースラインプロファイルの作成(2/3)



    View Slide

  79. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    79
    79
    実際に取得した指標: Macrobenchmark

    ベースラインプロファイルの作成(3/3)







    「baseline-prof.txt」にrename

    app/src/main配下に保存する。

    View Slide

  80. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    80
    80
    実際に取得した指標: Macrobenchmark

    ベースラインプロファイル作成後のRecyclerViewの測定結果




    ベースラインプロファイル作成後のLazyColumnの測定結果




    View Slide

  81. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    81
    81
    実際に取得した指標: Macrobenchmark


    View Slide

  82. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    82
    82
    目次

    - パフォーマンス計測が必要になった背景


    - パフォーマンス監視ツールの紹介


    - 実際に取得した指標


    - 取得した指標を元にした今後の動き


    - まとめ


    View Slide

  83. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    83
    83
    取得した指標を元にした今後の動き

    以下指標をまとめ案件検討に持ち込み工数を獲得する。


    - 今回取得したパフォーマンス指標


    - 置き換えによる見込みコード削減量


    - 置き換えの開発工数


    View Slide

  84. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    84
    84
    取得した指標を元にした今後の動き

    Compose置き換えにおけるパフォーマンス監視体制を敷く。


    ①基本的にはFirebase Performance Monitoringでのアラー
    ト設定での監視


    ②アラートに引っかかった画面や、使用頻度の多い重要画面
    に関してはベースラインプロファイルを更新する


    View Slide

  85. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    85
    85
    目次

    - パフォーマンス計測が必要になった背景


    - パフォーマンス監視ツールの紹介


    - 実際に取得した指標


    - 取得した指標を元にした今後の動き


    - まとめ


    View Slide

  86. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    86
    86
    まとめ

    パフォーマンス監視ツールの紹介


    実際の現場への導入


    データ駆動の意識


    View Slide

  87. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    87
    87
    まとめ

    パフォーマンス監視ツールの紹介


    実際の現場への導入


    データ駆動の意識


    View Slide

  88. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    88
    88
    まとめ

    パフォーマンス監視ツールの紹介


    実際の現場への導入


    データ駆動の意識


    View Slide

  89. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    89
    89
    まとめ

    パフォーマンス監視ツールの紹介


    実際の現場への導入


    データ駆動の意識


    View Slide

  90. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    90
    90
    宣伝


    View Slide

  91. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    91
    91
    参考文献

    - https://firebase.google.com/docs/perf-mon?hl=ja


    - https://developer.android.com/topic/performance/benchmarking/macrobenchmar
    k-overview?hl=ja


    - https://developer.android.com/codelabs/android-macrobenchmark-inspect?hl=j
    a#0


    - https://developer.android.com/topic/performance/benchmarking/microbenchmar
    k-overview?hl=ja


    - https://android-developers-jp.googleblog.com/2022/03/improving-app-perform
    ance-with-baseline.html


    - https://developer.android.com/studio/profile/baselineprofiles?hl=ja

    View Slide

  92. マスタ タイトルの書式設定
    •マスター テキストの書式設定

    第 2 レベル

    第 3 レベル

    第 4 レベル

    第 5 レベル
    92
    92
    ご清聴ありがとうございました。

    View Slide