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

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

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

Transcript

82 slides
  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

More Decks by Sansan

Other Decks in Technology