KiSAKU
技術系約5分で読めます

「送っていない」と言い切るために、同意まで読み込まないことにした

公開

クッキーの同意を取る仕組みを入れました。作りながら一番考えたのは、見た目や文言ではなく、「同意していない状態」をどう表すかでした。

この記事で扱うこと

止める対象の数え方、旗を立てる方式と読み込まない方式の違い、JavaScriptが無い環境の扱い、そして同意の記録に版を持たせた理由です。法律の解釈ではなく、作りの話です。

止める対象を、先に数えた

最初にやったのは、ページを開いたときに外部へ通信するものを数えることでした。

送り先 いつ通信するか 同意の対象か
タグマネージャー(解析) ページを開いた瞬間 対象
アフィリエイトのリンク先 押して移動したときだけ 対象外
問い合わせの送信先 送信ボタンを押したときだけ 対象外
書体 自前で配信しているので通信しない 対象外

結果、止める必要があるのは1つだけでした。読了状態と画面の明暗もブラウザに保存していますが、こちらはサイトの中で完結していて外部へは出ません。

項目を増やすほど、選べなくなる

同意の画面に細かい分類を並べたくなりますが、実際には止まらないものを並べても、選ぶ手間が増えるだけです。

読んでいる途中で急に出てくる画面なので、そこに置いた選択肢の数がそのまま負担になります。数えた結果が1つなら、1つだけ出すのが正しい。

旗を立てるか、読み込まないか

同意していない状態の表し方には、大きく2通りあります。

ひとつは、タグを先に読み込んでおいて「送ってよいか」の旗だけを切り替えるやり方。もうひとつは、同意までそもそも読み込まないやり方です。

旗を切り替える 読み込まない
同意前のブラウザ タグ本体は届いている 何も届いていない
送る・送らないの判断 相手側の設定にもある こちらのコードだけで決まる
確かめ方 設定を含めて追う必要がある 通信が0件かを見れば済む
同意しなかった人の数字 推定として残ることがある 残らない

後者を選びました。

確かめたいことと、確かめられることを一致させる

確かめたいのは「同意前は何も送っていない」ことです。

旗を切り替える方式では、タグ本体は相手のブラウザに届いています。何を送るかの判断が相手側の設定に移るので、こちらのコードを最後まで読んでも、送っていないと言い切れません。設定画面まで含めて追う必要が出ます。

読み込まなければ、通信が起きる余地そのものがありません。開発者ツールで通信の一覧を見て0件なら、それが答えになります。実際に本番で測って、同意前は0件、「同意する」を押した瞬間に読み込まれることを確認しました。

代償として、同意しなかった人の分は数字に出ません。これは正しく「同意しなかった人がいる」という事実なので、受け入れています。

JavaScriptが無い環境をどうするか

タグマネージャーには、JavaScriptが無効な環境向けにnoscriptで画像枠を置く決まりがあります。これを外しました。

同意はブラウザに保存した記録を読んで判断しています。JavaScriptが動かない環境では、その記録を読むことも、同意をたずねることもできません。それでもnoscriptの中身だけは動きます。

置いたままにすると、同意を確かめられない人にだけ、確かめずに送ることになります。分からないときに送らない側へ倒すのがこの仕組みの前提なので、ここでも送らないほうを選びました。

バナーは操作を止めていない

画面の中央に出して、選ぶまで先へ進めなくする作り方もあります。採らなかったのは、止める必要が無いからです。

先に読み込みを止めてあるので、答えないまま読み進めても何も送られません。止めなければ計測が始められない作りなら、選ばせるまで通さない意味があります。先に止めてあるなら、たずねるほうは静かでよいはずです。

ボタンは2つとも同じ大きさにしました。片方を小さくしたりリンクのように見せたりすると、選べるように見せかけて実際には選びにくい形になります。

同意の記録に版を持たせた

保存している記録には、選択と日時のほかに版の番号を入れています。何に同意を求めるかが変わったら、この数字を上げます。版が違う記録は「まだ答えていない」として扱い、もう一度たずねます。

同意は「そのとき説明されたものに対して」もらっています。あとから送信先を足したときに古い同意を流用すると、その人が知らない相手へ黙って送り始めることになります。聞き直す手間より、そちらのほうが問題が大きいと考えました。

今回の学び

まず、選択肢の数は、数えてから決めること。分類を先に用意すると、実際には止まらないものまで並びます。外部へ通信するものを数えたら1つだったので、聞くことも1つになりました。

次に、「していない」を証明できる形にしておくこと。旗を切り替える方式でも、実際には送られません。ただし、送っていないことをこちらのコードだけで示せません。同じ結果でも、確かめられるかどうかは別の性質です。

そして、分からないときにどちらへ倒すかを、先に決めておくこと。JavaScriptが無い環境では同意を確かめられません。そのときに送るのか送らないのかは、個別に迷うと毎回違う結論になります。「分からないなら送らない」と決めておけば、判断が要らなくなります。

← ブログ一覧へ戻る