モバイルアプリのパフォーマンスを改善する – Breadcrumbsの活用

Building Mobile Application Performance Stories With Breadcrumbs の意訳記事です。

ヘンゼルとグレーテルが残したパンくずとは違い、アプリ内のパンくず – Breadcrumbsは、パフォーマンスの低下やクラッシュに至る状況を把握しようとしているモバイルアプリ開発者にとって非常に有用です。

多くの開発者は、クラッシュの原因解明やトラブルシューティングの目的で、アプリの特定箇所で少しでも多くの情報を収集するためにもBreadcrumbsを利用しています。また、アプリ内のユーザーフローを理解したりする際や、ユーザーの操作統計を取得するなどBreadcrumbsでの活用方法は数多くあり、その有用性は無限です。

この記事では、モバイルアプリのパフォーマンスを向上させるためにBreadcrumbsを使用する方法を説明します。

New RelicにおけるBreadcrumbs –
“パンくず” を利用したパフォーマンス改善

New Relicではスマートフォンやタブレットでもお客様が自身のビジネスの観測できるようNew Relic および New Relic Insightsというネイティブアプリをご提供しています。
少し前のことですがこのアプリに対して“ログインに時間がかかりすぎる”  “頻繁にログアウトされる” などのフィードバックがアプリストアやサポートに寄せられており、早急に解決する必要性を認識していました。

問題がどこにあるかを理解するため、モバイルアプリチームはログインまわりのプロセス全体にBreadcrumbsを設置することにしました。 モバイルアプリはiOSとAndroid版がそれぞれあるため命名規則を統一し各ログインのステップ・ステージに利用する事にしました。これによりiOS、Android 両環境で一貫性を保ち調査することができました。

Breadcrumbsが設置されると問題箇所はすぐに特定できました、アプリのユーザートークンが過剰にリフレッシュされていたのです。モバイルアプリチームはすぐに解決策を計画し適用する事ができました。 結果、アプリストアのレビューは改善され、サポートに寄せられる件数も減少しました。

では、Breadcrumbsを自分のアプリに使うにはどうすればいいのでしょうか?

BreadcrumbsとNew Relic MobileのCrash event trail

基本的にBreadcrumbsはアプリの問題を調査する際にストーリー – ユーザーの軌跡を構築するために残しておく手がかりです。アプリのログインプロセスやショッピングカートの操作フローなど、アプリにとって重要なワークフローにBreadcrumbsを追加することで、アプリ公開後のトラブルシューティングが非常に簡単になります。

New Relicではrecordbreadcrumb() APIコールを使用してiOSまたはAndroidアプリ用のカスタムイベントを作成することができます。

例えばSwiftでは以下のようなコードでBreadcrumbsをNew Relicに記録する事ができます。

let eventRecorded = NewRelic.recordBreadcrumb("user 11-3435 tapped sign-in from LaunchViewController" attributes:["button" : "sign-in", "userId" : "11-3435", "action" : "tapped", "location" : "LaunchViewController"])

Breadcrumbsを使用すると、セッションデータとBreadcrumbsの間の情報を関連付けることができます。例えば、アプリの特定の処理を通るユーザーの流れを監視するために使用したい場合は、主要なエリアにBreadcrumbsを配置し、ユーザーがそのエリアにヒットすると、New Relic MobileCrash Event trailの中でその流れを確認することができます。

Screen Shot Mobile Crash Event Trail

少しややこしいですが、クラッシュが発生したかどうかに関わらず、Breadcrumbsが生成された経過を確認することができます。例えばユーザーがログインボタンをタップ、メール送信ボタンをタップ、最後に動画再生開始ボタンをタップしたという操作フローをNew Relic Mobileではキャプチャできます。

New Relic OneはこれらのイベントをNew Relic InsightsNew Relic Query Language (NRQL)を使って詳細な情報を照会したり、New Relic Oneのチャートビルダーを使ってダッシュボードにファネルチャートを作成したりすることもできます。

実際、お客様の中にはBreadcrumbsとタイマーを組み合わせて、ユーザーが特定のボタンをタップするまでに画面をどれくらいの時間見ているかを観測していたりします。

おとぎ話の中ではうまくいかないかもしれませんが、実際のアプリ開発では機能します。

アプリの中で改善したい部分がある場合や、注意したい部分がある場合は、Breadcrumbs – パンくずを重要な場所に残しておくことは素晴らしい戦略です。そうすることで、ストーリーを構築して、特定のパンくずがトリガーされない理由や、あるパンくずが他のパンくずよりも頻繁にトリガーされる理由を解明することができます。これによってアプリに組み込まれたユーザーフローや体験の中で何が起こっているのかをより詳細に知ることができます。

パンくずがあれば、モバイルアプリ開発の森の奥深くに取り残されてしまうことはありません。

アプリの応答時間の多くはフロントエンドで行われるため、クライアントサイドのパフォーマンスを監視することは非常に重要です。
New Relic Mobileを最大限に活用してください。

New Relic ソリューションコンサルタント。国内SIerにて金融系システム開発、IaaS立上げプロジェクトなどに従事。その後、外資ハードウェアベンダーでプリセールスエンジニアを、フリーランスエンジニアとしてクラウドマイグレーション企画・B2Bモバイルアプリ開発等を経て現職。 View posts by .