はじめ
みなさん、こんにちはM&Aクラウドの尾村です。私は一応、データエンジニアというのを名乗っているのですが、これまでCustomer Data Platformと呼ばれる製品(有名どころは、Treasure DataやKARTE)を扱ってきませんでした(そのような環境にいませんでした)。そこで今回はOSSでセルフホスト版もあるRudderStackという製品を試してみようと思います。
環境について
今回は簡単のために、無料で利用できるRudderStack Cloudを利用しました。試す上で、自社のサービスのログデータが必要になります。もちろん、今回はお試しのため、自社のアプリなんかは利用できません。そこで今回は簡単なサンプルアプリを使います。簡単に用意できる環境としてdockersamplesのvoting-appを使いました。
RudderStack cloudへのサインイン
下記のようなサインイン画面です。Googleアカウントでサインインできるのはいいですね。
サインインすると、下記のような画面になります。
SDKのインストール
公式ドキュメントのQuickstartにあるようにjavascriptのSDKをインストールする必要があります。
add sourceを押して、JavaScriptを選択します。
Name This Sourceと出てくるので適当な名前を入れましょう。
コードのスニペットが表示されるので、コピーしましょう。
result/viewsのindex.htmlファイルのheadにスニペットを貼りましょう。
page呼び出しの埋め込み
下記のスニペットをindex.htmlのheadに埋め込みました。
<script type="text/javascript">
!function(){var e=window.rudderanalytics=window.rudderanalytics||[];e.methods=["load","page","track","identify","alias","group","ready","reset","getAnonymousId","setAnonymousId","getUserId","getUserTraits","getGroupId","getGroupTraits","startSession","endSession"],e.factory=function(t){return function(){e.push([t].concat(Array.prototype.slice.call(arguments)))}};for(var t=0;t<e.methods.length;t++){var r=e.methods[t];e[r]=e.factory(r)}e.loadJS=function(e,t){var r=document.createElement("script");r.type="text/javascript",r.async=!0,r.src="https://cdn.rudderlabs.com/v1.1/rudder-analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(r,a)},e.loadJS(),
e.load("API_KEY","DATA_PLANE_URL"),
e.page()}();
</script>
そのあと、http://localhost:5000/ にアクセスしたあと、RudderStackのEventsページにアクセスすると、下記のようにイベントを受け取っている確認できました。
live events
live Eventsの機能を使うとリアルタイムに送信されたデータを確認することができます。今回は、ローカルホストからアクセスしているため、全然データがありませんが、特に面白く見えませんが、referrerやscreenの情報を得得られることがわかります。
Data Extractの利用
CDPのレベルを上げたいと考えると、さまざまなデータソースからデータを取れないといけません。そこで、ETLの機能を試してみようと思いましたが、下記のようにfreeのプランだとSalesforceやHubSpot、その他のシステムにアクセスしようとするとupgradeを求められたので諦めました。
BigQueryへの書き込み
データを読み込めたので、今度はデータの書き込みを行います。サイドバーのcollectからDestinationsを選択し、New DestinationからBigQueryを選択します。Name Destinationに名前を選択し、データの取得元として、JavaScriptTestを選択します。次のページで必要項目を入力します。BigQueryに入れる前の段階でGCSを利用するため、連携用のサービスアカウントは、GCSとBigQueryの2つのロールを追加してあげる必要があります。
接続が成功すると、下記のように画面で接続できていることが確認できました。
データの変換
サイドバーのCollectにあるtransformationからデータの変換を定義できます。事前に定義されたものがあるので、今回はAllowlistを試してみました。allowlistは、eventがpageであるもののみを許可しています。Test Payloadも事前に定義されているものがあるので、importしました。(scriptの方はともかく、Payloadはどうしても複雑になるので、これはありがたいですね。)save transformationsをして保存しました。transformationsはfreeのプランだと、5つまで定義することが可能です。
/***
* This transformation allows events to reach a downstream destination only if a specific property
* contains certain values, e.g., allow only Product Added, or Order Completed events, or send
* certain event types to a particular destination, or only send events that do not have
* tracking plan to a specific destination
***/
export function transformEvent(event, metadata) {
const property = event.event; // Edit event name
const allowlist = ["page"]; // Edit allowlist contents
if (!property || !allowlist.includes(property)) return;
return event;
}
この変換を先ほどのBigQueryのDestinationに追加することができます。
Allowlistを選び、chooseを押せば追加できます。
最後に
今回はOSSのRudderStackを試してみて、CDPに入門してみました。今までCDPを使ったことがなかったため、CDPに対してイメージがわかなかったのですが、今回入門することで、ある程度、イメージが湧いてよかったかなと思います。今回利用したものは、free版であるためにどうしても制限がありましたが、うまく使えれば強力なツールになりそうだとも感じたので、中長期的に弊社のデータ基盤としてCDPがどのような役割を持てそうかを考えていければと思いました。