クラッシュを排除し、スタック全体の速度を向上させることで、モバイルアプリのリリースごとにパフォーマンスの向上を図ることができます。ここでは、New Relicによるモバイルモニタリングを最大限に活用するためのベストプラクティスをご紹介します。
1.データ収集開始
Start collecting data in production.
モバイルモニタリング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.データを見る
Immediately be able to explore your data.
New Relic がデータのレポートを開始したら、モバイル アプリに関する豊富な情報をじっくりと調べてください。 開始するには、 one.newrelic.comに移動してMobileを選択します。
設定方法
クラッシュの原因を突き止め、修正することができます。そして、クラッシュの背後にあるトレンドを明らかにすることで、クラッシュを防ぐことができます。
モニター モバイル アプリの概要UIページで、Crash analysis をクリックします。
クラッシュデータを分析する 最も影響の大きいクラッシュを確認し、修正することができます。
クラッシュイベントトレイル のパンくずをたどると、クラッシュの修正や重大なエラーの解決が容易になります。
モバイル アプリの UI のCrash analysisページから、 Crash typeを選択します。
クラッシュ タイプのSummaryページから、 Crash trailタブを選択します。
カスタムブレッドクラム を作成して、主要なワークフロー(アプリのログインやチェックアウトのプロセスなど)を監視し、ユーザーのクリックを追跡し、タイミングを最適化し、MTTRを短縮するためにクラッシュ箇所を特定します。
例のクエリ から借りる。
- ユーザーのうち、どれだけの人が最新のアプリにアップグレードしたかを確認できます。
- 採用状況を長期的に追跡する。
- 新規インストールと旧バージョンからのアップグレードの数を把握することができます。
- 地理的な場所、通信事業者、ASNオーナー(Wi-Fiプロバイダー)、デバイス、接続タイプなどの使用量の分布を確認できます。
Use alert notifications to help uncover the causes behind crashes and errors.
モバイルモニタリング機能を本番環境で運用し、いくつかの主要な機能を確認したら、New Relicを使ってモバイルアプリケーションの重要な問題を発見することができます。特に、クラッシュやエラーに注目してください。
- メトリックスベースのを出発点として使用して、問題に対する高レベルの可視性を獲得します。
- その後、新しいサービスや機能が追加されると、New Relic のよりターゲットを絞ったイベントベース (NRQL) アラートを使用して、最も重要な問題が迅速に処理されるようにします。
これらのアラートを使用して、クラッシュが多数のユーザーに影響を与えているかどうかを判断します。 そうであれば、関係者 (たとえば、モバイル アプリ チームのオンコール メンバーと関連するバックエンド サービスの所有者の両方) に警告が送信されます。
モバイルアプリのクラッシュ率(セッションごとのクラッシュ)やクラッシュの影響を受けたユーザーの割合の変化に対応する方法を、チームが把握していることを確認します。
設定方法
メトリクスベースのアラートやモバイルモニタリングUIをご利用ください。
メトリクスベースのワークフローと、イベントベースのアラート、およびモバイル アプリとシステムに固有のを組み合わせます。
- 直近にリリースされた製品版のクラッシュに焦点を当てたNRQLアラートを作成します。
- 最新のアプリバージョンでクラッシュの影響を受けたユーザーの割合に焦点を当てた追加のNRQLアラートを作成します(ユーザーベースへの全体的な影響を確認します)。
4.クラッシュをより深く掘り下げる
Take your crash reporting to the next level.
次は、再現が難しいクラッシュのいくつかに次の方法で対処します。
- アプリケーションに追加のインストルメントを適用する
- クラッシュイベントトレイル、NRQLクエリ、ダッシュボードを活用して、データを可視化します。
設定方法
モバイル アプリケーションを大規模に実行する場合には、クラッシュは避けられません。 最も影響の大きいクラッシュを理解するのに役立つツールを提供します。 Crash analysis UI使用すると、最も頻繁に発生しているクラッシュ、クラッシュが発生していないユーザーの割合、クラッシュの 80% に関連するファイルとメソッド、特定のユーザーが経験したクラッシュなどを確認できます。
衝突分析でインパクトの強い事故を追求する。
- カスタム属性 を追加して、価値の高い顧客を分類し、その属性を使って最も価値の高いオーディエンスに応じてクラッシュをセグメント化します。
- パンくずやカスタムイベントを追加して、すべてのクラッシュ発生(過去90日間)に至るまでのイベントの詳細な証跡を作成することができます。そして、このクラッシュ・イベント・トレイルをモバイル・モニタリングUIで表示します。
- モバイル監視のVersions trendsページを使用して、後続のリリースでクラッシュ率を改善し、回帰を回避していることを確認します。
ブレッドクラムとカスタム属性を使用して、クラッシュの再現とデバッグを改善します。たとえば、 recordBreadrumb
API を使用してセッション中の状態変化を追跡すると、次のようなクラッシュのデバッグに役立ちます。
- 接続形態の変更
- オリエンテーションの変更
- アプリコードの重要なポイントでのCPUとメモリの状態
既存のイベントにカスタム属性を追加することで、モバイルアプリに対してより正確な質問をすることができます。次のようなディメンションを追加します。
ユーザーID。特定のユーザーの懸念に対応し、どの顧客やセグメントが最も影響を受けているかをよりよく理解するために使用します。
ストアID:デバイスが古い、Wi-Fiの調子が悪いなどの問題に対処するために使用します。
ユーザーセグメント。どのお客様やセグメントに最も影響があるのかをよりよく理解するために使用します。例えば、ログインしたお客様とログインしていないお客様などです。
セッション終了時のカートの中のお金
アプリへのエントリーの起源または帰属
モバイル アプリ全体でカスタム アトリビュート名を標準化し、ウェブサイトと連携させます ( を使用している場合)。これにより、エンド ユーザー チャネル間でパフォーマンスを比較対照できるようになります。 モバイル エージェントは、クラッシュしたセッションとクラッシュしなかったセッションの最後のインタラクションを追跡し、ユーザーがアプリを終了する前に (意図的にまたはクラッシュにより) 何を表示したかを把握できるようにします。
Bring your key performance indicators to life.
カスタムのインタラクションやイベントを作成して、アプリのビジネスクリティカルな部分のユーザーアクティビティなど、最も重要なシグナルに焦点を当てます。これらの強力な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を使用してデフォルトのインタラクションを無効にし、カスタムインタラクションに焦点を当てることで、プライマリーファネルにとって最も重要なページロードを見直すことができます。
これらのカスタムインタラクションの開始時間と停止時間を定義することで、ファネルの個々のステップに関連するアクティビティ(例えば、特定のユーザーアクションやページロードなど)をトレースすることができます。
クラッシュしたセッションとクラッシュしていないセッションの最後のインタラクションを追跡することで、ユーザーがアプリを終了する前に何を見ていたのかを知ることができます(意図的な場合も、クラッシュした場合も)。
Example query for non-crashed sessions:
SELECT count(*) FROM Mobile WHERE sessionCrashed IS NULL FACET lastInteraction SINCE 90 days ago
Example query for crashed sessions:
SELECT count(*) FROM Mobile WHERE sessionCrashed = true FACET lastInteraction SINCE 90 days ago