コンテンツにスキップ

Uniapp 開発フレームワークに基づくミニアプリの導入


更新履歴

2026.8.25:

  • @cloudcare/rum-uniapp 2.2.22:allowedTracingUrls を追加。完全なリクエスト URL でマッチング。allowedTracingOrigins は非推奨の互換設定に変更。抖音の navigation とページスタックが一時的に空になる際のページ帰属の問題を修正。

2026.8.20:

  • @cloudcare/rum-uniapp 2.2.21:ページ初回レンダリング、FP、FCP、LCP、Ready 状態、ページ終了理由、setData のセグメント化された所要時間、プラットフォーム能力フィールドを追加。低速レンダリングや白画面候補の統計に使用可能。

2026.8.11:

  • @cloudcare/rum-uniapp:allowTraceHeaderWithoutSession 設定を追加。デフォルト値は false。有効にすると、現在の Session が RUM サンプリングにヒットしない場合でも、allowedTracingOrigins にヒットしたリクエストには Trace Header が注入されるが、その Session の RUM データが強制的にサンプリングされたりアップロードされたりすることはない。

2022.9.29:初期化パラメータに isIntakeUrl 設定を追加。リクエストリソース URL に基づいて、対応するリソースデータを収集するかどうかを判断するために使用。デフォルトではすべて収集。

2022.3.29:

  • traceType 設定を追加。分散型トレーシングのツールタイプを設定。設定しない場合のデフォルトは ddtrace。現在は ddtrace、zipkin、skywalking_v3、jaeger、zipkin_single_header、w3c_traceparent の 6 種のデータタイプをサポート。
  • allowedTracingOrigins を追加。Trace コレクターに必要なヘッダーを注入するためのすべてのリクエストリスト。リクエストの origin でも正規表現でも可。

前提条件

  • DataKit をインストールしていること。

アプリケーションの導入

Guance コントロールパネルにログインし、リアルユーザーモニタリング(RUM) ページに移動します。左上のアプリケーションを作成をクリックし、新しいアプリケーションの作成を開始します。

右側で、インストール設定の導入方式を選択し、右側のパラメータ設定をクリックして関連パラメータを入力した後、プロジェクトにコピーして使用できます。

使用方法

Uniapp プロジェクトのエントリファイル main.js の先頭に以下のようにコードを追加します。

NPM

導入(Uniapp 公式のnpm 導入方法を参照)

...
import Vue from 'vue'
//#ifndef H5 || APP-PLUS || APP-NVUE || APP-PLUS-NVUE
const { datafluxRum } = require('@cloudcare/rum-uniapp')
// Rum の初期化
datafluxRum.init(Vue, {
  datakitOrigin: '<DATAKIT ORIGIN>',// 必須、Datakit のドメインアドレス。WeChat ミニアプリ管理画面でドメインホワイトリストに追加する必要あり
  applicationId: '<アプリケーション ID>', // 必須、dataflux プラットフォームで生成されたアプリケーション ID
  env: 'testing', // オプション、ミニアプリの環境
  version: '1.0.0', // オプション、ミニアプリのバージョン
  service: 'miniapp', // 現在のアプリケーションのサービス名
  trackInteractions: true, // ユーザー行動データ
  sampleRate: 100, // 指標データ収集のパーセンテージ。100 は全収集、0 は収集なし
  allowedTracingUrls: ['https://api.example.com/v1/', /https:\/\/.*\.my-api-domain\.com\/v2\//], // 完全なリクエスト URL でマッチング
})
//#endif
....

導入(Uniapp 公式のnpm 導入方法を参照)

...
//#ifndef H5 || APP-PLUS || APP-NVUE || APP-PLUS-NVUE
import { datafluxRum } from '@cloudcare/rum-uniapp'
// Rum の初期化
datafluxRum.initVue3({
  datakitOrigin: '<DATAKIT ORIGIN>',// 必須、Datakit のドメインアドレス。WeChat ミニアプリ管理画面でドメインホワイトリストに追加する必要あり
  applicationId: '<アプリケーション ID>', // 必須、dataflux プラットフォームで生成されたアプリケーション ID
  env: 'testing', // オプション、ミニアプリの環境
  version: '1.0.0', // オプション、ミニアプリのバージョン
  service: 'miniapp', // 現在のアプリケーションのサービス名
  trackInteractions: true, // ユーザー行動データ
  sampleRate: 100, // 指標データ収集のパーセンテージ。100 は全収集、0 は収集なし
  allowedTracingUrls: ['https://api.example.com/v1/', /https:\/\/.*\.my-api-domain\.com\/v2\//], // 完全なリクエスト URL でマッチング
})
//#endif
....

CDN

ファイルをダウンロードしてローカルに導入(ダウンロードアドレス)

...
import Vue from 'vue'
//#ifndef H5 || APP-PLUS || APP-NVUE || APP-PLUS-NVUE
const { datafluxRum } = require('./dataflux-rum-uniapp.js'); // js ファイルのローカルパス
// Rum の初期化
datafluxRum.init(Vue, {
  datakitOrigin: '<DATAKIT ORIGIN>',// 必須、Datakit のドメインアドレス。WeChat ミニアプリ管理画面でドメインホワイトリストに追加する必要あり
  applicationId: '<アプリケーション ID>', // 必須、dataflux プラットフォームで生成されたアプリケーション ID
  env: 'testing', // オプション、ミニアプリの環境
  version: '1.0.0', // オプション、ミニアプリのバージョン
  service: 'miniapp', // 現在のアプリケーションのサービス名
  trackInteractions: true, // ユーザー行動データ
  sampleRate: 100, // 指標データ収集のパーセンテージ。100 は全収集、0 は収集なし
  allowedTracingUrls: ['https://api.example.com/v1/', /https:\/\/.*\.my-api-domain\.com\/v2\//], // 完全なリクエスト URL でマッチング
})
//#endif
....

ファイルをダウンロードしてローカルに導入(ダウンロードアドレス)

...
//#ifndef H5 || APP-PLUS || APP-NVUE || APP-PLUS-NVUE
import { datafluxRum } from './dataflux-rum-uniapp.js'; // js ファイルのローカルパス
// Rum の初期化
datafluxRum.initVue3({
  datakitOrigin: '<DATAKIT ORIGIN>',// 必須、Datakit のドメインアドレス。WeChat ミニアプリ管理画面でドメインホワイトリストに追加する必要あり
  applicationId: '<アプリケーション ID>', // 必須、dataflux プラットフォームで生成されたアプリケーション ID
  env: 'testing', // オプション、ミニアプリの環境
  version: '1.0.0', // オプション、ミニアプリのバージョン
  service: 'miniapp', // 現在のアプリケーションのサービス名
  trackInteractions: true, // ユーザー行動データ
  sampleRate: 100, // 指標データ収集のパーセンテージ。100 は全収集、0 は収集なし
  allowedTracingUrls: ['https://api.example.com/v1/', /https:\/\/.*\.my-api-domain\.com\/v2\//], // 完全なリクエスト URL でマッチング
})
//#endif
....

設定

初期化パラメータ

パラメータ 型 必須 デフォルト値 説明
applicationId String はい Guance で作成されたアプリケーション ID。
datakitOrigin String はい DataKit データアップロードの Origin。
❗️ ミニアプリ管理画面で request ホワイトリストに追加する必要があります。
env String いいえ ミニアプリアプリケーションの現在の環境。例:prod:本番環境;gray:カナリア環境;pre:プリリリース環境;common:日常環境;local:ローカル環境。
version String いいえ ミニアプリアプリケーションのバージョン番号。
service String いいえ 現在のアプリケーションのサービス名。デフォルトは miniapp。カスタム設定可能。
sampleRate Number いいえ 100 指標データ収集のパーセンテージ。100 は全収集、0 は収集なし。
trackInteractions Boolean いいえ false ユーザー行動収集を有効にするかどうか。
traceType Enum いいえ ddtrace 分散型トレーシングのツールタイプ。設定しない場合のデフォルトは ddtrace。現在は ddtrace、zipkin、skywalking_v3、jaeger、zipkin_single_header、w3c_traceparent の 6 種のデータタイプをサポート。
❗️
1. opentelemetry は zipkin_single_header、w3c_traceparent、zipkin、jaeger の 4 種をサポート。
2. 対応するタイプの traceType を設定するには、対応する API サービスで異なる Access-Control-Allow-Headers を設定する必要があります。詳細は APM と RUM の連携 を参照してください。
traceId128Bit Boolean いいえ false 128 ビットの traceID を生成するかどうか。traceType に対応。現在は zipkin、jaeger をサポート。
allowedTracingUrls Array いいえ [] Trace Header の注入を許可する完全なリクエスト URL のマッチングリスト。文字列は URL プレフィックスでマッチング。正規表現と関数は完全な URL を受け取ります。オブジェクトは { match, traceType } を使用して、単一ルールに伝播タイプを指定します。バージョン要件は 2.2.22 以上。
allowedTracingOrigins Array いいえ 非推奨の互換設定。リクエスト Origin のみでマッチング。新規プロジェクトでは allowedTracingUrls を使用してください。両方が設定されている場合、allowedTracingUrls が優先されます。
allowTraceHeaderWithoutSession Boolean いいえ false 現在の Session がサンプリングにヒットしない場合でも、allowedTracingUrls にヒットしたリクエストに Trace Header を注入するかどうか。有効にしても、その Session の RUM データが強制的にサンプリングまたはアップロードされることはありません。
isIntakeUrl Function いいえ function(url) {return false} リクエストリソース URL に基づいて、対応するリソースデータを収集するかどうかをカスタムメソッドで判断します。デフォルトではすべて収集。戻り値:false は収集する、true は収集しない。
❗️
1. このパラメータメソッドの戻り値は Boolean 型である必要があります。そうでない場合は無効なパラメータとみなされます。
2. バージョン要件は 2.1.13 以上。

Trace Header URL マッチング

allowedTracingUrls は完全なリクエスト URL を使用してマッチングします。String は URL プレフィックスでマッチング、RegExp と Function は完全な URL を受け取ります。単一ルールで異なる伝播タイプが必要な場合は、{ match, traceType } を使用できます。

allowedTracingUrls: [
  'https://api.example.com/v1/',
  /https:\/\/.*\.my-api-domain\.com\/v2\//,
  function (url) {
    return url.indexOf('https://internal.example.com/') === 0
  },
  { match: 'https://otel.example.com/', traceType: 'w3c_traceparent' },
]

リモート設定で配信する場合、JSON で表現可能な String または { match: String, traceType } のみ使用できます。RegExp と Function は配信できません。allowedTracingOrigins は古い設定との互換性のためだけに使用されます。両方のパラメータが存在する場合、SDK は allowedTracingUrls のみを使用します。

ページパフォーマンスと白画面候補

@cloudcare/rum-uniapp 2.2.21 以上では、ページライフサイクル、プラットフォームの Performance entry、setData の所要時間を収集します。すべての所要時間フィールドは Guance にアップロードされる際にナノ秒(ns)に統一されます。

SDK はスクリーンショットを収集せず、スケルトン画面後のビジネスコンテンツが利用可能かどうかを確認することもできません。そのため、指標はパフォーマンス異常や白画面候補の識別にのみ使用でき、単独でページの視覚的な白画面を証明することはできません。

プラットフォーム能力とライフサイクル

フィールド 型 説明
performance_supported Boolean 現在のプラットフォームの Performance Observer が正常にサブスクライブされたかどうか
first_render_supported Boolean 現在のプラットフォームに SDK が利用可能な初回レンダリングシグナルが存在するかどうか
view_start_reason String page_load、page_show、または session_renewal
view_end_reason String onHide、onUnload、または session_renewal
ready_reached Boolean 現在のページライフサイクルが onReady に到達したかどうか
first_render_reached Boolean 現在のページがプラットフォームの初回レンダリングシグナルを受信したかどうか
ended_before_ready Boolean page_load View の終了時にまだ onReady に到達していないかどうか
ended_before_render Boolean 初回レンダリングシグナルがサポートされている場合、page_load View が初回レンダリング前に終了したかどうか
view_is_active Boolean View がまだアクティブ状態かどうか

ended_before_render は first_render_supported=true の場合にのみ統計的な意味を持ちます。Session の更新は RUM View を分割するだけで、ページの再読み込みを意味しないため、ページの早期終了の結論は生成されません。

レンダリングと setData の指標

フィールド 説明
loading_time ページの navigation とライフサイクルで観測された最大読み込み所要時間
page_ready_time View 開始から onReady までの所要時間
first_render_time WeChat の firstRender.duration;抖音の場合は first-paint - navigationStart
page_fp 現在のページの navigationStart からの FP の所要時間
page_fcp 現在のページの navigationStart からの FCP の所要時間
page_lcp 現在のページの最新の LCP の navigationStart からの所要時間
view_setdata_count 有効な setData 更新のサンプル数
view_setdata_duration すべての有効な更新の累計所要時間
view_setdata_max_duration 単一更新の最大所要時間
view_setdata_pending_duration キューに入ってから更新開始までの累計待機所要時間
view_setdata_update_duration 更新開始から終了までの累計実行所要時間
view_setdata_merged_count プラットフォームによってマージ処理された更新回数

SDK は、route、pageId、最新の navigationStart に基づいてプラットフォーム entry をページインスタンスに割り当てます。これにより、高速ページ切り替え、同一ルートの再構築、遅延コールバックによるページ間の汚染を防ぎます。非表示ページ、アンロードされたページ、または古いコンポーネントの遅延 setData コールバックは現在の View に計上されません。

推奨統計口径

白画面候補の統計では、まず view_start_reason=page_load、performance_supported=true、first_render_supported=true をフィルタリングし、次に以下の指標を観察します。

問題 推奨条件 説明
初回レンダリングが遅い first_render_time がビジネス閾値を超える P75、P95、および閾値超過の割合を統計
終了前に初回レンダリングなし ended_before_render=true 信頼度の高い白画面候補。ただし、ユーザーが素早く戻る操作をした場合もヒットする可能性あり
長時間 Ready にならない page_ready_time がビジネス閾値を超える ライフサイクルまたは初期化のブロッキングを示す。視覚的な白画面と同等ではない
終了前に Ready にならない ended_before_ready=true view_end_reason と滞在時間を組み合わせて、素早い離脱を除外
FCP/LCP が遅い page_fcp または page_lcp がビジネス閾値を超える コンテンツの出現および主要コンテンツの安定速度を観察するために使用

起動段階では、action_type=launch_attempt もアップロードされ、ネイティブの launch entry のカバレッジを計算するために使用されます。プラットフォームの Performance entry がないことは、所要時間がゼロまたは白画面の証拠にはなりません。

プラットフォームのパフォーマンス口径については、WeChat ミニプログラム PerformanceEntry、WeChat ミニプログラム setData パフォーマンス、抖音ミニプログラム createObserver、抖音ミニプログラム PerformanceEntry を参照してください。

注意:

  1. datakitOrigin に対応する DataKit のドメインは、ミニアプリ管理画面で request ホワイトリストに追加する必要があります。
  2. 現在、各プラットフォームのミニアプリでは、パフォーマンスデータ API の公開が完全に統一されていないため、一部のパフォーマンスデータ(例:ミニアプリ起動、ミニアプリパッケージダウンロード、スクリプト注入など)は、WeChat プラットフォーム以外では欠落する可能性があります。
  3. 現在、各プラットフォームのミニアプリのリクエストリソース API uni.request、uni.downloadFile の戻りデータ内の profile フィールドは、WeChat ミニプログラムの iOS システムでのみサポートされていません。そのため、収集されるリソース情報のうち timing 関連のデータが完全に収集されない可能性があります。現時点では解決策はありません:request、downloadFile、API サポート状況。
  4. trackInteractions ユーザー行動収集を有効にすると、WeChat ミニプログラムの制限により、コントロールのコンテンツや構造データを収集できません。そのため、ミニプログラム SDK では宣言的プログラミングを採用しています。テンプレート内で data-name 属性を設定することで、インタラクション要素に名前を付けることができ、後続の統計で操作記録を特定しやすくなります。例:
 <button bindtap="bindSetData" data-name="setData">setData</button>

フィードバック

このページは役に立ちましたか?