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アカウント
開発環境の確認
以下のコマンドで環境を確認してください。
flutter doctor -v
New Relicアカウントの設定
New Relicの管理画面で「Add Data」→「Mobile」→「Flutter」を選択し、新しいアプリを作成します。iOSとAndroid用にそれぞれアプリケーショントークンが必要な場合があります。
パッケージの導入
pubspec.yamlファイルに依存関係を追加します。
dependencies:
flutter:
sdk: flutter
newrelic_mobile: ^1.0.0
パッケージをインストールします。
flutter pub get
プラットフォーム設定
iOS設定
newrelic_mobile
パッケージはDartラッパーのため、ネイティブのNew Relic iOS SDKを別途インストールする必要があります。以下のいずれかの方法でネイティブSDKをインストールしてください。
Swift Package Managerを使用する場合
Xcodeで以下の手順でSDKを追加します:
- Xcodeでプロジェクトを開く
- File → Add Package Dependencies を選択
- パッケージURL:
https://github.com/newrelic/newrelic-ios-agent-spm
を入力 - 最新バージョンを選択してインストール
CocoaPodsを使用する場合
ios/Podfile
に以下を追加します:
pod 'NewRelicAgent'
Podをインストールします:
cd ios && pod install && cd ..
重要: どちらの方法を選択した場合でも、次のAppDelegate.swiftの設定が必要です。
AppDelegate.swiftの設定
SDKインストール後、AppDelegate.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に以下を追加:
buildscript {
dependencies {
classpath "com.newrelic.agent.android:agent-gradle-plugin:7.0.0"
}
}
アプリレベルのbuild.gradle設定
android/app/build.gradle
ファイルのpluginsブロックとdependenciesブロックに以下を追加:
plugins {
id 'com.android.application'
id 'newrelic' // この行を追加
}
dependencies {
implementation 'com.newrelic.agent.android:android-agent:7.0.0'
}
重要: Gradle設定後は、次のMainActivityの設定も必要です。
MainActivity.ktの設定
MainActivity.ktファイルを編集します:
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を初期化します。
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());
}
基本的なカスタマイズ
ユーザー情報の追加
// ユーザー属性設定
await NewrelicMobile.instance.setUserId('user123');
await NewrelicMobile.instance.setAttribute('userType', 'premium');
カスタムイベントの記録
// 重要な操作の記録
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設定ガイド