【iOSDC Japan 2024 レポート】Day0「健康第一!MetricKitで始めるアプリの健康診断」を聞いてきた #iosdc

【iOSDC Japan 2024 レポート】Day0「健康第一!MetricKitで始めるアプリの健康診断」を聞いてきた #iosdc

Clock Icon2024.08.22

2024年8月22日から24日に開催された「iOSDC Japan 2024」に参加してきた。WWDCが世界的なカンファレンスであるとすれば、iOSDC Japanは日本国内での最大のiOSデベロッパーカンファレンスだ。

この記事では、Day0「健康第一!MetricKitで始めるアプリの健康診断」についての感想を共有する。

健康第一!MetricKitで始めるアプリの健康診断

https://fortee.jp/iosdc-japan-2024/proposal/ec8520ce-45d4-4552-b5db-4dcf39f3caf6

登壇者

  • nekowen さん

スライド

https://speakerdeck.com/nekowen/app-health-checkups-starting-with-metrickit

概要

みなさんはアプリのパフォーマンス計測、やっていますか?

スクロールがカクついたり、タップしたときの応答性が悪い、意図せずCPU・メモリ・ネットワークリソースを大量に消費してバッテリー消耗を早めてしまっているなど、これらの直接目に見えにくいアプリの不具合は利用者に不満をもたらし、アンインストールにつながる恐れがあります。
アプリがアンインストールされないためにも、日々快適に動作しているかどうかを知っておくことは非常に重要です。

MetricKitはユーザー環境でアプリの電力やパフォーマンス・診断データを収集し、パフォーマンス改善に役立てるためにAppleが提供するフレームワークです。
MetricKitを活用することで継続的にメトリクスが得られ、アプリの健康状態に問題がないかどうかを開発者が知ることができます。
本セッションでは、MetricKitの基本的な使い方から実際の活用事例、活用して得られた知見をお話しします。
具体的には以下の内容を扱います。

  • MetricKitの概要
  • MetricKitから読み取れる情報・読み取れない情報
  • メトリクスを得られるタイミングと注意点
  • 事例: Crashlyticsではハンドリングできない、予期せぬアプリの終了を計測する

このセッションでは、Appleが提供するMetricKitフレームワークを活用して、アプリのパフォーマンスやクラッシュ回数などを継続的にモニタリングする方法が紹介された。

メトリクスは1日最大1回、診断データも同様だが、iOS 15以降であれば即時にデータを得ることができる。ただしシミュレータでは受け取ることができない。メトリクスを取得した後のサーバーへのアップロード方法など、細かい知見がたっぷりと紹介されていた。

Storesレジでの事例では、クラッシュが発生しているにもかかわらず、CrashlyticsやTestFlightにクラッシュログがなかった。結果としてJetsamイベントが頻発しており、メモリリークのバグがあることが発覚した。MetricKitで取得したデータを非致命的エラーとしてCrashlyticsに送信することで、この問題に対処した事例が紹介されていた。

こう思った

アプリのパフォーマンス低下やクラッシュは、ユーザー体験を大きく損なうだけでなく、レビュー欄が荒れて評価が急落する原因になる。

私が開発しているアプリでは、予防的にFirebase Performance MonitoringやCrashlyticsを導入して管理・監視している。他の多くのアプリでも同様の対策が取られていると思う。

iOSアプリのクラッシュ検知でCrashlyticsを絶対視してはいけないという話が時々SNSで話題になる。理由としては、nekowenさんが紹介していたように、watchdogやメモリ不足でシステムによってkillされるケースなど、Crashlyticsではキャッチできない例外が存在するためだ。

nekowenさんの説明が簡潔だったこともあり、MetricKitの導入はそれほど難しくない印象を受けた。MetricKitで取得したメトリクスや診断データを送信するサーバーが必要になるが、Crashlyticsに非致命的エラーとして登録してしまうのは良いアイディアだと思った。

まずは個人開発しているアプリに導入し、知見を深めてから、参画しているプロジェクトにも提案していきたいと考えた。

余談だが、iPhone OS 3.xの頃に開発していたアプリが、起動があまりにも遅すぎてwatchdogによくkillされていたことを思い出した。デバイスが進化したことで、watchdogやメモリ不足によるkillが減ったのは感慨深いと感じた。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.