クラッシュを排除し、スタック全体の速度を向上させることで、モバイルアプリのリリースごとにパフォーマンスの向上を図ることができます。ここでは、New Relicによるモバイルモニタリングを最大限に活用するためのベストプラクティスをご紹介します。
1.データ収集開始
本番でのデータ収集を開始します。
モバイルモニタリングSDKをアプリストアへの次回リリース時に追加すれば、すぐにその価値を実感できるでしょう。単にNew Relicの機能をテストするだけの場合でも、本番リリースにiOSまたはAndroidエージェントをインストールすることをお勧めします。そうすることで、New Relicのモバイルモニタリング機能やエンドユーザーの体験を十分に理解するための十分なデータを得ることができます。
設定方法
まず、New Relic のユーザーインターフェイスで新しいアプリを追加します(全手順 )。
one.newrelic.com > All capabilities > Mobileに移動します。
監視しているアプリのリストから、 「Add more」 を選択します。
該当するプラットフォームを選択します。
モバイルアプリケーションに名前を付けて、Continueを選択します。
1つのアプリと関連するアプリトークンをiOSアプリの開発リリースに、別のアプリと関連するアプリトークンをそのiOSアプリの本番リリースに、別のアプリトークンのペアをAndroidアプリの開発リリースと本番リリースに使用します。クエリビルダーを使って、4つのアプトークンのデータを比較することができます。
次に、モバイルエージェントのインストールと設定を行います。
- New Relic の iOS または Android 用 SDK の最新版をダウンロードし、モバイルアプリに追加します。(詳しい手順は iOS と Android)
- 必要に応じて、インストールの設定を行います。例えば、以下のようになります。
- 機能フラグを有効にして
MobileRequest
イベントをキャプチャし、 iOSまたはAndroid向けの完全なネットワーク分析機能を使用します。 - 本番環境でのdSYMアップロードを自動化します。
- サプライズを避けるために、モバイルエージェントを開始する場所の標準的なパターンに従ってください。また、他のSDKを起動する前にエージェントを起動してください。詳細については、 Android のインストールと設定 および iOS のインストールと設定 のドキュメントを参照してください。
- アプリケーションの新しいリリースをデプロイします。
2.データを見る
すぐにデータを調べることができます。
New Relic がデータのレポートを開始したらすぐに、時間をかけてモバイル アプリに関する豊富な情報を調べてください。開始するには、 one.newrelic.comにアクセスしてMobileを選択します。
設定方法
クラッシュの原因を突き止め、修正することができます。そして、クラッシュの背後にあるトレンドを明らかにすることで、クラッシュを防ぐことができます。
監視対象のモバイルアプリのサマリーUIページから、 Crash analysis をクリックします。
クラッシュデータを分析する 最も影響の大きいクラッシュを確認し、修正することができます。
クラッシュイベントトレイル のパンくずをたどると、クラッシュの修正や重大なエラーの解決が容易になります。
モバイルアプリの UI の 衝突分析 ページから、 衝突タイプ を選択します。
クラッシュタイプの Summary ページから、 Crash trail タブを選択します。
カスタムブレッドクラム を作成して、主要なワークフロー(アプリのログインやチェックアウトのプロセスなど)を監視し、ユーザーのクリックを追跡し、タイミングを最適化し、MTTRを短縮するためにクラッシュ箇所を特定します。
例のクエリ から借りる。
- ユーザーのうち、どれだけの人が最新のアプリにアップグレードしたかを確認できます。
- 採用状況を長期的に追跡する。
- 新規インストールと旧バージョンからのアップグレードの数を把握することができます。
- 地理的な場所、通信事業者、ASNオーナー(Wi-Fiプロバイダー)、デバイス、接続タイプなどの使用量の分布を確認できます。
アラート通知を利用して、クラッシュやエラーの原因を明らかにすることができます。
モバイルモニタリング機能を本番環境で運用し、いくつかの主要な機能を確認したら、New Relicを使ってモバイルアプリケーションの重要な問題を発見することができます。特に、クラッシュやエラーに注目してください。
- メトリクスベースのアラートを出発点として、問題を高レベルで可視化することができます。
- そして、新しいサービスや機能が追加されると、New Relicのより的を絞ったイベントベース(NRQL)のアラートを使用して、最も重要な問題が迅速に処理されるようにします。
これらのアラートを使用して、クラッシュが多数のユーザーに影響を与えているかどうかを判断します。そうである場合、関連する人々 (たとえば、モバイル アプリ チームのオンコール メンバーと関連するバックエンド サービスの所有者の両方) にアラートが送信されます。
モバイルアプリのクラッシュ率(セッションごとのクラッシュ)やクラッシュの影響を受けたユーザーの割合の変化に対応する方法を、チームが把握していることを確認します。
設定方法
メトリクスベースのアラートやモバイルモニタリングUIをご利用ください。
指標ベースのワークフローをイベントベースのアラートと組み合わせて、 モバイルアプリとシステムに固有です。
- 直近にリリースされた製品版のクラッシュに焦点を当てたNRQLアラートを作成します。
- 最新のアプリバージョンでクラッシュの影響を受けたユーザーの割合に焦点を当てた追加のNRQLアラートを作成します(ユーザーベースへの全体的な影響を確認します)。
4.クラッシュをより深く掘り下げる
あなたのクラッシュレポートを次のレベルに引き上げます。
今度は、再現性の低いクラッシュに挑戦してみましょう。
アプリケーションに追加のインストルメントを適用する
クラッシュ イベントの証跡、NRQL クエリ、および
データを視覚化します。
設定方法
モバイルアプリケーションを大規模に運用する場合、クラッシュは避けられません。最も影響の大きいクラッシュを把握するためのツールを提供しています。 クラッシュ分析 UIを使用すると、どのクラッシュが最も頻繁に発生しているか、クラッシュのないユーザーの割合、クラッシュの約80%に関連するファイルやメソッド、特定のユーザーが経験したばかりのクラッシュなどを確認できます。
衝突分析でインパクトの強い事故を追求する。
- カスタム属性 を追加して、価値の高い顧客を分類し、その属性を使って最も価値の高いオーディエンスに応じてクラッシュをセグメント化します。
- パンくずやカスタムイベントを追加して、すべてのクラッシュ発生(過去90日間)に至るまでのイベントの詳細な証跡を作成することができます。そして、このクラッシュ・イベント・トレイルをモバイル・モニタリングUIで表示します。
- モバイルモニタリングの バージョンの傾向 ページ を使用して、後続のリリースでクラッシュ率が改善されていることを確認し、リグレッションを回避することができます。
ブレッドクラムとカスタム属性を使用して、クラッシュの再現とデバッグを改善します。たとえば、 recordBreadrumb
API を使用してセッション中の状態変化を追跡すると、次のようなクラッシュのデバッグに役立ちます。
- 接続形態の変更
- オリエンテーションの変更
- アプリコードの重要なポイントでのCPUとメモリの状態
既存のイベントにカスタム属性を追加することで、モバイルアプリに対してより正確な質問をすることができます。次のようなディメンションを追加します。
ユーザーID。特定のユーザーの懸念に対応し、どの顧客やセグメントが最も影響を受けているかをよりよく理解するために使用します。
ストアID:デバイスが古い、Wi-Fiの調子が悪いなどの問題に対処するために使用します。
ユーザーセグメント。どのお客様やセグメントに最も影響があるのかをよりよく理解するために使用します。例えば、ログインしたお客様とログインしていないお客様などです。
セッション終了時のカートの中のお金
アプリへのエントリーの起源または帰属
カスタム属性名をモバイルアプリ全体で標準化し、Webサイト(ブラウザモニタリングを使用している場合)と整合させることで、エンドユーザーチャネル間のパフォーマンスを比較対照することができます。モバイルエージェントは、クラッシュしたセッションとクラッシュしていないセッションの最後のインタラクションを追跡し、ユーザーがアプリを終了する前に何を見ていたかを可視化します(意図的に、またはクラッシュのために)。
重要なパフォーマンス指標に命を吹き込む
カスタムのインタラクションやイベントを作成して、アプリのビジネスクリティカルな部分のユーザーアクティビティなど、最も重要なシグナルに焦点を当てます。これらの強力なAPIを使用することで、あらゆるものにカスタムインスツルメンテーションを追加することができます。以下に使用例を紹介します。
設定方法
カスタムイベントを使用して、機能の使用状況を追跡します。例えば、以下のようになります。
カスタムイベントを使用して、アプリとウェブサイト間のユーザーフローを追跡します。
カスタムイベントやモバイルブレッドクラムを使用して、主要なユーザーフロー(ログイン、ショッピングカートなど)のパフォーマンスを最適化します。
カスタムイベントを利用して、デジタル化された顧客に、より迅速でコンテクストのあるサポート体験を提供します。
recordCustomEvent
API を使用します。次に、以下を使用してさまざまな機能の使用を比較します。
SELECT count(*) FROM MyNewMobileEventType FACET name
カスタムイベントを使用して、ページのロードタイムを測定します。
アプリ起動タイマーを作成し、ユーザーがアプリを起動するためにタップしてから、アプリのコード内で最初の画面が表示されるまでの時間を測定します。タイマーの値をNew Relicに以下のような方法で記録します。
recordCustomEvent(<myMobileTimers>, <appLaunch>, {attributes})
スピナーの持続時間を測定するために開始タイマーと停止タイマーを定義し、以下のような方法でNew Relicにこの時間を記録します。
recordCustomEvent(<myMobileTimers>, <spinnerOnScreenA>, {attributes})
アプリ内の特定のユーザーアクションやファネルステップをトラッキングし("add to cart" など)、そのイベントの属性として価格を含めます。
カスタムイベントで関連するファネルステップを表示することで、アプリケーションを介したフローを測定します。例えば、タイマーを作成して、複数のファネルステップにまたがるサブフローまたはフロー全体の開始時間と終了時間を追跡し、ユーザーがプロセスを通過するのにかかった時間を理解することができます。
カスタムインタラクションを使用して、同じウェブページに関連するトレースを確認できます。
エージェントAPIを使用してデフォルトのインタラクションを無効にし、カスタムインタラクションに焦点を当てることで、プライマリーファネルにとって最も重要なページロードを見直すことができます。
これらのカスタムインタラクションの開始時間と停止時間を定義することで、ファネルの個々のステップに関連するアクティビティ(例えば、特定のユーザーアクションやページロードなど)をトレースすることができます。
クラッシュしたセッションとクラッシュしていないセッションの最後のインタラクションを追跡することで、ユーザーがアプリを終了する前に何を見ていたのかを知ることができます(意図的な場合も、クラッシュした場合も)。
クラッシュしていないセッションのクエリ例
SELECT count(*) FROM Mobile WHERE sessionCrashed is null FACET lastInteraction SINCE 90 days ago
クラッシュしたセッションのクエリ例
SELECT count(*) FROM Mobile WHERE sessionCrashed is true FACET lastInteraction SINCE 90 days ago