We’ve migrated our documentation to a new site, which means some URLs have changed.
Audience

ユーザートラッキングとプライバシー

ユーザプロファイル生成に際して、Pianoはデータ収集に関する法律および業界標準を遵守し、個人を特定する情報は収集していません。Piano Insightにおけるプライバシーポリシーも併せてご参照ください。

免責条項

以下は生成されるCookieとローカルストレージに関する情報です。cx.jsのパブリックインターフェースの一部として考慮されません。これらは予告なしにいつでも動作やフォーマットを変更することがあります。

識別子

同一のユーザのサイト訪問を正確にカウントしたり、ユーザプロファイルを生成するために、Piano Insight は情報を格納する方法として、 cookie や ローカルストレージ を利用します。Pianoが使用するすべてのCookieとローカルストレージにはすべてランダムな識別子やタイムスタンプのような何らかの状態で保持したり、セグメントのマッチングの場合にはユーザIDが関連するセグメントIDといった個人を特定できない情報のみを格納します。

サイト特定の2つの1st パーティークッキーがサイトのドメインにセットされ、サイトのユーザをセッション内および複数セッションに渡って特定します。これらのクッキーはcX_S, cX_Pという名称が付いています。対応するローカルストレージのエントリー、_cX_S, _cX_Pもそれぞれセットされます。この識別子にはクライアント側、サーバ側のどちらからでもアクセスできます。クライアント側では、cX_P は cx.getUserId() で読み出すことができます。サーバサイドでは、標準的なメカニズム、例えば cX.getCookie("cX_P")で読み出すことができます。

さらに、クライアントがサポートし許可していれば、2つのサードパーティークッキーがセットされ、Cxenseネットワーク内のすべてのサイトを跨いだセッションからユーザプロファイルの生成が可能です。これらのクッキーは "gcks" や "gckp"と呼ばれます。

cX_Tクッキーが稀なケースで使用されることもあります。これは一時的にセットされすぐに消去されるものです。このクッキーはランダムな値を保持し、サイトのトップレベルドメインを見つけるために使用されます。例えば、"http://www.ibm.com" のトップレベルドメインが "http://ibm.com" であることや、"http://bbc.co.uk" が "http://www.bbc.co.uk" のトップドメインであることを特定するために使用しています。

その他のサービス個別のクッキー

上記のクッキーはPiano(旧Cxense製品)のサービスを利用する際には必ずセットされます。特定のサービスや機能を使用する場合にはさらに追加のクッキーがセットされる場合もあります:

DMPセグメントを使ってサードパーティーシステムとともに広告のターゲティングを行う場合、ユーザが属しているセグメントIDが1つのローカルストレージを使ってクライアント側でキャッシュされます:

  • _cX_segmentIds (セグメントIDのリスト)

名称

種類

保持期間

内容

ドメイン

cX_S

Cookie

セッション

サイト内の特定ユーザーセッション(単一セッション)

First

cX_P

Cookie

365日

サイト内の特定ユーザーセッション(セッション越え)

First

cX_G

Cookie

365日

異なるIDを一つにマッピングするグローバルID

First

gcks

Cookie

セッション

Cxenseネットワーク内の全てのサイトにおいて、セッション情報を構築する用途

Third

gckp

Cookie

365日

Cxenseネットワーク内の全てのサイトにおいて、ユーザープロファイル情報を構築する用途

Third

cX_cons

localStorage


同意 を記録するため

First

_cX_segmentInfo

localStorage


サードパーティシステムで、DMPセグメントを用いて広告ターゲティングをする際に利用
セグメントIDのリスト

First

cX_T

Cookie

テンポラリ

一時的にだけセットされ、すぐに削除される
このクッキーはランダムな値をもち、そのサイトのトップレベルドメインを見つけるために使用

First

_cX_S

localStorage


ファーストパーティクッキーの "cX_S" と一致

_cX_P

localStorage


ファーストパーティクッキーの "cX_P" と一致

_cX_atfr

localStorage

-

次のページビューに送られる、ページビューの "after-the-fact" (事後)の情報を格納します。ウィンドウ サイズや widget visibility、ユーザーのページ滞在時間(active time)などの情報が含まれます。

First

cX_lastP1Time

localStorage


Safari 以外のブラウザでは週に1度 3rdパーティ IDを記録します。これは次回以降にロードする必要があります。

First

cX_lastLocalCstTime

SessionStorage

テンポラリ

Safari の場合、週に1度 3rd パーティIDを記録します。これは次回以降にロードする必要があります。

First

_cX_SA

SessionStorage

テンポラリ

セッションアノテーション用。セッション アノテーションについてはこちらを参照ください。

First

cX_lst

Local Storage


クロスサイトトラッキング用に 3rdパーティトークンを記録します。

Third

cx_partner

SessionStorage

テンポラリ

各種連携先パートナーごとに <partner>=<# of hits> の形式で、パートナーごとに実行された Cookieシンク の数のログを保持します。

First

_cX_expires

LocalStorage


ローカルストレージを期限切れにすることを目的としています。デフォルトではローカルストレージの有効期限はありません。ローカルストレージのトークンは Cookie の有効期限と一致します。

First

cstp

Cookie

Temporary

広告パートナーの Cookieシンク のために使用されます。オプションであり、すぐに削除されます。

First

cX_LSS

Cookie

365 days

セッションの開始時間を追跡するためのオプションのツールです。

First

cX_LSP

Cookie

Temporary

前回のセッション時間を記録します(cX_LSS と同様)。

First


オプトアウト

GDPR用途のオプトアウトの場合はこちらのページをご参照ください: GDPR と cx.js

オプトアウトページの作成

ウェブサイトに訪れたユーザーがPiano Insight(DMP、Content、CCE)でのトラッキングをオプトアウト出来るようにするには、各サイトにてオプトアウトページをご用意ください。

従来は http://cxense.com のウェブサイトに設置したオプトアウトページを直接ご利用いただいていましたが、これは3rdパーティークッキーに依存しておりました。3rdパーティークッキーはその利用制限が厳しくなってきたためお客様自身のサイトにオプトアウトページを設置していただくことが必要となりました。


オプトアウトページにはオプトアウトボタン(またはリンク)があり、それをクリックすることにより "cx_optOut=true" をブラウザのローカルストレージに書き込みます。これを実装した最小限のサンプルコードを示します:

<html>
  <head>
  </head>
  <body>
    <script type="text/javascript">
      function hasLocalStorage() {
        try { return typeof window.localStorage === 'object' && typeof window.localStorage.getItem === 'function'; } catch (e) { return false; }
      }
      function getOptOutStatus(key) {
        var status = false;
        if (hasLocalStorage()) {
          var optedOut = window.localStorage.getItem(key);
          if (optedOut && optedOut === 'true') {
            status = true;
          }
        }
        return status;
      }
      var currentStatusLabel = "Your current status is: ";
      var currentStatusOpted = "Opted ";
      var currentStatusOptedIn = "in";
      var currentStatusOptedOut = "out";
      var currentStatusOpt = "Opt ";
      var currentStatusOptIn = "in";
      var currentStatusOptOut = "out";
      var cxOptOutKey = 'cx_optOut';
      // Read the opt-out status from the local storage
      var optOutStatus = getOptOutStatus(cxOptOutKey);
      // Update UI to reflect current state
      document.write(currentStatusLabel + currentStatusOpted + (optOutStatus ? currentStatusOptedOut : currentStatusOptedIn) + '<br />\n');
      document.write('<button onclick="onButtonClick();">' + currentStatusOpt + (optOutStatus ? currentStatusOptIn : currentStatusOptOut) + '<br /></button>\n');
      function onButtonClick() {
        if (hasLocalStorage()) {
          if (!optOutStatus)
            localStorage.setItem(cxOptOutKey, 'true');
          else
            localStorage.removeItem(cxOptOutKey);
        }
        location.reload();
      }
    </script>
  </body>
</html>

Cxenseスクリプトの変更

上記の実装によってローカルストレージに書き込まれたオプトアウトステータスにしたがうためには、サイト上のCxenseスクリプトに下記のような変更が必要です。この変更を加えることにより、オプトアウトしたユーザーのページビューイベントは匿名化されて送信されます。

以下の変更についてサイト上に弊社タグマネでCxenseスクリプトを設置されているお客様の場合、弊社側での対応が別途必要となりますのでサポート(support@piano.io)宛にお問い合わせ下さい。


cx.jsを非同期で読み込んでいる場合

<script type="text/javascript">
  function hasLocalStorage() {
    try { return typeof window.localStorage === 'object' && typeof window.localStorage.getItem === 'function'; } catch (e) { return false; }
  }
  function cx_getOptOutStatus(key) {
    var status = false;
    if (hasLocalStorage()) {
      var optedOut = window.localStorage.getItem(key);
      if (optedOut && optedOut === 'true') {
        status = true;
      }
    }
    return status;
  }

  var cX = cX || { options : { consent: cx_getOptOutStatus('cx_optOut') } };
  cX.callQueue = cX.callQueue || [];
  cX.callQueue.push(["setSiteId", '<siteId>']);
  cX.callQueue.push(["sendPageViewEvent"]);
</script>
<script type="text/javascript">
  (function(d,s,e,t){e=d.createElement(s);e.type='text/java'+s;e.async='async';
  e.src='http'+('https:'===location.protocol?'s://s':'://')+'cdn.cxense.com/cx.js';
  t=d.getElementsByTagName(s)[0];t.parentNode.insertBefore(e,t);})(document,'script');
</script>

cx.jsを同期で読み込んでいる場合

<script src="https://cdn.cxense.com/cx.js"></script>
<script type="text/javascript">
  function hasLocalStorage() {
    try { return typeof window.localStorage === 'object' && typeof window.localStorage.getItem === 'function'; } catch (e) { return false; }
  }
  function cx_getOptOutStatus(key) {
    var status = false;
    if (hasLocalStorage()) {
      var optedOut = window.localStorage.getItem(key);
      if (optedOut && optedOut === 'true') {
        status = true;
      }
    }
    return status;
  }

  if (cx_getOptOutStatus('cx_optOut')) { cX.requireConsent(); cX.clearIds(); }
  cX.setSiteId('<siteId>');
  cX.sendPageViewEvent();
</script>


オプトアウトが実際に行われているかどうかの確認

  1. 作成されたオプトアウトページ上でオプトアウトを選択した場合に、cx_optOut=true のローカルストレージが作成されているかどうか

  2. 1の確認ができた状態で、ページにアクセスした際にページビューイベントの送信(rep.gif)が発生していないかどうか、発生している場合には 匿名のページビュー として送信されているか
    ※ rep.gif のリクエストパラメータに con=y が含まれているかどうか、これによって個人を識別するページビューとしての送信が行われず、匿名のページビュー扱いになります
    ※お客様側の実装状況次第でページビューイベントが全く飛ばないケースと、匿名のページビューイベントの飛ぶケースのいずれかが起こりえます

をご確認ください。

Last updated: