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

Androidアプリケーションの多様なデバイス環境とOSバージョンにおいて、一貫したパフォーマンス監視を実現することは、優れたユーザー体験の提供に不可欠です。New Relic Android SDKは、この複雑な要件に対応し、包括的なアプリケーション監視機能を提供します。本ガイドでは、Android Studioでの開発環境から本番環境までの完全な導入手順を、JavaとKotlinの両方に対応して詳しく解説します。

Android SDK概要と監視機能

New Relic Android SDKは、Android 5.0(API レベル 21)以上をサポートし、多様なAndroidデバイスで動作するよう最適化されています。SDKは軽量で効率的な設計により、アプリケーションのパフォーマンスへの影響を最小限に抑えながら、詳細な監視データを収集します。

Android特有の監視項目

Androidプラットフォームの特性に配慮した以下の監視機能を提供します。

アプリケーションライフサイクル管理では、Activity、Fragment、Serviceの状態遷移とパフォーマンスを詳細に追跡します。複雑なナビゲーション構造やバックグラウンド処理の効率性を評価できます。

メモリ管理の最適化により、Javaヒープ、ネイティブヒープ、Dalvikヒープの使用状況を監視し、メモリリークやガベージコレクションの影響を分析します。Android特有のメモリ制約に対応した最適化指針を提供します。

ネットワーク通信の包括的分析では、OkHttp、Retrofit、Volley、標準のHttpURLConnectionによる通信を自動的に追跡し、通信効率とエラーパターンを詳細に分析します。

ANR(Application Not Responding)検知により、UIスレッドのブロッキングやレスポンシブネスの問題を早期に発見し、ユーザー体験への悪影響を防止します。

カスタムメトリクス収集では、ビジネスロジック固有の指標やユーザー行動パターンを定義し、包括的なアプリケーション分析を実現します。

事前準備とシステム要件

Android SDK導入前の環境確認と準備作業を行います。

システム要件

  • Android 5.0(API レベル 21)以上(Android 8.0以上を推奨)
  • Android Studio 4.0以上(最新安定版を推奨)
  • Gradle 6.0以上
  • Java 8以上またはKotlin 1.4以上
  • New Relicアカウントとアプリケーショントークン

アプリケーショントークンの準備

New Relicダッシュボードにアクセスし、「Add Data」→「Mobile」→「Android」を選択します。新規アプリケーションを作成し、生成されるアプリケーショントークンを安全に保管してください。このトークンは後の設定で使用します。

プロジェクト設定の確認

Android Studioでプロジェクトを開き、最小SDKバージョンがAPI 21以上に設定されていることを確認してください。必要に応じて、build.gradle (Module: app)ファイルで設定を調整します。

Gradle統合による導入

New Relic Android SDKの最も効率的な導入方法は、Gradleビルドシステムとの統合です。

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

プロジェクトルートのbuild.gradleファイルに、New Relic 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' // New Relicプラグインを追加
    // 他のプラグイン
}

android {
    compileSdk 34
    
    defaultConfig {
        applicationId "com.yourcompany.yourapp"
        minSdk 21
        targetSdk 34
        versionCode 1
        versionName "1.0"
    }
    
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation 'com.newrelic.agent.android:android-agent:7.0.0'
    // 他の依存関係
}

ProGuard/R8設定

リリースビルドでコード難読化を使用する場合は、ProGuardまたはR8設定ファイルに以下のルールを追加します。

proguard
# New Relic用のProGuardルール
-keep class com.newrelic.** { *; }
-dontwarn com.newrelic.**
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable

SDK初期化の実装

Androidアプリケーションでの適切な初期化設定を行います。

Kotlin実装

ApplicationクラスまたはMainActivityで初期化を実装します。Applicationクラスでの実装を推奨します。

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

class MyApplication : Application() {
    
    override fun onCreate() {
        super.onCreate()
        
        // New Relic初期化
        NewRelic.withApplicationToken("YOUR_APPLICATION_TOKEN")
            .start(this)
    }
}

AndroidManifest.xmlでApplicationクラスを指定することを忘れないでください。

xml
<application
    android:name=".MyApplication"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    
    <!-- Activities定義 -->
    
</application>

MainActivityでの初期化が必要な場合は以下のように実装します。

kotlin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.newrelic.agent.android.NewRelic

class MainActivity : AppCompatActivity() {
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // New Relic初期化(Applicationクラスで行わない場合)
        NewRelic.withApplicationToken("YOUR_APPLICATION_TOKEN")
            .start(this.application)
        
        setContentView(R.layout.activity_main)
    }
}

Java実装

Javaでの実装例を以下に示します。

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

public class MyApplication extends Application {
    
    @Override
    public void onCreate() {
        super.onCreate();
        
        // New Relic初期化
        NewRelic.withApplicationToken("YOUR_APPLICATION_TOKEN")
               .start(this);
    }
}

MainActivityでの実装の場合:

java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.newrelic.agent.android.NewRelic;

public class MainActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // New Relic初期化
        NewRelic.withApplicationToken("YOUR_APPLICATION_TOKEN")
               .start(getApplication());
        
        setContentView(R.layout.activity_main);
    }
}

高度な設定とカスタマイズ

アプリケーション固有の要件に応じた詳細設定オプションを活用します。

ログレベルとデバッグ設定

開発環境と本番環境で異なるログレベルを設定できます。

kotlin
// 開発環境での詳細ログ
NewRelic.withApplicationToken("YOUR_APPLICATION_TOKEN")
    .withLogLevel(AgentLog.VERBOSE)
    .withLoggingEnabled(true)
    .start(this)

// 本番環境での最小ログ
NewRelic.withApplicationToken("YOUR_APPLICATION_TOKEN")
    .withLogLevel(AgentLog.ERROR)
    .withLoggingEnabled(false)
    .start(this)

カスタム属性とイベントの追加

ビジネス固有の情報を監視データに含めることができます。

kotlin
// ユーザー情報の設定
NewRelic.setUserId("user_12345")
NewRelic.setAttribute("userType", "premium")
NewRelic.setAttribute("appVersion", BuildConfig.VERSION_NAME)

// カスタムイベントの記録
val attributes = hashMapOf<String, Any>(
    "productId" to "item_001",
    "category" to "electronics",
    "price" to 199.99
)
NewRelic.recordCustomEvent("PurchaseCompleted", attributes)

// カスタムメトリクスの記録
NewRelic.recordMetric("Custom/DatabaseQueryTime", 45.2)

ネットワーク監視の詳細設定

特定のHTTPリクエストの監視設定をカスタマイズできます。

kotlin
// 特定URLパターンの監視除外
NewRelic.addHTTPHeadersTrackingFor(listOf("Content-Type", "Authorization"))

// 手動でのネットワークリクエスト追跡
val startTime = System.currentTimeMillis()
// HTTPリクエスト実行
val endTime = System.currentTimeMillis()
NewRelic.noticeNetworkRequest(
    "https://api.example.com/data",
    "GET",
    startTime,
    endTime,
    200,
    1024,
    2048
)

パフォーマンス最適化とベストプラクティス

Android SDKの効果的な活用のための推奨事項を紹介します。

初期化タイミングの最適化

SDK初期化はApplication.onCreate()メソッドで実行し、他のライブラリ初期化よりも優先して配置することを推奨します。これにより、アプリケーション全体のライフサイクルを正確に監視できます。

メモリ使用量の管理

大量のカスタムイベントやメトリクスを送信する場合は、送信頻度とデータサイズを適切に調整し、アプリケーションのメモリ使用量への影響を最小限に抑えてください。

バッテリー消費の配慮

監視機能がバッテリー消費に与える影響を最小限に抑えるため、不要な詳細監視は本番環境では無効にし、重要な指標に焦点を絞った設定を行ってください。

トラブルシューティング

Android SDK導入時の一般的な問題と解決策を説明します。

ビルドエラーの解決

Gradleプラグインのバージョン互換性、Androidプラグインとの競合、ProGuard設定の問題などが発生する場合があります。プロジェクトのクリーンビルドを実行し、依存関係を再確認してください。

データ送信の問題

ネットワーク接続、アプリケーショントークンの正確性、初期化コードの配置を確認してください。Android Studio Logcatでエラーメッセージを確認し、問題の特定を行います。

パフォーマンスへの影響

SDK導入後にアプリケーションの動作が重くなった場合は、ログレベルの調整、カスタムイベント送信頻度の最適化、不要な監視機能の無効化を検討してください。

まとめ

New Relic Android SDKの適切な導入により、Androidアプリケーションの包括的なパフォーマンス監視とユーザー体験の最適化が実現できます。多様なAndroidデバイス環境での一貫した動作と詳細な分析機能により、品質の高いモバイルアプリケーションの開発と運用を支援します。

継続的な監視データの活用により、ユーザー満足度の向上とビジネス成果の最大化を実現してください。次のステップとして、React NativeやFlutterなどのクロスプラットフォーム開発環境での活用方法についても学習することをお勧めします。


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