本日は、多くの方が一度は聞いたことがあるであろうCookieについて記事にします。
Cookieについて説明をする前にHTTPというプロトコルの特性について説明します。
HTTPプロトコルの特性
ブラウザを使って、Webサイトを閲覧する際、私たちはHTTPというプロトコルを使っています。
HTTPは、リクエストとレスポンスからなるシンプルで非常に汎用性の高いプロトコルです。
GETやPOSTといったメソッドを使い、さまざまな情報をクライアントとサーバー間で交換できます。
ただし、そんなHTTPには1つ大きな弱点があります。
それは、「ステートレス」、つまり「状態を維持することができない」という点です。
例えば、以下のようなWeb通販のサイトがあったとします。
ページ右側の「カートに入れる」をクリックして、商品をカートに入れます。

次にカートのページに移動します。

カートに移動すると、先ほどカートに入れたはずの「タブレット」がありません。

HTTPプロトコルは、基本的に1つ1つの操作が独立したリクエストとレスポンスになるため、「カートに入れる」というリクエストは送信できても、その状態を維持することができません。
1つ1つの操作が独立しているため、誰がタブレットをカートに入れたかをWebサイト側が識別することができず、結果的にWebサイトはユーザーに対してタブレットが入ったカートを表示することができないのです。
このHTTPの弱点を補うのが、掲題のCookieという技術です。
Cookieとは
ここからは本題のCookieについてです。
Cookieとは、ブラウザにユーザーを識別するための情報を記憶させることで、Webサイト上で連続性のある操作を可能にする機能です。
Cookieが有効な場合の動作について、先ほどと同じく、Web通販のサイトを例に説明します。
ページ右側の「カートに入れる」をクリックして、商品をカートに入れます。

次にカートのページに移動します。

今度は、タブレットが入ったカートが表示されます。

また、一度保存されたCookieは有効期限を迎えるまでブラウザに残り続けます。
そのため、一度ブラウザバックしたとしても、再訪するとカートは維持されたままになります。
ログインもしていないのになぜカートの中身を覚えているのかは、Cookieのおかげというわけです。
Cookieがない場合は1つ1つの操作が独立した操作になりますが、Cookieがあることによって、Webサイトがユーザーを一意に識別することができるようになります。
結果として、Webサイトはユーザーに対してタブレットが入ったカートを表示することができます。
また、ブラウザに保存されたCookieの識別子はブラウザの開発者ツール(デベロッパーツール)や、プライバシー設定などから確認できます。
ファーストパーティCookieとサードパーティCookieについて
今回の内容は主にファーストパーティCookieに関するものです。
ファーストパーティCookieでは、基本的に同じサイト内でのCookie利用が可能で、主にユーザーの識別に使用されます。
それとは別に、サードパーティCookieというものも存在します。
Cookieはユーザーを識別することで、ブラウザ上の連続した操作を実現しますが、この機能を応用して、ユーザーのブラウザ上の動きをトラッキングすることが可能です。
例えば、マーケティングを目的として、広告バナーから実際に購買に至るまでのブラウザ上の遷移を確認し、分析することができます。
ファーストパーティCookieでは同じサイト内でのCookie利用が可能ですが、サードパーティCookieでは異なるサイトの遷移もトラッキングすることができます。
これがプライバシーにも影響を与えるという観点から、2022年の個人情報保護法の改正によって「サードパーティCookie」はユーザーの同意がないと有効にできないように規制されました。
皆さんが一度は見たことのある「Cookieを許可しますか?」という表示は、この規制によるものです。
ブラウザによっては、サードパーティCookieだけをブロックする設定などもありますので、興味があれば設定を確認してみるのも良いでしょう。
以上です。

