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

iOS 14 でのMetricKitの新機能について / New function of MetricKit on iOS 14

Sansan
November 06, 2020

iOS 14 でのMetricKitの新機能について / New function of MetricKit on iOS 14

■イベント
【iOSエンジニア向け勉強会】アプリ開発に強みを持つ3社がiOS14の開発事情を語る
https://sansan.connpass.com/event/191775/

■登壇概要
タイトル:iOS 14 でのMetricKitの新機能について
登壇者:Sansan事業部 プロダクト開発部 多鹿 豊

▼Sansan Builders Blog
https://buildersbox.corp-sansan.com/

Sansan

November 06, 2020
Tweet

More Decks by Sansan

Other Decks in Technology

Transcript

  1. 開発プロセスとツール Development and Testing Beta Public Release MetricKit XCTest Metrics

    Instruments Xcode Metrics Organizer 実際のユーザ端末のデータを収集 13
  2. - Battery - ネットワークの接続状況 > シグナルバーの本数 - ディスプレイの輝度 > Average

    pixel luminance: APL - CPU, GPUの使用状況 - 位置情報追跡の使用状況 - ネットワーク転送 > セルラー, Wifiでのアップロード、 ダウンロード量 どんなデータが取れるのか?(iOS 13では) 26 - Performance - ハングが起こった時間 - ディスクの書き込み総量 - アプリ起動 > 起動・復帰 - メモリ使用量
  3. - 何を実装する? - リリース後の実際の収集データを参照できるようにしたい - 自社サーバーや3rdパーティ製ログ収集サービスに MXMetricPayload の内容 を送信する -

    送信データの整形 - MXMetricPayload や MXMetric には func jsonRepresentation() -> Data とい うインスタンスメソッドが生えている func didReceive(_ payloads: [MXMetricPayload]) 35
  4. - 何を実装する? - リリース後の実際の収集データを参照できるようにしたい - 自社サーバーや3rdパーティ製ログ収集サービスに MXMetricPayload の内容 を送信する -

    送信データの整形 - MXMetricPayload や MXMetric には func jsonRepresentation() -> Data とい うインスタンスメソッドが生えている - これを使用するとサーバーに送る際のデータ整形が楽 func didReceive(_ payloads: [MXMetricPayload]) 36
  5. - 何を実装する? - リリース後の実際の収集データを参照できるようにしたい - 自社サーバーや3rdパーティ製ログ収集サービスに MXMetricPayload の内容 を送信する -

    送信データの整形 - MXMetricPayload や MXMetric には func jsonRepresentation() -> Data とい うインスタンスメソッドが生えている - これを使用するとサーバーに送る際のデータ整形が楽 func didReceive(_ payloads: [MXMetricPayload]) 37
  6. - 何を実装する? - リリース後の実際の収集データを参照できるようにしたい - 自社サーバーや3rdパーティ製ログ収集サービスに MXMetricPayload の内容 を送信する -

    送信データの整形 - MXMetricPayload や MXMetric には func jsonRepresentation() -> Data とい うインスタンスメソッドが生えている - これを使用するとサーバーに送る際のデータ整形が楽 func didReceive(_ payloads: [MXMetricPayload]) 38
  7. - デバッグ - Xcodeの 「Debug > Simulate MetricKit Payloads」 -

    実機をつないで Run する必要がある func didReceive(_ payloads: [MXMetricPayload]) 41
  8. - デバッグ - Xcodeの 「Debug > Simulate MetricKit Payloads」 -

    実機をつないで Run する必要がある - 実行すると didReceive メソッドが呼ばれ、ダミーの データを受け取れる func didReceive(_ payloads: [MXMetricPayload]) 42
  9. - Battery - ネットワークの接続状況 > シグナルバーの本数 - ディスプレイの輝度 > Average

    pixel luminance: APL - CPU, GPUの使用状況 - 位置情報追跡の使用状況 - ネットワーク転送 > セルラー, Wifiでのアップロード、ダウンロード量 【再掲】どんなデータが取れるのか?(iOS 13では) 45
  10. - Performance - ハングが起こった時間 - ディスクの書き込み総量 - アプリ起動 > 起動・復帰

    - メモリ使用量 【再掲】どんなデータが取れるのか?(iOS 13では) 46
  11. - スクロールヒッチ - スクロールが引っかかる - スクロール時のフレーム落ち - スクロールヒッチ時間 - スクロールヒッチが発生した時間(ms)

    - スクロールヒッチ率 - 1秒あたりのスクロールヒッチ時間 スクロールヒッチ率 参照:https://developer.apple.com/videos/play/wwdc2020/10077 56
  12. - スクロールヒッチ - スクロールが引っかかる - スクロール時のフレーム落ち - スクロールヒッチ時間 - スクロールヒッチが発生した時間(ms)

    - スクロールヒッチ率 - 1秒あたりのスクロールヒッチ時間 スクロールヒッチ率 参照:https://developer.apple.com/videos/play/wwdc2020/10077 57
  13. - 次の診断データを収集 - ハング > ハングが発生した時間 - クラッシュ - ディスク書き込み例外処理

    > 書き込み量 - CPU例外処理 > CPU時間 > 高いCPU使用率がサンプリングされた合計時間 MetricKit Diagnostics 65
  14. - それぞれに backtrace が CallStackTree の形で提供さ れる - atos コマンド等を使ってシン

    ボル化することで追跡できる ようになる MetricKit Diagnostics 67
  15. - MetricKit はリリース後のアプリのパフォーマンスに関して、実際のユー ザー環境でのメトリクスを収集できるツール - 収集したデータは自社サーバーなどに送信して保存することで分析でき るようになる - iOS 14

    では - MXMetricPayload に CPU命令数, スクロールヒッチ率, アプリケーション終 了理由・回数 のメトリクスが追加 - MXDiagnosticPayload が追加され、診断データとCallStackTreeも取得でき るように まとめ 73
  16. 80

  17. - WWDC 2020 - What's new in MetricKit > https://developer.apple.com/videos/play/wwdc2020/10081

    - Eliminate animation hitches with XCTest > https://developer.apple.com/videos/play/wwdc2020/10077 - Diagnose performance issues with the Xcode Organizer > https://developer.apple.com/videos/play/wwdc2020/10076 - Why is my app getting killed? > https://developer.apple.com/videos/play/wwdc2020/10078 参考資料(1) 81
  18. - WWDC 2019 - Improving Battery Life and Performance >

    https://developer.apple.com/videos/play/wwdc2019/417/ - Apple Developer Documentation - MetricKit > https://developer.apple.com/documentation/metrickit - JSONデータ - MXMetricPayloadのJSONデータ > https://gist.github.com/taji-taji/040be779c54dc54109704a77c772bf12 - MXDiagnosticPayloadのJSONデータ > https://gist.github.com/taji-taji/7feff7106cdd014d865e080399b1a49f 参考資料(2) 82