
サーバーだけじゃない!New Relic MobileでAndroidアプリを監視してみた
こんにちは、ゲームソリューション部の出村です。
普段、New Relicをサーバーサイドの監視に活用している方も多いでしょうが、実はNew Relicにはクライアントサイドの監視機能も充実していることをご存知でしょうか。今回は、モバイルアプリケーション向けの監視ツールである「New Relic Mobile」について、実際にAndroidアプリに組み込んでみました。その機能や組み込み方などを解説していきます。
New Relicとクライアントサイド監視の可能性
New Relicといえば、多くの方がサーバーサイドのオブザーバビリティツールとしてのイメージを持たれているかもしれません。しかし、実際にはクライアントサイドの監視機能も非常に強力で、「New Relic Web」と「New Relic Mobile」という2つの主要なソリューションを提供しています。
特にモバイルアプリケーションの開発において、ユーザーの実際の使用状況やクラッシュの詳細情報を把握することは、アプリの品質向上に欠かせません。New Relic Mobileを導入することで、これらの貴重なデータをNew Relicのサーバーに集約し、統一されたダッシュボードで分析できるようになります。
New Relic Mobileで何ができるのか
New Relic Mobileを活用することで、以下のような情報を収集・分析できます:
- ユーザーの行動パターン: どの機能がよく使われているか、どのような操作フローを辿っているか
- クラッシュ情報: アプリがクラッシュした際の詳細なスタックトレースや発生条件
- パフォーマンス指標: アプリの起動時間、画面遷移の速度、メモリ使用量など
- ネットワーク通信: APIコールの成功率、レスポンス時間、エラー率など
New Relic Mobileの詳細については、弊社木田が以前に書いたブログでも解説されていますので、そちらもぜひご参照ください。
これらのデータを分析することで、「アプリをより安定的に動作させる」「アプリをより使いやすくする」といった具体的な改善アクションに繋げることができます。
対応プラットフォームも豊富で、iOS、Android、Flutterなど、主要なモバイル開発環境をカバーしているため、開発環境に関わらず導入を検討できるのも魅力の一つです。
実際にAndroidアプリに組み込んでみた
今回は、実際にAndroidアプリケーションにNew Relic Mobileを組み込んで、データ収集を試してみました。結論から言うと30分程度あれば完了します。
開発環境
今回の検証では、Androidアプリ開発を対象としたため、以下の環境を使用しました:
- IDE: Android Studio
- 言語: Kotlin
- アプリターゲット: Android 15
- New Relic Agent: 7.6.6
導入手順
基本的な手順は、New Relicの公式ドキュメントに従って進めるだけです。まず最初に、New RelicのIntegrations & AgentsからAndroidを選択します。Androidという項目は2つ表示される事もありますが、こちらのアイコンの方を選択してください
すると、プロジェクトに対してNew Relic Mobileを組みこむ手順がステップバイステップの指示が表示されるので、それに従って作業を進めます。
ここからは手順どおりなのですが、以下の通りに行います。
1. build.gradle.kts(プロジェクトレベル)ファイルへの設定追加
New RelicのAgentプラグインをインストールするための設定を追記します。
buildscript {
// The following section is needed only if pluginMangement is not used in settings.gradle
repositories {
mavenCentral()
}
dependencies {
classpath("com.newrelic.agent.android:agent-gradle-plugin:7.6.6")
}
}
2. build.gradle.kts(モジュールレベル)ファイルへの設定追加
こちらにも同様にNew RelicのAgentプラグインをインストールするための設定を追記します。
plugins {
...
id("newrelic")
}
dependencies {
...
implementation("com.newrelic.agent.android:android-agent:7.6.6")
}
3. AndroidManifest.xmlファイルに対してパーミッション追加
New Relicサーバーへデータ送信を行うので、そのために必要なパーミッションを設定します。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
4. MainActivity.ktのonCreateメソッドにてAgent関連のコードを追加
このNewRelic のAgentを起動させるためのコードを追加します。MainActivityのonCreateメソッドの最後に追加します。
引数で渡すコードはアプリ固有のIDです。先に紹介した手順を進めていくと、コードが表示されます。
NewRelic.withApplicationToken(
"AAbbccddeeff123456789-ABCD"
).start(this.applicationContext)
5.Gradleの同期
Gradle関連の設定を変更したので、「File > Sync Project With Gradle Files」を実行してプロジェクトに同期させます。
あとはビルドして、実行するとNew Relicのダッシュボードに結果が反映されます。
導入時の注意点
実際に導入する際に、注意すべき点があります。先の手順では、NewRelicのWebサイトで導入手順が紹介されますが、その際に表示されるコードでは、New Relic Agentのバージョンが6.11.1で指定されています。
このバージョンは、最新の開発環境には対応してないためエラーとなります。
この問題を解決するため、Maven Central Repositoryで最新バージョンを確認し、7.6.6に更新しています。gradle関連でエラーとなった方は、build.gradle.ktsファイルでNew Relic Agentを指定する際に最新バージョンとなっているか確認するのがよいでしょう。
実際に動かしてみた結果
導入後、実際にアプリを操作してみると、New Relicのダッシュボードに様々なデータが表示されるようになりました。ユーザーセッション、画面遷移、ネットワーク通信、そして意図的に発生させたANRまで、すべて詳細に記録されていました。
特に印象的だったのは、データの可視化の分かりやすさです。グラフやチャートで直感的に、問題が発生した時刻、回数、アプリ中の問題発生箇所が把握できるので、問題の特定や改善点の発見が容易になると感じました。
問題分析以外にも、どこのユーザーが利用しているのかといった情報も取得できます。これらの情報もアプリ改善に役立つでしょう。
最後に
今回の検証を通じて、New Relic Mobileがアプリ開発者にとって非常に有意義なサービスであることを実感しました。
最も大きなメリットは、サーバーサイドとクライアントサイドの開発者が同じ土俵で分析・議論できるようになることです。これまでサーバーサイドのメトリクスとクライアントサイドの問題報告が分断されがちでしたが、New Relicを活用することで、開発チーム全員が同じデータセットを基に議論し、改善策を検討できるようになります。
この統一されたアプローチにより、より効率的な問題解決と継続的な改善が可能になり、最終的には顧客により良い価値を届けることができるでしょう。
モバイルアプリの品質向上や運用改善にお悩みの方は、ぜひNew Relic Mobileの導入を検討してみてください。