LoginSignup
1
0

オープンソースのCDP:RudderStackを試してみた

Last updated at Posted at 2023-11-27

はじめ

みなさん、こんにちはM&Aクラウドの尾村です。私は一応、データエンジニアというのを名乗っているのですが、これまでCustomer Data Platformと呼ばれる製品(有名どころは、Treasure DataやKARTE)を扱ってきませんでした(そのような環境にいませんでした)。そこで今回はOSSでセルフホスト版もあるRudderStackという製品を試してみようと思います。

環境について

今回は簡単のために、無料で利用できるRudderStack Cloudを利用しました。試す上で、自社のサービスのログデータが必要になります。もちろん、今回はお試しのため、自社のアプリなんかは利用できません。そこで今回は簡単なサンプルアプリを使います。簡単に用意できる環境としてdockersamplesのvoting-appを使いました。

RudderStack cloudへのサインイン

下記のようなサインイン画面です。Googleアカウントでサインインできるのはいいですね。
image.png
サインインすると、下記のような画面になります。
無題のプレゼンテーション.png

SDKのインストール

公式ドキュメントのQuickstartにあるようにjavascriptのSDKをインストールする必要があります。
add sourceを押して、JavaScriptを選択します。
image.png
Name This Sourceと出てくるので適当な名前を入れましょう。
スクリーンショット 2023-11-26 21.19.49.png
コードのスニペットが表示されるので、コピーしましょう。
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ページにアクセスすると、下記のようにイベントを受け取っている確認できました。

image.png

live events

live Eventsの機能を使うとリアルタイムに送信されたデータを確認することができます。今回は、ローカルホストからアクセスしているため、全然データがありませんが、特に面白く見えませんが、referrerやscreenの情報を得得られることがわかります。

スクリーンショット 2023-11-26 22.24.25.png

Data Extractの利用

CDPのレベルを上げたいと考えると、さまざまなデータソースからデータを取れないといけません。そこで、ETLの機能を試してみようと思いましたが、下記のようにfreeのプランだとSalesforceやHubSpot、その他のシステムにアクセスしようとするとupgradeを求められたので諦めました。
スクリーンショット 2023-11-26 22.30.43.png

BigQueryへの書き込み

データを読み込めたので、今度はデータの書き込みを行います。サイドバーのcollectからDestinationsを選択し、New DestinationからBigQueryを選択します。Name Destinationに名前を選択し、データの取得元として、JavaScriptTestを選択します。次のページで必要項目を入力します。BigQueryに入れる前の段階でGCSを利用するため、連携用のサービスアカウントは、GCSとBigQueryの2つのロールを追加してあげる必要があります。
接続が成功すると、下記のように画面で接続できていることが確認できました。
スクリーンショット 2023-11-26 23.12.58.png

データの変換

サイドバーのCollectにあるtransformationからデータの変換を定義できます。事前に定義されたものがあるので、今回はAllowlistを試してみました。allowlistは、eventがpageであるもののみを許可しています。Test Payloadも事前に定義されているものがあるので、importしました。(scriptの方はともかく、Payloadはどうしても複雑になるので、これはありがたいですね。)save transformationsをして保存しました。transformationsはfreeのプランだと、5つまで定義することが可能です。

スクリーンショット 2023-11-26 22.44.12.png

/***
 * 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に追加することができます。
スクリーンショット 2023-11-26 23.15.02.png
Allowlistを選び、chooseを押せば追加できます。
image.png

image.png

最後に

今回はOSSのRudderStackを試してみて、CDPに入門してみました。今までCDPを使ったことがなかったため、CDPに対してイメージがわかなかったのですが、今回入門することで、ある程度、イメージが湧いてよかったかなと思います。今回利用したものは、free版であるためにどうしても制限がありましたが、うまく使えれば強力なツールになりそうだとも感じたので、中長期的に弊社のデータ基盤としてCDPがどのような役割を持てそうかを考えていければと思いました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0