Webサイトやスマホアプリ上のユーザー行動データを収集・分析できる「Snowplow」を使ってみた

除雪機、除雪車
2022.08.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大阪オフィスの玉井です。

今回は、行動データプラットフォームのSnowplowを触ってみました。

Snowplowとは

ざっくりいうと、Webサイトやスマホアプリ上のユーザーの行動をトラッキングして、DWH等のサービスに格納できるサービスです。

(おそらく)SaaSとして提供されています。が、実はオープンソース版もあるため、こちらを自分でデプロイ〜運用する分には、無料で利用することが可能です。

ちなみに、2022年6月にシリーズBを達成しているので、なかなか勢いのあるサービスだと思われます。

やってみた

やってみた内容の概要

今回はとりあえず超基本的な部分だけ(トラッキングの設定→トラッキングしたデータをテキトーに照会)やってみます。

環境とか

Snowplowにはいくつかの種別がありますが、お試し向けの「Try Snowplow」を使います。色々制限がついてるSaaS版といった感じで、すぐにトライアルすることができます。期間は2週間です。

ちなみに、Snowplowの仕込み先として、Zendeskのサンドボックス環境のヘルプセンターを使用します。

サインアップしてログイン

SnowplowのHPからサインアップして、SnowplowのGUIにログインします。

SnowplowのコードをWebサイト側に仕込む

Snowplowに限らず、こういうトラッキング・Web計測系のサービスは、データを拾うために、Web側に何らかを仕込む必要があります。

ログインした画面に、これ見よがしに「Start tracking events」という見出しがあるので、そこを見ると、埋め込み先に合わせたトラッキングコードが簡単に確認できます。今回はスマホアプリではなく、Webサイトなので、Javascriptを選択します。

すると、「このコードをコピッて埋め込んどいて」って感じで、スニペットが表示されるので、これをそのままコピーして使用します。

今回はGoogleタグマネージャーを使います。普通にタグを新規作成して「カスタムHTML」で、上記のコードをそのまんま貼り付けるだけでいけます。

タグの公開まで一通り設定を終えて、問題がなければ、Snowplow側でステータスがOKになっています。

問題なく埋め込めているので、ここらへんで、データを発生させるため、Webサイトを適度にテストブラウジングしておきます。

トラッキング・収集したデータをSQLで参照する

お試し向けの「Try Snowplow」では、トラッキングしたデータは(Snowplow側がホストしている)Postgresに格納されます。そのPostgresへの接続情報も、トップページから簡単に確認できます。

ちなみに、Credentialsは、セキュリティの都合上、一度しか確認できないため、注意しましょう。

接続確認

一旦、コマンドで接続だけ簡易的に確認します。

> psql -h xxxxxxxxxxxxxxxxxxxx.try-snowplow.com -U xxxxxxxx -d snowplow
Password for user xxxxxxxxxx:
psql (14.5, server 13.8 (Debian 13.8-1.pgdg110+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

snowplow=>

特に問題なく接続できました。

スキーマ等の確認

もう少し全体像を把握したいので、SQLクライアントで接続してみます。

スキーマはこんな感じです。簡単に説明すると、atomicがローデータ、bad_rowsが正しく拾えなかったデータ、derivedがサマリー等のモデル(ユーザーが作る)になります。

試しに、atomic.eventsテーブルを見てみます。その名の通り、発生したイベントがデータとして格納されています。

サマリーテーブルの作成

テーブルをそのまま眺めても、ピンとこないため、わかりやすいサマリーテーブルを作ります。といっても、Snowplow側が公式でレシピを用意してくれているため、それをコピって実行するだけです。

SQLクライアントで実行した結果です。

そのサイトに来たユーザー数や、最後にイベントが発生した日時がわかるようになっていますね。

検討事項など

Google Analyticsとの違い

チュートリアルの内容はかなり簡易的なものなので、これだけ見ると、GAと同じように感じました(実際、比較記事もあったりする)。

しかし、今回少し触っただけの私でも、Snowplowには少なくとも下記の特徴があると思いました。

  • トラッキング対象や仕込み方が豊富
    • Webサイトだけでなく、スマホアプリも対象
    • フロントだけでなく、サーバーサイド側で仕込むことも可能
    • Webhookを用いて特定のSaaSのデータも取り込める
      • Sendgridなど
      • 何ならGoogle Analyticsもある(!)
  • データの格納先が選べる(後述)

データの格納先に各種DWH(+アルファ)がある

Snowplowの大きな特徴の1つだと思うのですが、トラッキングしたデータの格納先を色々選ぶことができます。

個人的に3大DWH(Redshift、Snowflake、BigQuery)があるのが大きいと思っています。ある程度データ分析基盤ができている組織の場合、ほとんどがこれらのDWHにデータを集約しているはずですので、そこにSnowplowでのトラッキングデータも加わると、既存のBIツールですぐに分析を始めることができますし、別データを用いた横断的なデータ分析のレベルも向上すると思います。

また、DWHに格納されたSnowplowデータ向けに、すでにdbt Packageが存在します。

高度な活用(分析)

公式のSQLレシピを見ていると、ECサイト向けだったり、特定のユーザーに絞った分析ができるみたいなのですが、今回の仕込み方だけでは現れないテーブルが使われていました。おそらく、もう少し高度な埋め込み方法があるようなので、どうにしかして試せないか検討中です。

おわりに

DWHへの連携を試したいのですが、Try Snowplowでは使えない(プランのアップグレードが必要)ので、どうしようか悩んでいます…。