# Osano Cookie Consentを使用したJavaScriptでのWeb Tracking

ウェブサイトはcookieを使用してコンテンツと広告をパーソナライズし、ソーシャルメディア機能を強化し、サイトのトラフィックを監視します。Cookieにより、ウェブサイトはサイトの使用方法に関する情報をソーシャルメディア、広告、分析パートナーと共有できます。

ウェブサイトは、GDPRやCCPAなどのプライバシーおよびセキュリティ法に準拠するために、お客様の情報を使用する許可またはcookie consentを取得する必要があります。

Cookie Consentを使用すると、ウェブサイトでcookieを使用していることをユーザーに警告できます。Osanoは無料のJavaScript pluginを提供しています。

* [Osanoについて](#about-osano)
* [前提条件](#prerequisites)
* [Osanoの無料版のテスト](#testing-the-free-version-of-osano)
* [サンプルビュー](#sample-view)


## Osanoについて

Osanoは、顧客データを共有するすべてのvendorを管理するデータプライバシープラットフォームです。数分と1行のJavaScriptで、Osanoはウェブサイトがcomply GDPRやCCPAなどの法律に準拠するのに役立ちます。

幅広いレイアウトとカラースキームから選択できます。

![](/assets/image-20200611-141051.1f598e651444ee85b47976d2d720e0719693478d723347268765f094c61d5956.ad50cbca.png)

## 前提条件

[Osano wizardとconfiguratorをダウンロード](https://www.osano.com/cookieconsent/download/)します。または、[JavaScript API documentation](https://www.osano.com/cookieconsent/documentation/javascript-api/)を使用できます。

## Osanoの無料版のテスト

1. テスト用のサンプルランディングページHTMLファイルを定義します。
たとえば、以下のtest.mdコードを使用できます。
2. サンプルコードの以下のfieldを置き換えます:
  * `<TD_write_only_API_key>`
  * `<write_your_db_name>`
  * `<write_your_table_name>`



```html
<html>
  <head>
    <script>
    !function(t,e){if(void 0===e[t]){e[t]=function(){e[t].clients.push(this),this._init=[Array.prototype.slice.call(arguments)]},e[t].clients=[];for(var r=function(t){return function(){return this["_"+t]=this["_"+t]||[],this["_"+t].push(Array.prototype.slice.call(arguments)),this}},s=["addRecord","blockEvents","fetchServerCookie","fetchGlobalID","fetchUserSegments","resetUUID","ready","setSignedMode","setAnonymousMode","set","trackEvent","trackPageview","trackClicks","unblockEvents"],n=0;n<s.length;n++){var c=s[n];e[t].prototype[c]=r(c)}var o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src=("https:"===document.location.protocol?"https:":"http:")+"//cdn.treasuredata.com/sdk/2.5/td.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(o,a)}}("Treasure",this);

    // Configure an instance for your database
    var td = new Treasure({
      host: 'in.treasuredata.com',
      writeKey: '<TD_write_only_API_key>',
      database: '<write_your_db_name>',

      startInSignedMode: true
    });

    // Enable cross-domain tracking
    td.set('$global', 'td_global_id', 'td_global_id');

    // Track pageview information to a table
    td.trackPageview('<write_your_table_name>');
    </script>

    <!-- =======================================================
    Start https://cookieconsent.insites.com/ tag
    ======================================================= -->
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.css" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
    <script>
      window.addEventListener("load", function(){
        window.cookieconsent.initialise({
          "palette": {
          "popup": {
          "background": "#3c404d",
          "text": "#d6d6d6"
          },
          "button": {
          "background": "#8bed4f"
          }
        },
          "type": "opt-out",
          "revokable": true,
          onStatusChange: function(status) {
            this.hasConsented() ? td.setSignedMode() : td.setAnonymousMode();
          },
        })
      });
    </script>
    </head>
  </body>
</html>
```

1. 簡単なHTTPサーバーをセットアップします:
たとえばMacの場合:



```bash
sudo apachectl start
sudo cp test.md /Library/WebServer/Documents
# setup owner and permission same with other files in copy destination folder above
# sudo chown
# sudo chmod
```

以下のURLを使用してbrowserからアクセスしてみてください: [http://127.0.0.1/test.md](http://127.0.0.1/test.md)

または、このライブデモを参照できます: [https://treasure-data.github.io/js-examples/consensus-management/index.html](https://treasure-data.github.io/js-examples/consensus-management/index.html)

下部にバーが表示された空白のページが表示されます。Allow cookiesを選択しないでください。

![](/assets/screen_shot_2019-03-13_at_18.28.45.ed34df1f38e7b557e489b90bfbf7161a4e292df6e91cd2845493a3bfa8832eb6.ad50cbca.png)

1. ページを数回更新し、tracking情報が送信される宛先tableを確認します。


最大で数分後には、宛先tableでstreamingデータが表示され始めるはずです。SELECT TABLE statementを実行して確認できます。


```sql
select td_ip,td_client_id,td_global_id from <db name>.<tbl name>
```

![](/assets/screen_shot_2019-03-13_at_18.18.35.050e9f4360943cc3501eea0b94af96ca31e47f6bdbedfb4a98442b5a57d3245d.ad50cbca.png)

1. test.mdページでDeclineを選択します。
2. ページを更新します。
更新後、consent promptは表示されなくなります。


![](/assets/screen_shot_2019-03-13_at_18.28.45.ed34df1f38e7b557e489b90bfbf7161a4e292df6e91cd2845493a3bfa8832eb6.ad50cbca.png)

1. web trackingの宛先tableを再度確認します。
最大で数分後には、宛先tableで新しいstreamingデータが表示され始めるはずです。SELECT TABLE statementを実行して確認できます。



```sql
select td_ip,td_client_id,td_global_id from <db name>.<tbl name>
```

ご覧のとおり、td_ip、td_client_id、td_global_id columnがTDに送信されたstreamingデータから除外されています。

![](/assets/screen_shot_2019-03-13_at_18.21.49.95acf0d08ec7aa9dc7bf145888f3f1096245066fbd356463fb64f9aea013aca7.ad50cbca.png)

1. テストをクリーンアップするには、ローカルPCで実行されているHTTPサーバーを停止します。



```bash
sudo apachectl stop
```

1. test.mdファイルを削除します。



```bash
sudo rm -f Library/WebServer/Documents/test.md
```

## サンプルビュー

ユーザーが初めてwebページにアクセスすると、デフォルトで以下の情報が保存されたcookieに含まれます(td_ip、td_client_id、td_global_id):

![](/assets/image-20200619-193149.9c800ea1d15773b0e5d82f2b2e64402aa3a0ae7cd0b5a047cdcd6fd292469f6a.ad50cbca.png)

ユーザーがcookie consent promptで**Decline**を選択した場合、以下のfield(td_ip、td_client_id、td_global_id)は、このユーザーによる後続のページ訪問では送信されません:

![](/assets/image-20200619-194719.dfa5a50849ce716bd83856dac95ebdc21c33e04d1a1a5db04a38f84962af8512.ad50cbca.png)