会員ログの活用法 第24回
月次報告は、会員数の累計より「利用した会員」「申し込んだ会員」を並べるほうが、動きが見える。
会員サイトの月次報告では、会員数の累計と、ページビューが並ぶことが多くあります。会員数は毎月増えていくので、報告は順調に見えます。
ただ、会員数の累計は、来なくなった会員も含めて増え続けます。ページビューは、会員でない訪問者の分も混ざります。その月に会員が実際にどれだけ動いたのかは、この二つからは分かりません。
会員IDの付いたアクセスログと名簿、フォームの送信記録を月ごとにまとめると、利用した会員の数、会員の閲覧数、新しく登録した会員、申し込んだ会員を一つの表に並べられます。
月,利用した会員(人),申し込んだ会員(人) 2026-04,399,117 2026-05,424,98 2026-06,402,124 2026-07,454,99 2026-08,471,141 2026-09,485,103
このグラフの数え方
架空のサンプルデータで集計した例です。
ここに挙げた使い方は一例です。サンプルの数字は架空のもので、実際の結果や施策の効果を約束するものではありません。
ここから先は、システム担当者に渡してください。集計SQLで出た結果を、AIプロンプトと一緒にAIへ貼ると、上のようなグラフと読み取りが返ってきます。
select v.month,
v.visitors,
v.member_pv,
coalesce(r.new_members, 0) as new_members,
coalesce(f.applicants, 0) as applicants
from (
select to_char(accessed_at, 'YYYY-MM') as month,
count(distinct member_id) as visitors,
count(member_id) as member_pv
from access_log
where accessed_at >= '2026-04-01' and accessed_at < '2026-10-01' -- 期間。実際には集計する期間に差し替える
group by 1
) v
left join (
select to_char(registered_at, 'YYYY-MM') as month, count(*) as new_members
from member
group by 1
) r on r.month = v.month
left join (
select to_char(submitted_at, 'YYYY-MM') as month, count(distinct member_id) as applicants
from form_submission
group by 1
) f on f.month = v.month
order by v.month;次の表は、会員サイトの月ごとの集計です。
month=月、visitors=その月にサイトを利用した(ログインしてページを見た)会員数、member_pv=会員の閲覧数、new_members=新しく登録した会員数、applicants=申し込んだ会員数です。
個人を特定できる列は含めていません。
1. この表を、月次報告に貼れる見やすい表に整えてください。あわせて、月ごとに visitors と applicants を並べた棒グラフを、画像で描いてください。
2. 次の点を読み取って、3行程度で教えてください。
・利用した会員と申し込んだ会員は、それぞれどう動いているか
・二つの動きが食い違っている月はあるか
・会員数の累計だけを報告していると、何が見えなくなるか
(ここに集計結果を貼る)SQLとプロンプトは、準備編の汎用テーブルを前提にした例です。実際のテーブル名・列名に合わせて書き換えてください。動作や結果を保証するものではありません。
使う表: member(会員)/access_log(アクセスログ)/form_submission(フォーム送信) (表の形は準備編)
アクセスログ、名簿、フォームの送信記録が、会員IDでつながっていないと、この表は作れません。
それぞれの仕組みから別々に数字を集めると、「利用した会員」と「申し込んだ会員」が同じ数え方にならず、比べられないからです。
writeWiredでは、会員IDの付いたアクセスログとメール・フォームの記録が最初から同じ場所に揃っています。会員サイトCMSとしてのwriteWired