dt-setup-flutter について
既存の Flutter アプリに Dynatrace プラグインを導入するコーディングエージェント向けスキルです。プロジェクトのファイルを確認しながら、SDK の初期化、プライバシー設定、ナビゲーション追跡、HTTP 計測を案内します。
主な機能
- 01Dynatrace 設定ファイルの確認と設定
- 02Flutter プラグインの導入とセットアップ実行
- 03SDK 初期化とナビゲーション追跡
- 04必要に応じたプライバシーと HTTP 計測の設定
- 05検証とトラブルシューティングの提示
活用シーン
- 01既存の Flutter アプリへの Dynatrace 導入
- 02既存プラグイン設定の確認と修正
- 03ユーザー同意に応じたデータ収集設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dynatrace/ dynatrace-for-ai --skill dt-setup-flutterインストール後、Claude Code で/dt-setup-flutterを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/config-yaml.mduser-opt-in.mdverification.md詳細
Dynatrace Flutter Plugin の統合スキル
前提条件
- Flutter SDK がインストールされ、
flutterがPATHから利用できること - プロジェクトのルートに
pubspec.yamlがある既存の Flutter プロジェクト - Experience Vitals にアクセスできる Dynatrace 環境(
applicationIdとbeaconUrlの取得、またはdynatrace.config.yamlのダウンロードに使用) - Experience Vitals → Mobile にアクセスできるコンソール(アプリの設定(Data Privacy、Enablement and Cost Control)を構成するため)
dartCLI を利用できること(Flutter SDK に付属。プラグインの構成スクリプトの実行に使用)
以下の手順を順番に進め、判断が必要な箇所ではその都度ユーザーに確認してください。変更を提案する前に実際のプロジェクトファイルを読み、現在の状態を決めつけないでください。
Step 1 — 既存の dynatrace.config.yaml を確認する
ユーザーに何かを尋ねる前に、プロジェクトのルートに dynatrace.config.yaml があるか確認します。
- ファイルがある場合: ファイルを読み込み、
applicationIdとbeaconUrlを表示して、対象環境の値と一致していることを確認します。一致している場合は、以下のuserOptInチェックを実行して Step 3 に進みます。 - ファイルがない場合: Step 2 に進みます。
userOptIn チェック:
ファイル内の userOptIn(Android)と DTXUserOptIn(iOS)を確認します。
- 両方のプラットフォームに設定されている場合: 値はそのまま信頼します。
trueの場合は Step 7a の対象として記録します。falseの場合は Step 7a をスキップします。 - いずれかのプラットフォームで設定されていない場合: ユーザーに次のように尋ねます。「User Opt-In モードは有効ですか、無効ですか?」(不明な場合:Experience Vitals → Mobile → [Your App] → Settings → Data Privacy。)不足している値を該当するプラットフォームに追加し、最終的な値が
trueの場合は Step 7a の対象として記録します。
Step 2 — dynatrace.config.yaml を取得する(Step 1 でファイルが見つからなかった場合のみ)
どちらの方法を希望するか、ユーザーに尋ねます。
Option A — コンソールからダウンロード(推奨):
- Dynatrace 環境を開きます
- 次に移動します:Experience Vitals → New Frontend → Mobile
- アプリ名を入力し、プラットフォームとして Flutter を選択します
- Select capability and settings 画面で、監視機能(クラッシュレポート、ユーザーアクションの監視など)を設定します。ユーザーアクションの監視は、後から Experience Vitals → [App] → Settings → Enablement and Cost Control で変更できます。
dynatrace.config.yamlをダウンロードし、プロジェクトのルート(pubspec.yamlと同じ階層)に配置します
ファイルを配置したら、Step 1 の userOptIn チェックを適用し、必要に応じて Step 7a の対象として記録します。
Option B — 認証情報を手動で入力:
完全なテンプレートと条件付きブロックについては、references/config-yaml.md を読みます。ファイルを作成する前に、必要な値をすべてユーザーから収集し、その後 userOptIn チェックを適用して、必要に応じて Step 7a の対象として記録します。
Step 3 — 依存関係を追加する
まず pubspec.yaml を読みます。
- 存在しない場合: 次を実行します。
flutter pub add dynatrace_flutter_plugin - すでに
dependenciesにある場合: 変更せず Step 4 に進みます。 dev_dependenciesにある場合:dev_dependenciesから削除してから、flutter pub add dynatrace_flutter_pluginを実行します。このプラグインは、リリースビルドを含め、実行時に必要です。
Step 4 — 依存関係を取得する
Step 3 で flutter pub add を実行した場合は、依存関係をすでに取得しているため、この手順をスキップします。
それ以外の場合は、次を実行します。
flutter pub get
続行する前に、成功したことを確認します。
Step 5 — Dynatrace 構成スクリプトを実行する
dart run dynatrace_flutter_plugin
このスクリプトは dynatrace.config.yaml を読み込み、Android Gradle と ios/Runner/Info.plist を自動的に構成します。ネイティブファイルを手動で編集する必要はありません。
よくある間違いとして、次を指摘して修正します。
flutter pub run dynatrace_flutter_plugin— 誤りです。dart run dynatrace_flutter_pluginを使用しますbuild.gradle/build.gradle.ktsまたはInfo.plistの手動編集 — 不要です
ステップ 6 — main.dart で SDK を初期化する
lib/main.dart を読み込みます。runApp(...) を Dynatrace().start(...) に置き換えます。
import 'package:dynatrace_flutter_plugin/dynatrace_flutter_plugin.dart';
import 'package:flutter/material.dart';
void main() {
Dynatrace().start(const MyApp());
}
Dynatrace().start()は内部でrunAppを呼び出すため、個別のrunApp呼び出しは削除してください- Dynatrace では
start()の前にWidgetsFlutterBinding.ensureInitialized()を呼び出す必要はありません。ただし、プラグインやプラットフォームの設定など、アプリでほかの初期化処理が必要な場合は残してください Dynatrace().start()自体にawaitを付けないでください。start()の呼び出し前に完了させる必要がある、ほかのアプリ初期化処理にのみawaitを使用してください
ステップ 7 — ナビゲーションのトラッキングを追加する
ルートの MaterialApp または CupertinoApp の navigatorObservers に DynatraceNavigationObserver() を追加します。
MaterialApp(
navigatorObservers: [DynatraceNavigationObserver()],
...
)
CupertinoApp(
navigatorObservers: [DynatraceNavigationObserver()],
...
)
ステップ 7a — プライバシーオプションの呼び出し(userOptIn: true の場合のみ)
ステップ 1 または 2 で userOptIn を true に設定していない場合は、このステップをスキップしてください。
DataCollectionLevel、crashReportingOptedIn、配置オプションの詳細については、references/user-opt-in.md をお読みください。そこに定義されている質問をユーザーに確認してから、該当するファイルに呼び出しを適用します。
ステップ 8 — HTTP の計測(該当する場合)
pubspec.yaml で http パッケージへの依存関係を確認します。さらに、コードベース全体から import 'dart:io' と HttpClient の使用箇所を検索します。いずれかが見つかった場合は、計測を適用します。
| パッケージ | 計測 |
|---|---|
http | Dynatrace().createHttpClient() — インスタンスの生成箇所にある http.Client() を置き換えます |
dart:io HttpClient | Dynatrace().createWebRequestTiming(...) による手動の計測 — そのまま置き換えられるラッパーはありません |
createHttpClient() には省略可能な client: パラメーターがあり、既存のクライアントインスタンスをラップできます。プロジェクト内の http.Client() の生成箇所をすべて見つけ、Dynatrace().createHttpClient() に置き換えてください。
いずれも見つからない場合は、ネットワーク呼び出しを追加する際の対応事項として記録してください。
ステップ 9 — セットアップ後の概要
有効になっている項目をユーザーに確認します。
デフォルトで有効(userOptIn が false または未指定の場合):
- ✅ クラッシュレポート
- ✅ ユーザーアクションのトラッキング
- ✅ ネットワークモニタリング
- ✅ ライフサイクルのモニタリング
- ✅ 自動起動
userOptIn: trueの場合、クラッシュレポートを含むすべてのデータ収集は、applyUserPrivacyOptions(...)の呼び出しを条件として有効になります。
このセットアップで設定した項目:
- プライバシーモード:[userOptIn: true — 同意の呼び出しを追加済み/オプトアウト(SDK のデフォルト)]
- ナビゲーショントラッキング:[DynatraceNavigationObserver を追加済み]
- HTTP の計測:[適用済み/現時点では該当なし]
ステップ 10 — 検証
references/verification.md を読み込み、検証チェックリストをユーザーに提示します。5 分経ってもデータが表示されない場合は、そのファイルのトラブルシューティング手順に沿って確認します。
参照ファイル
references/config-yaml.md— Grail と userOptIn の条件付きブロックを含む、dynatrace.config.yamlの完全なテンプレートreferences/user-opt-in.md—applyUserPrivacyOptionsのガイダンス、DataCollectionLevelのオプション、配置オプションreferences/verification.md— セットアップ後の検証チェックリストとトラブルシューティング
外部リファレンス
- pub.dev の dynatrace_flutter_plugin — パッケージの変更履歴、API ドキュメント、最新バージョン
- Dynatrace Flutter インストールガイド — 初期セットアップのドキュメント