本文へ移動

ホーム / PdM / 第4部 データと指標

第4部 データと指標・第9章

指標と分析

★★☆ 重要7トピック・面接 3問

判断の根拠になる数字を、正しく作って正しく読むための知識を押さえる。A/B テストは次の章で扱う。

別のページで開く →

DBラボを読み込んでいます…

9.1指標の定義

用語★★☆ 重要
ひとことで

「アクティブユーザー」などの定義が人によって違うと議論が噛み合わない。定義を文章と SQL で残す。

「アクティブユーザー」「継続率」などの指標は、人によって定義が違いがちです。定義がずれたままだと、同じ会議で違う数字を見て議論することになります。指標は文章と SQL の両方で定義を残し、誰が見ても同じ数字になるようにします。

定義が違うと、同じ日の DAU が 3 にも 1 にもなる3人のある日の行動ユーザー Aログイン・記事を開くユーザー Bログインだけユーザー C(社員)記事を開く定義1:ログインした人A・B・C → 3人定義2:記事を開いた人社内を除く:A → 1人
指標の定義のずれ:数え方と除外の違いで数字が変わる

定義の書き方(項目の例):

  • 名前と目的:何を判断するための数字か
  • 定義の文章:「その日に記事を1本以上開いたユーザーの数」
  • 含めないもの:社内アカウント・テスト・ボット・退会者
  • 期間と時刻:日の区切りは日本時間か UTC か、週は月曜始まりか
  • 数え方:人数(重複を除く)か回数か
  • データの出どころと SQL、責任者、変更した日と理由
-- DAU:その日(日本時間)に記事を1本以上開いたユーザー数。社内アカウントは除く
SELECT event_date_jst, COUNT(DISTINCT user_id) AS dau
FROM events
WHERE event_name = 'article_view'
  AND is_internal = FALSE
GROUP BY event_date_jst;
よくある定義のずれ例
「アクティブ」の意味ログインしただけか、何か操作したか
日付の境界UTC で集計していて、日本の朝9時で日付が変わっている
分母の違いCVR の分母が「訪問数」か「ユーザー数」か
重複スマホと PC で同じ人が2人に数えられる
遅れて届くデータアプリのログが翌日に届き、昨日の数字が後から増える
途中での定義変更ある日から数字が跳ねたが、実は集計方法が変わっていた

Data の「指標の定義をそろえる」

面接ではこう答える

「アクティブユーザー」のような指標は、ログインだけで数えるか、何か操作したかで数えるか、社内のアカウントを除くか、日付の区切りを日本時間にするかで、同じ日でも数字が大きく変わります。定義がずれたままだと、会議で違う数字を見て議論することになります。私は指標の定義を、目的・含めないもの・期間・数え方を書いた文章と、実際の SQL の両方で残し、変えたときは日付と理由も記録するようにしています。

ひとことで

大きな目標を、チームが動かせる数字に分解した木。North Star Metric は価値をいちばんよく表す1つの数字。

大きな目標を、チームが動かせる数字に分ける売上(月)訪問者数集客購入率体験1回の購入額品ぞろえ・価格各チームは自分の担当の数字を動かし、上の目標とのつながりを説明できるようにする
KPI ツリーの例

KPI ツリーは、売上のような大きな目標を、掛け算や足し算で分解して、チームが直接動かせる数字にしたものです。施策がどの数字を動かすのかがはっきりし、優先順位を比べやすくなります。North Star Metric は、ユーザーが価値を受け取ったことをいちばんよく表す1つの数字(例:音楽アプリなら「聴いた時間」)で、全員が向かう先として使います。

よくある失敗対策
動かしやすいが価値と関係ない数字を追う(ページビューなど)その数字が上がるとユーザーは本当にうれしいかを問う
1つの数字だけを追って副作用が出る悪化してはいけない数字(解約・問い合わせ)も並べて見る
ツリーの式が合っていない分解した数字を掛け直して元の数字に戻るか確かめる

面接ではこう答える

KPI ツリーは、売上のような大きな目標を、訪問者数・購入率・1回の購入額のように分解して、チームが直接動かせる数字にしたものです。施策がどの数字を動かすのかが明確になり、優先順位を比べやすくなります。North Star Metric は、ユーザーが価値を受け取ったことを表す1つの数字です。PdM としては、動かしやすいだけで価値と関係ない数字を追わないように、悪化してはいけない数字も一緒に見ています。

ひとことで

ダッシュボードの数字は、本番 DB と行動ログを DWH に写して集計したもの。写す・集計するところで遅れやずれが出る。

数字は本番から写され、集計されてから届く。途中で遅れる本番の DB注文・会員行動ログ画面・アプリDWH分析用の倉庫集計毎朝などダッシュボード写す・届くまでに数時間〜1日集計の時刻より前の分は出ない
データが届くまでの流れ

ダッシュボードの数字は、本番の DB(注文や会員の記録)と行動ログ(画面を開いた・ボタンを押した)を、分析用の倉庫である DWH(データウェアハウス)に写し、集計して作られます。分析のために本番の DB に重い問い合わせをすると、サービスが遅くなるので、分けているのです。

出どころ得意なこと注意
本番の DB注文・売上など、正確な記録分析で直接触らない。写しを使う
行動ログ画面の閲覧・操作・離脱取りこぼし・重複・遅れて届く分がある
DWH・集計表大量のデータの集計反映が翌日などになる。集計の定義を確認

「昨日の数字が今朝と昼で違う」のは、ログが遅れて届いたり、集計が途中だったりすることがよくある原因です。

面接ではこう答える

ダッシュボードの数字は、本番の DB にある注文などの記録と、画面の閲覧やボタン操作の行動ログを、DWH という分析用の倉庫に写して集計したものです。本番に重い分析をかけないように分けています。途中で写す・集計する工程があるので、反映が翌日になったり、ログが遅れて届いて昨日の数字が後から増えたりします。PdM としては、数字がどこから、どの時点の分なのかを確かめてから判断するようにしています。

新しい機能の効果を測るには、出す前にどんな行動ログ(イベント)を取るかを決め、仕様に入れておきます。出してから「測れていなかった」と気づくと、取り直すまで判断ができません。

{ "event": "search_submitted",
  "user_id": 123, "time": "2026-11-12T10:05:00+09:00",
  "props": { "keyword_length": 4, "result_count": 12, "screen": "top" } }
決めること例
イベントの名前「何が起きたか」を過去形で:search_submitted
いつ送るかボタンを押したときか、結果が出たときか
一緒に送る項目結果の件数・画面・端末。個人情報は入れない
確かめ方ステージングで送られているか、リリース直後に件数を見る

計測の仕様は、指標の定義(どの式で何を数えるか)から逆算して決めます。名前の付け方をチームでそろえておくと、後で集計しやすくなります。

9.5SQL で数字を見る

用語★☆☆ 発展
ひとことで

集計の SQL が読めると、ダッシュボードを待たずに自分で確かめられる。

集計の SQL が読めると、ダッシュボードを待たずに自分で数字を確かめられます。基本は3つです。SELECT で出す列を選び、WHERE で行を絞り、GROUP BY でまとめて数えます。

WHERE で絞り、GROUP BY でまとめ、SELECT で数える注文の表全部の行100万行WHERE先月の分だけ8万行GROUP BYプランごとに3グループ結果プラン・件数・売上3行数字がおかしいときは、1段ずつ行数を確かめる
集計の SQL が行を絞ってまとめる流れ
書き方意味例
SELECT出す列・計算COUNT(*)(行数)、SUM(amount)(合計)
WHERE行を絞る期間・社内アカウントを除く
GROUP BYまとめる単位日ごと・プランごと
JOIN別の表とつなぐ注文とユーザーを ID でつなぐ
-- 先月の、プランごとの注文数と売上
SELECT plan, COUNT(*) AS orders, SUM(amount) AS sales
FROM orders
WHERE ordered_at >= '2026-10-01' AND ordered_at < '2026-11-01'
GROUP BY plan;

ラボで実際に SQL を流して試せます。

JOIN で数字が膨らむ罠

面接ではこう答える

SQL は、データベースから数字を取り出すための言葉です。集計の基本は、WHERE で期間や対象の行を絞り、GROUP BY で日ごとやプランごとにまとめ、SELECT で件数や合計を出す、という3つです。PdM が読めると、ダッシュボードを待たずに自分で数字を確かめられ、指標の定義が SQL の上でどうなっているかも確認できます。

別のページで開く →

DBラボを読み込んでいます…

1つの注文に明細が3行あると、注文の金額が3回足されるorders(注文)注文1・金額 3,000円order_items(明細)注文1・ペン注文1・ノート・消しゴムJOIN した結果(3行)注文1・3,000円・ペン注文1・3,000円・ノート注文1・3,000円・消しゴムSUM(金額)9,000円(誤り)正しい売上3,000円
JOIN で行が増え、注文の金額が重複して足される例

注文(1行)と注文明細(商品ごとに複数行)を JOIN してから注文の金額を SUM すると、明細の行数だけ同じ金額が足され、売上が実際より大きくなります。ダッシュボードの売上が経理の数字より大きいときに、まず疑うところです。

確かめ方SQL の例
JOIN の前後で行数を比べるCOUNT(*) と COUNT(DISTINCT order_id)
金額は1行に1回だけ出る表で合計する注文の表だけで SUM(amount)
明細の金額を使う明細ごとの price * quantity を合計する

別のページで開く →

DBラボを読み込んでいます…

9.7継続率とコホート

用語★★☆ 重要
ひとことで

同じ時期に始めた人のまとまりごとに、使い続けている割合を並べて見る分析。全体の数では見えない離脱が分かる。

登録した月ごとに、何か月後まで使い続けているか登録月1か月後2か月後3か月後7月42%30%25%8月45%33%27%9月51%38%10月55%新しい月ほど 1か月後の継続率が高い → 9月の改善が効いているかもしれない
コホート表の例(数字は例)

コホートは「同じ時期に始めた人のまとまり」です。登録した月ごとに、何か月後まで使い続けているか(継続率)を並べると、改善が効いているか、どこで離れているかが分かります。全体の利用者数だけを見ると、新しく来た人の多さに隠れて、離れていく人に気づけません。

読み方分かること
横に読む同じ月に登録した人が、どのくらいの速さで離れるか
縦に読む新しい月ほど継続率が上がっていれば、体験の改善が効いている
斜めに読む同じ月に全員が下がっていれば、障害や季節など、その月の出来事

面接ではこう答える

コホート分析は、同じ月に登録した人のように、同じ時期に始めた人のまとまりごとに、何か月後まで使い続けているかを並べて見る方法です。全体の利用者数だけ見ると、新しく来た人の多さに隠れて、離れていく人に気づけません。横に読むと離れる速さ、縦に読むと改善が効いているか、同じ時期に全体が下がっていればその月の出来事が分かります。

この章のまとめ

🖨 まとめシート(印刷・PDF)
  • 指標の定義を文章と SQL で残し、KPI ツリーで目標とつなげる
  • 数字がどこ(本番 DB・ログ・DWH)から、どれくらい遅れて来るかを知る
  • SQL で自分で確かめ、JOIN で数字が膨らむ罠を避ける
  • 指標の定義:「アクティブユーザー」などの定義が人によって違うと議論が噛み合わない。定義を文章と SQL で残す。
  • KPI ツリーと North Star Metric:大きな目標を、チームが動かせる数字に分解した木。North Star Metric は価値をいちばんよく表す1つの数字。
  • 数字の出どころ(本番 DB・ログ・DWH):ダッシュボードの数字は、本番 DB と行動ログを DWH に写して集計したもの。写す・集計するところで遅れやずれが出る。
  • SQL で数字を見る:集計の SQL が読めると、ダッシュボードを待たずに自分で確かめられる。
  • 継続率とコホート:同じ時期に始めた人のまとまりごとに、使い続けている割合を並べて見る分析。全体の数では見えない離脱が分かる。

この章のクイズ

面接ではこう聞かれる

まず答えを見ずに声に出して答え、そのあと開いて比べる。

Q1「アクティブユーザー」の定義を決めるとき、何を決めますか?

模範回答

何を判断するための数字かという目的から決めます。そのうえで、「アクティブ」とする行動(ログインだけか、記事を開くなど価値のある行動か)、含めないもの(社内アカウント・テスト・ボット)、日の区切り(日本時間か UTC か)、数え方(人数か回数か、複数端末の重複をどう扱うか)を決めます。

決めた定義は文章と SQL の両方で残し、責任者と変更履歴も書きます。定義が人によって違うと、会議で違う数字を見て議論することになるので、ダッシュボードの数字がどの定義かを誰でも確かめられる状態にしておきます。

深掘りされたら

  • 途中で定義を変えたいときはどうしますか?

見られているポイント目的から定義を決め、除外・時刻・数え方まで明文化できるか

Q2ダッシュボードの売上が、経理の数字より大きく出ています。何を疑いますか?

模範回答

まず定義の違いを確かめます。キャンセルや返品を含めているか、税込か税抜か、日付の区切りが UTC か日本時間か、テストや社内の注文を除いているか、などです。

次に集計の誤りを疑います。よくあるのは、注文と注文明細を JOIN してから注文の金額を合計し、明細の行数だけ金額が重複して膨らむケースです。SQL を見て、JOIN の前後で行数が増えていないか、注文 ID の重複がないかを確かめます。原因が分かったら、定義を文章と SQL で残し、同じずれが起きないようにします。

深掘りされたら

  • 自分で SQL を書いて確かめることはありますか?

見られているポイント定義のずれと JOIN の重複を疑えるか

Q3新しい機能を出す前に、計測について何を決めておきますか?

模範回答

まず、その機能で何を判断したいかと、成功の指標を決めます。例えば検索の改善なら「検索から商品詳細に進んだ率」です。そこから逆算して、必要なイベント(検索した、結果を押した)と、一緒に送る項目(結果の件数・画面)を決め、仕様に入れます。

個人情報を入れないこと、ステージングで送られているかを確かめること、リリース直後に件数を見ることも決めておきます。出してから測れていなかったと気づくと、判断が数週間遅れるからです。

深掘りされたら

  • イベントの名前の付け方で気をつけることは?

見られているポイント指標から逆算した計測の設計