New Relic Android SDK設定ガイド - Java・Kotlin対応の包括的導入手順

Androidアプリは多様なデバイス環境で動作するため、一貫したパフォーマンス監視が重要です。New Relic Android SDKは、アプリの動作状況を詳細に把握し、ユーザー体験の向上に役立ちます。ここでは、Android Studioでの基本的な導入手順をJavaとKotlinの両方に対応して解説します。

New Relic Android SDKの基本機能

New Relic Android SDKは、Android 5.0(API レベル 21)以上をサポートし、Androidアプリの動作状況を自動で監視します。アプリのパフォーマンスに大きな影響を与えることなく、必要な情報を収集できます。

監視できる項目

Androidアプリ特有の以下の項目を監視できます。

画面の表示時間やボタンタップの応答時間など、ユーザーの操作に関わる部分を追跡します。アプリがどの程度快適に使えるかを数値で確認できます。

メモリの使用量やCPUの負荷状況を監視し、アプリが重くなる原因を特定できます。特にAndroid特有のメモリ管理に関する問題も発見できます。

APIとの通信状況を自動で追跡し、通信の遅延やエラーの発生状況を把握できます。よく使われるライブラリ(OkHttp、Retrofitなど)にも対応しています。

アプリが固まってしまうANR(Application Not Responding)の発生を検知し、早期に問題を発見できます。

アプリ独自の重要な操作(購入完了、ログインなど)も追跡対象として設定できます。

導入前の準備

動作環境

基本的な動作要件は以下のとおりです。

  • Android 5.0(API レベル 21)以上
  • Android Studio 4.0以上
  • Gradle 6.0以上
  • Java 8以上またはKotlin 1.4以上
  • New Relicアカウント

New Relicアカウントの設定

New Relicの管理画面で「Add Data」→「Mobile」→「Android」を選択し、新しいアプリを作成します。作成時に表示されるアプリケーショントークンをメモしておいてください。この文字列は後で使います。

Android Studioで既存のプロジェクトを開き、最小SDKバージョンがAPI 21以上になっていることを確認してください。

Gradleによる導入

Gradleを使ってSDKをプロジェクトに追加します。

プロジェクトレベルの設定

プロジェクトルートのbuild.gradleファイルを開き、以下を追加してください。

gradle
buildscript {
    dependencies {
        classpath "com.newrelic.agent.android:agent-gradle-plugin:7.0.0"
    }
}

アプリレベルの設定

app/build.gradleファイルの先頭に、以下のプラグインを追加してください。

gradle
plugins {
    id 'com.android.application'
    id 'newrelic' // この行を追加
}

dependencies {
    implementation 'com.newrelic.agent.android:android-agent:7.0.0'
}

リリースビルド時にコード難読化を使用している場合は、proguard-rules.proに以下を追加してください。

proguard
-keep class com.newrelic.** { *; }
-dontwarn com.newrelic.**
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable

この設定の重要性:

  • -keep class com.newrelic.** { *; }: New Relicのクラスを難読化から除外
  • -dontwarn com.newrelic.**: New Relic関連の警告を抑制
  • -keepattributes: クラッシュレポートの品質向上に必要な属性情報を保持
    • Exceptions: 例外情報の保持
    • InnerClasses: 内部クラス情報の保持
    • Signature: ジェネリクス情報の保持
    • SourceFile,LineNumberTable: ソースファイル名と行番号情報の保持(デバッグ時に重要)

これらの設定により、本番環境でのクラッシュ発生時に詳細なスタックトレースと位置情報を取得できます。

アプリ内での初期化

Kotlin での実装

Applicationクラスを作成し、アプリ起動時にNew Relicを初期化します。

kotlin
import android.app.Application
import com.newrelic.agent.android.NewRelic

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        NewRelic.withApplicationToken("YOUR_APPLICATION_TOKEN")
            .start(this)
    }
}

AndroidManifest.xmlでApplicationクラスを指定してください。

xml
<application
    android:name=".MyApplication"
    android:label="@string/app_name">
</application>

Java での実装

java
import android.app.Application;
import com.newrelic.agent.android.NewRelic;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        NewRelic.withApplicationToken("YOUR_APPLICATION_TOKEN")
               .start(this);
    }
}

基本的なカスタマイズ

ユーザー情報の追加

アプリのユーザー情報を追跡できます。

kotlin
// ユーザーID設定
NewRelic.setUserId("user_12345")
NewRelic.setAttribute("userType", "premium")

カスタムイベントの記録

アプリ独自の重要な操作を記録できます。

kotlin
// 購入完了イベントの例
val attributes = hashMapOf<String, Any>(
    "productId" to "item_001",
    "price" to 199.99
)
NewRelic.recordCustomEvent("PurchaseCompleted", attributes)

運用時の注意点

初期化のタイミング

SDK初期化はApplicationクラスのonCreate()で行うことで、アプリ全体のライフサイクルを正確に監視できます。

パフォーマンスへの影響

SDKはアプリのパフォーマンスに大きな影響を与えないよう設計されていますが、大量のカスタムイベントを送信する場合は送信頻度を調整しましょう。

バッテリー消費

本番環境では必要最小限の監視設定にすることで、バッテリー消費を抑えられます。

よくある問題と解決方法

ビルドエラー

Gradleのバージョン互換性の問題が発生した場合は、プロジェクトをクリーンビルドしてから再度ビルドしてください。

データが表示されない

アプリケーショントークンが正しく設定されているか、ネットワーク接続に問題がないかを確認してください。Android StudioのLogcatでエラーメッセージも確認できます。

アプリが重くなった

初期設定では問題ないはずですが、大量のカスタムイベントを送信している場合は頻度を調整してください。

まとめ

New Relic Android SDKを導入することで、Androidアプリのパフォーマンス状況を詳しく把握できるようになります。多様なAndroidデバイスでの動作状況を統一的に監視し、ユーザー体験の向上に役立てることができます。

継続的に監視データを確認し、アプリの改善に活用してください。次は他のプラットフォーム(iOSやReact Native)での設定方法も学んでいくと良いでしょう。


関連記事: New Relic React Native統合設定関連記事: New Relic Flutter統合設定