New Relic Flutter統合設定 - Dart・ネイティブ統合監視の完全ガイド

Flutterアプリは、Dartコードとプラットフォーム固有のネイティブコードが連携して動作します。New Relic Flutter Agentは、この構造を統合的に監視し、包括的なパフォーマンス分析を提供します。ここでは、Flutter開発環境での基本的な導入手順を解説します。

New Relic Flutter Agentの基本機能

New Relic Flutter Agentは、Flutter 2.0以上で動作し、Dartコードとネイティブプラットフォームの両方を統合監視できます。

監視できる項目

Flutter特有の以下の項目を監視できます。

Dartコードの実行時間やウィジェットのビルド時間を測定し、UI描画パフォーマンスを把握できます。

DartとiOS・Android間のプラットフォームチャネル通信を追跡し、ネイティブ機能呼び出しの効率性を分析できます。

フレームレート分析により、60FPSでのスムーズな描画が実現できているかを確認できます。

アプリのライフサイクル管理やホットリロードの影響も追跡できます。

導入前の準備

動作環境

  • Flutter 2.0以上
  • Dart 2.17以上
  • iOS: Xcode 12以上、iOS 11以上
  • Android: Android Studio 4.0以上、Android API 21以上
  • New Relicアカウント

開発環境の確認

以下のコマンドで環境を確認してください。

bash
flutter doctor -v

New Relicアカウントの設定

New Relicの管理画面で「Add Data」→「Mobile」→「Flutter」を選択し、新しいアプリを作成します。iOSとAndroid用にそれぞれアプリケーショントークンが必要な場合があります。

パッケージの導入

pubspec.yamlファイルに依存関係を追加します。

yaml
dependencies:
  flutter:
    sdk: flutter
  newrelic_mobile: ^1.0.0

パッケージをインストールします。

bash
flutter pub get

プラットフォーム設定

iOS設定

newrelic_mobileパッケージはDartラッパーのため、ネイティブのNew Relic iOS SDKを別途インストールする必要があります。以下のいずれかの方法でネイティブSDKをインストールしてください。

Swift Package Managerを使用する場合

Xcodeで以下の手順でSDKを追加します:

  1. Xcodeでプロジェクトを開く
  2. File → Add Package Dependencies を選択
  3. パッケージURL: https://github.com/newrelic/newrelic-ios-agent-spm を入力
  4. 最新バージョンを選択してインストール

CocoaPodsを使用する場合

ios/Podfileに以下を追加します:

ruby
pod 'NewRelicAgent'

Podをインストールします:

bash
cd ios && pod install && cd ..

重要: どちらの方法を選択した場合でも、次のAppDelegate.swiftの設定が必要です。

AppDelegate.swiftの設定

SDKインストール後、AppDelegate.swiftファイルを編集します:

swift
import NewRelic

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    NewRelic.start(withApplicationToken: "YOUR_IOS_APPLICATION_TOKEN")
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

Android設定

AndroidでNew Relicを有効にするには、Gradle設定とMainActivityの両方が必要です。以下の手順を順番に実行してください。

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

android/build.gradleファイルのbuildscriptブロック内のdependenciesに以下を追加:

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

アプリレベルのbuild.gradle設定

android/app/build.gradleファイルのpluginsブロックとdependenciesブロックに以下を追加:

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

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

重要: Gradle設定後は、次のMainActivityの設定も必要です。

MainActivity.ktの設定

MainActivity.ktファイルを編集します:

kotlin
import com.newrelic.agent.android.NewRelic

class MainActivity: FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine)
        NewRelic.withApplicationToken("YOUR_ANDROID_APPLICATION_TOKEN")
               .start(this.applicationContext)
    }
}

Dart実装

main.dartファイルでAgentを初期化します。

dart
import 'package:flutter/material.dart';
import 'package:newrelic_mobile/newrelic_mobile.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  NewrelicMobile.instance.start('YOUR_APPLICATION_TOKEN');
  
  runApp(MyApp());
}

基本的なカスタマイズ

ユーザー情報の追加

dart
// ユーザー属性設定
await NewrelicMobile.instance.setUserId('user123');
await NewrelicMobile.instance.setAttribute('userType', 'premium');

カスタムイベントの記録

dart
// 重要な操作の記録
await NewrelicMobile.instance.recordCustomEvent('PurchaseCompleted', {
  'itemId': 'product123',
  'price': 29.99
});

よくある問題と解決方法

プラットフォーム固有の初期化問題

iOSとAndroidで異なるアプリケーショントークンを使用する場合は、それぞれ正しく設定されているか確認してください。

Hot Reloadとの問題

Hot Reload時にNew Relicの状態がリセットされる場合があります。開発中は初期化コードの配置を確認してください。

データが表示されない

アプリケーショントークンが正しく設定されているか、ネットワーク接続に問題がないかを確認してください。

まとめ

New Relic Flutter Agentを導入することで、Flutterアプリの包括的なパフォーマンス監視が可能になります。Dartランタイムとネイティブプラットフォームの統合監視により、Flutter特有の課題を効果的に解決できます。

継続的に監視データを活用し、アプリの品質向上とユーザー満足度の向上に役立ててください。開発効率とユーザー体験の両方を改善する強力なツールとして活用していきましょう。


関連記事: New Relicモバイル監視概要関連記事: New Relic iOS SDK設定ガイド