こんにちは!日々のシステムの保守運用、本当にお疲れ様です。
突然ですが、こんな経験はありませんか?
「CPU使用率は正常、エラーログも出ていない。なのに、なぜかビジネス部門から『最近、売上が落ちている』『ユーザーが決済画面で離脱している気がする』と言われる……」
エンジニアとしては「いや、システムは正常に稼働していますけど?」と言いたくなりますよね。でも、ビジネスの現場で起きている本当の課題は、サーバーのCPU負荷ではなく「ユーザーの行動」の中に隠れていることが多いのです。
今回お話しする「Datadog App Analytics」は、まさにその溝を埋めるための強力な武器です。
これをマスターすれば、「システムの裏側で何が起きているか(APM)」と「ユーザーがどう動いたか(RUM / ビジネス指標)」を完全に一本の線で繋げられるようになります。開発チームとビジネス部門が同じ言語で語り合える、最高にエキサイティングな世界へご案内しましょう!
—
1. そもそも「App Analytics」とは何をするものなのか?
従来の監視ツールは、「サーバーが落ちていないか」「レスポンスタイムが遅くないインフラストラクチャか」といった「モノ(システム)の健康状態」を見るのがメインでした。
一方、DatadogのRUM(Real User Monitoring)とApp Analyticsを組み合わせると、「ヒト(ユーザー)がどうアプリを使っているか」をイベント単位で完全にキャプチャできるようになります。
- 「どのプランを選んだユーザーが、一番エラーを踏んでいるか?」
- 「決済ボタンを押してからローディングが終わるまでの遅延が、カート放棄率にどう影響しているか?」
これらを感覚ではなく、数百万件のログデータから「ファクト(事実)」として炙り出すのがApp Analyticsの役割です。システム監視の延長線上で、そのまま「グロースハック(事業成長)」の分析ができるようになるイメージですね。
—
2. 【基礎セットアップ】データを流し込むための第一歩
それでは、実際にDatadogでビジネス指標とアプリケーション利用状況をクロス分析するための基礎を整えていきましょう。今回はモダンなWebアプリケーション(ReactやNext.jsなどのフロントエンド)を想定して解説します。
ステップ①: RUM SDKの初期化と「ユーザーコンテキスト」の付与
ただ画面のアクセスログを取るだけでは、App Analyticsの真価は発揮されません。「誰が(User ID)」、「どんなプランで(Subscription Type)」そのアクションを起こしたのかというメタデータ(コンテキスト)を紐付けるのが最初の肝です。
以下の初期化コードを見てください。
import { datadogRum } from ‘@datadog/browser-rum’;
datadogRum.init({
applicationId: ‘YOUR_DATADOG_APPLICATION_ID’,
clientToken: ‘YOUR_DATADOG_CLIENT_TOKEN’,
site: ‘datadoghq.com’,
service: ‘my-ec-app’,
env: ‘production’,
// ページビューやアクションを自動追跡
trackInteractions: true,
trackResources: true,
trackLongTasks: true,
defaultPrivacyLevel: ‘mask-user-input’, // プライバシーに配慮して入力値はマスク
});
/
- 【超重要】ログイン成功時にユーザーコンテキストをセットする
- これにより、技術ログとビジネスユーザーが完全に紐づきます
/
export function identifyUser(user) {
datadogRum.setUser({
id: user.id, // データベースの内部ID
email: user.email, // 連絡先
plan: user.subscription, // 「free」「gold」「enterprise」などのビジネス指標
role: user.role
});
}
この `datadogRum.setUser` を仕込むだけで、後ほどDatadog側で「Freeプランのユーザーだけに絞ってエラー率を見る」といった神業的なフィルタリングができるようになります。
—
3. 【HelloWorld的動作確認】カスタムアクションでKPIを計測する
セットアップが正しく動いているか、最小限のコードで動作確認(HelloWorld)をしてみましょう。
ここでは、ユーザーが「購入ボタン」を押したというビジネスイベントを、App Analytics向けに送信してみます。
実装コード
import { datadogRum } from ‘@datadog/browser-rum’;
function handleCheckoutClick(cartTotalAmount, planType) {
// カスタムアクションをDatadog RUMに送信
datadogRum.addAction(‘checkout_button_clicked’, {
cart_total_usd: cartTotalAmount, // ビジネス上の価値(金額)
selected_plan: planType, // どのプランか
step: ‘payment_initiation’
});
console.log(‘Checkout event sent to Datadog App Analytics!’);
}
Datadog画面での確認手順(魔法の瞬間)
1. アプリ上で上記の `handleCheckoutClick` が発火する操作を実際に行います(自分の手でポチポチ押してみる)。
2. Datadogのメニューから [UX] > [App Analytics] を開きます。
3. 検索窓(Queryバー)に `@action.name:”checkout_button_clicked”` と入力します。
おめでとうございます!あなたが今ブラウザでクリックしたイベントが、ユーザーのプラン情報や地理的データ、さらにはその時のブラウザのJavaScriptエラーの有無と一緒にタイムライン形式で画面に表示されているはずです。これがクロス分析の土台となります。
—
4. 開発とビジネスを繋ぐ「究極のクロス分析ダッシュボード」の作り方
基礎データが集まるようになったら、次は開発チームとビジネス部門が毎週の定例ミーティングでそのまま使える「共通ダッシュボード」を作りましょう。
おすすめのウィジェット構成は以下の3つです。
1. 「遅延(パフォーマンス)」と「コンバージョン(ビジネス)」の相関グラフ
- グラフの種類: 時系列 (Timeseries)
- クエリA: 平均APIレスポンスタイム (APMのメトリクス)
- クエリB: 決済完了アクションのカウント (App Analytics)
- 意図: 「ページの読み込みが2秒を超えた瞬間から、決済完了数が急減している」という因果関係を視覚化し、ビジネス部門を納得させる説得力を生みます。
2. どのプランのユーザーが最もエラーを踏んでいるか?
- グラフの種類: トップリスト (Top List)
- グループ化: `@user.plan` (セットアップ時に仕込んだプラン情報)
- メトリクス: 発生したエラー数 / アクティブユーザー数
- 意図: 「無料プランより、高額なエンタープライズプランのユーザーの方が特定の機能でエラーを踏んでいる!」といったクリティカルな不具合を最優先で発見できます。
—
最後に:エンジニアの武器を「会社の武器」へ
いかがでしたでしょうか?
Datadog App Analyticsを使いこなせるようになると、私たちは単に「エラーを直す人」から、「データに基づいてプロダクトの価値を最大化するパートナー」へと進化できます。
「システムは動いているのに、なぜか数字が伸びない」というモヤモヤを、ファクトデータで鮮やかに解決していく快感は、一度味わうと病みつきになりますよ。
これをマスターすれば、あなたの毎日のログ分析や障害調査は劇的に楽になり、そして何より——ビジネスサイドからのあなたを見る目が確実に変わります。
ぜひ、今日のデプロイから試してみてくださいね!