モバイル ユーザーは、高速で応答性に優れたアプリを期待します。アプリの読み込みに時間がかかったり、ユーザー入力にすぐに反応しない場合、ユーザーはイライラしてアプリをアンインストールする可能性が高まります。また、アプリが大量のネットワーク リクエストを行うと、ユーザーのバッテリーやデータ プランを消耗し、低評価につながる可能性があります。
iPhone ユーザーは世界中に 10 億人以上いるため、iOS アプリのパフォーマンスを確認することは重要です。何を監視すべきか、どのようにベンチマークを設定するか、どのようなツールを使用するか、そしてどのように結果を活用してアプリのパフォーマンスを長期的に改善するかについて見ていきましょう。
iOS アプリのパフォーマンスをモニタリングするには?
iOS アプリのパフォーマンス モニタリングを最適化する最初のステップは、追跡する必要があるメトリクスを決定することです。まずは Apple 独自の要件と推奨事項から開始すると良いでしょう。
Apple の iOS ウォッチドッグ システムは、起動時間とアプリの応答性をモニタリングして、パフォーマンス要件を強制します。アプリの起動に時間がかかりすぎる場合、または長時間応答しない場合、ウォッチドッグはユーザーに代わってアプリを自動的に終了します。ウォッチドッグはパフォーマンスの問題を特定するのに役立ちますが、通常、極端な状況でのみトリガーされます。
たとえば、次のような問題はウォッチドッグによる終了をトリガーします。
- メモリの過剰使用
- オーバーヒートにつながる CPU の過剰使用
- 同期ネットワークによるメイン スレッドのブロック
- 長時間にわたるメイン スレッドのブロック
- バックグラウンド タスクの完了に時間がかかりすぎる場合
アプリの優れたパフォーマンスを維持するため、多くの予防策を実装できます。たとえば、次の分野に関する Apple の推奨事項に従うことで、アプリのパフォーマンスを積極的に改善できます。
- 起動時間: 起動時間を短縮すると、ユーザー エクスペリエンスとリテンション レートが向上し、ウォッチドッグによって自動終了される可能性が低くなります。
- メモリ使用量: 全体的なメモリ使用量を減らすと、ユーザーがアプリに戻ったときの応答性が向上します。
- ディスクへの書き込み: ディスクへの書き込みを減らすと、アプリのパフォーマンスと応答性が向上します。
- エラー率: エラー率を改善すると、アプリのパフォーマンス、応答性、全体的な品質に対するユーザーの認識が向上します。
- バッテリー消費: バッテリー消費と電力を大量に消費するプロセスを削減することで、全体的なユーザー エクスペリエンスが向上します。
適切なベンチマークの設定
パフォーマンス データを収集し、iOS アプリのパフォーマンス改善に取り組むには、ベンチマークを作成し、最小要件を超えて、アプリがユーザーの高い期待に応えるだけでなく、それを上回ることができるようにします。
アプリのパフォーマンスを測定する開始点として、次のようなものがあります。
- 起動時間: アプリの上位 40% は 2 秒未満、上位 70% は 3 秒未満で起動します。ユーザーの期待に応え、それを超えるには、起動時間を 1.5 秒~2 秒にする必要があります。
- ネットワーク リクエスト: アプリは、API へのネットワーク リクエストを含むユーザー リクエストに 1 秒以内に応答する必要があります。リクエストに時間がかかる場合は、(許容範囲内で) 古いデータまたは読み込みインジケーターを表示します。
- 応答性: アプリはユーザーのジェスチャーや入力に 250 ミリ秒以内に応答する必要があります。それよりも時間がかかったり、エラーが発生すると、UI がハングアップしたと見なされ、ウォッチドッグによる自動終了がトリガーされるか、少なくともユーザーにマイナスの印象を与えます。
具体的なベンチマークは、ターゲット ユーザーの要件と期待によって決まります。
適切なツールの使用
Apple の低レベルのパフォーマンス最適化ツールは優れていますが、現実世界でユーザーが経験する問題を常に検出できるわけではありません。たとえば、一部のユーザーのみに影響を与えるエッジ ケースを見逃して、パフォーマンスの低下やユーザー エクスペリエンスの低下につながる可能性があります。
BugSnag のリアル ユーザー モニタリング (RUM) は、パフォーマンス問題の検出を支援し、問題を迅速に診断して修正するために必要な情報を提供します。
BugSnag を利用することで、次のようなメリットが得られます。
- リアル ユーザー データ: BugSnag の 24 時間 365 日の RUM は、アプリのウォーム スタートとコールド スタート、ネットワーク リクエスト、画面読み込み時間などの重要なパフォーマンス メトリクスを可視化できます。そのため、パフォーマンスの低下が多くのユーザーに影響を与える前に対処することが可能です。
- 検索とセグメンテーション: BugSnag のフィルターを使用することで、アプリの重要な領域のパフォーマンスをモニタリングし、開発の優先順位に応じてユーザー パフォーマンス データをセグメント化できます。また、テーブル ビューでは、複数の属性でスパンを並べ替えてフィルタリングしたり、特定のインスタンスにドリルダウンして完全なトレースを確認し、パフォーマンス低下の原因を調査することもできます。
- カスタム ダッシュボード: 最もよく利用されるアプリ画面、ページ読み込み、ネットワーク リクエストをダッシュボードの上部に配置して、ユーザーとアプリにとって重要な問題を容易に特定して対応できます。また、無制限のカスタム スパンを使用して、コードベースの領域に関する情報をカスタマイズ可能です。
さらに、BugSnag は堅牢なエラー監視とアプリの安定性管理機能も提供しています。
- 安定性スコア: BugSnag の安定性スコアは、チームが新機能の構築を優先すべきか、バグのトラブルシューティングを優先すべきかを判断するのに役立ちます。また、以前のリリースと新しいリリースの安定性スコアを比較して、新しいリリースが成功したか、ロールバックが必要かを判断することもできます。
- クラッシュ レポート: BugSnag は、iOS アプリのクラッシュを自動検出し、各バグ レポートとともにシンボル化された完全なスタック トレースを提供します。そのため、クラッシュの原因となった正確なメソッド名とソースコード行が分かります。また、デバイス モデル、OS バージョン、バッテリー状態、スレッド状態などデバッグに役立つ情報も得られます。さらに、クラッシュに至った経緯をパンくずリストで表示できます。
- 並べ替えとフィルタリング: BugSnag はエラーに自動的に優先順位を付け、チームが最も重大なバグに集中できるようにします。また、アプリのバージョン、ユーザーが報告したバグ、イベント数などさまざまな条件でバグをフィルタリングして並べ替えることもできます。さらに、特定の条件に基づいて適切なチーム メンバーに通知するように設定することで、通知疲れを回避することもできます。
BugSnag は、iOS アプリのパフォーマンスと安定性の向上に役立つ強力なツールです。
BugSnag は、数行のコードで Cocoapods または Swift パッケージ マネージャーを使用して簡単にインストールできます。そして、Info.plist に API キーを追加した後、AppDelegate に BugsnagPerformance.start()
を挿入してデータの収集を開始できます。詳細は、「iOS 統合ガイド」を参照してください。
まとめ
アプリの良し悪しはパフォーマンスによって左右され、最適化は終わりのない作業です。新しい機能やコード変更のたびに、アプリのパフォーマンスは低下する可能性があります。そのため、開発中にパフォーマンス メトリクスをテストし、運用環境で実際のユーザー アプリのパフォーマンスをモニタリングすることが重要です。ここで紹介した iOS のパフォーマンス モニタリングのガイドラインに従うことで、アプリのパフォーマンスを最大化し、App Store での競争力を高め、幅広いユーザー エクスペリエンスを向上できます。
BugSnag 製品に関する詳細、無料評価版は、こちら。
この資料は、Bugsnag の Web サイトで公開されている「iOS Performance Monitoring Best Practices 」の日本語参考訳です。