「DAU は何を見ているか?」と聞かれて即答できる人は意外に少ない。ログイン? ページビュー 1 件? コア機能を 1 回でも使った人?── 定義が違うと、同じプロダクトで DAU が 2〜5 倍違うことが普通にあります。本記事では、 の分母を決める作法を共有します。
「アクティブ」の 3 段階
| 段階 | 条件 | 数字感 | 意味 |
|---|---|---|---|
| Level 1: ログイン | auth セッションが立った | 最大 | 緩すぎ:マーケが見せたい数字 |
| Level 2: ページ閲覧 | 1 ページでも開いた | 中 | 「来訪者」 |
| Level 3: コア機能利用 | プロダクトの North Star イベントを発火 | 最小 | 「本当に価値を得た人」 |
プロダクトの北極星指標(North Star)と一致するイベントを active に置く。Slack なら「メッセージ送信」、Spotify なら「30 秒以上再生」、メルカリなら「商品閲覧」。ログインだけを active にすると、放置ユーザーが含まれ、改善打ち手の効果が見えない。
業種別の推奨 active イベント
| 業種 | 推奨 active イベント | 理由 |
|---|---|---|
| メッセージ送信 / 投稿 | 「使った」の本質 | |
| B2B | コア機能の操作 1 回以上 | 閲覧だけは離脱予備軍 |
| EC | 商品閲覧(カート/購入は別 KPI) | 閲覧から購入率を別軸で測る |
| ゲーム | セッション 5 分以上 | 起動だけはノイズ |
| 動画配信 | 動画再生 30 秒以上 | 起動だけ→離脱を除外 |
| ニュース | 記事閲覧(30 秒滞在 or スクロール) | ホームだけ見て離脱を除外 |
実装:active_event テーブルにマテリアライズ
全 KPI 計算で「active の定義」を都度書くと、定義のブレや の重複が発生します。`active_event` を 1 つのマテリアライズドテーブルにし、全 KPI クエリはこれを参照するパターンを推奨。
-- models/marts/active_event.sql{{ config(materialized='incremental', unique_key='id') }}
SELECT CONCAT(user_id, ':', DATE(event_timestamp)) AS id, user_id, DATE(event_timestamp) AS active_date, MIN(event_timestamp) AS first_active_at, COUNT(*) AS event_countFROM {{ ref('events') }}-- ↓ ここがプロダクト固有の active 定義WHERE event_name IN ('message_sent', 'post_created', 'reaction_added'){% if is_incremental() %} AND DATE(event_timestamp) >= (SELECT MAX(active_date) FROM {{ this }}) - 1{% endif %}GROUP BY user_id, DATE(event_timestamp)「定義変更」の取り扱い
「DAU が 2 倍になりました!」が実は active 定義を緩めただけ、というケース。定義変更時は過去データも遡って再計算し、ダッシュボードに「v2 (2026-Q3〜)」と注記。 EP.16 の Decision Log に「指標定義変更」を必ず残す。
ふくふくの進め方
「DAU の定義をチームで揃えたい」というご相談には、プロダクト分析(1 週間)→ active イベント候補の特定 → SQL 実装と全 KPI への展開 → ドキュメント化を 2〜3 週間で。「同じ指標が部署ごとに違う数字」状態を解消するだけで、議論の質が劇的に上がります。
次回予告
EP.04 は継続率と 分析。新規ユーザーの何 % が翌日 / 7 日後 / 30 日後に戻ってくるか、Cohort で割って見ることで打ち手の効果が見える話。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。