前号: No 392 / 次号: No 394 / 一覧(note.com)へ / ブログページに戻る
今回は、Webでよく用いられるクッキー(cookie)についてのお話です。 クッキーについては、以前も書いたよなぁと調べてみますと、2019年6月でした。 これを書いている現在は2025年2月ですから、もう6年近くも前の話です。 さすがに6年前とは随分と状況が違ってきていますので、今回も過去記事のアップデート版となります。1. Web(インターネット)は論文用だった
最初に、少しだけ歴史のお話。 俗にインターネットといえば、Webブラウザで見るサイトのことを言います。 WebブラウザではHTTPやHTTPSというプロトコル(通信手順)を使います。 このWebブラウザは元々は学者の夢から始まりました。 図書館にいかずに、論文の参考文献を手元の端末で見られたらめちゃくちゃラクでいいじゃないか!というのが原点です。 多くの論文では、末尾にたくさんの参考文献が載っています。 Webがない時代に参考文献を読みたければ、図書館などで目的の学会誌や雑誌を探すしかありません。 その学会誌や雑誌がなければ他の図書館に行く、ヨソから取り寄せる、古本屋めぐりをする、などとかなりの手間が必要でした。 だったら、論文の参考文献にはURLを書いておき、ネット経由でその論文を閲覧できれば、(学者にとっての)パラダイスだよな!というのがWWW(World Wide Web)の基本コンセプトです。2. HTTP/HTTPSは同じ画面しか作れない
ですが、Webが発展するに従って、誰もが同じ画面しか見られないようでは実現できないサービスが登場します。 オンラインバンキングやショッピングサイト、SNSなどがわかりやすいですよね。 こういったサービスでは、利用者によって表示内容は違うものになります。 というか、違ってくれないと困ります。 例えば、ショッピングサイトなら同時にたくさんの人が買いものをしています。 たくさんの人がそれぞれ自分用のカートに商品を入れ、配送先を伝え、お金を支払います。 これは今となってはあたり前なんですが、前章で書いた当初のWWWコンセプトからはかなりズレていることがわかります。 当初は誰もが同じ論文を閲覧できることが目的でしたから、WWWで用いられるHTTP/HTTPSというプロトコルには人によって表示内容を変えるなんて仕組みがありません。 一方で、ショッピングサイトやSNSではログインしている人に合わせて、ページ内容を変えなければなりません。ショッピングカードの中味もそうですし、発言一覧なども同様です。 この矛盾した二つの要求をクリアするために生まれたのがクッキーという技術です。3. 誰のカートか識別するには?
サーバ側から見れば、たくさんのお客さんのたくさんのカートがあります。 どれが誰のか?って区別する方法が必要ですよね。 「そりゃ、最初にログインしてるんだし、カートに番号とか名前が付いてるんじゃないの?」 確かにそうですね。ログインした時なら、IDとかパスワードとかを入力しますから、それを使えば誰のカートか識別できそうです。 ですが、ショッピングカートの中味って、次の日も残ってませんか? ログイン画面もなく、パスワードも入力せずとも「ようこそ○○さん」なんて表示してくれたりしますよね。 ナニを頼りにして、ワタシが誰か知っているのでしょうか? これってキモチ悪くないですか? 「えと、PC(文末参照)が気を効かしてIDとパスワードを送ってるんじゃないの?ほら、パスワードマネージャとかあるじゃない。あんなのがやってくれてるんじゃないの?」 なるほど。 でも、本人の許諾もなくパソコンが勝手にパスワード送るのはマズいですよね。 「あ、それもそうか。じゃあ、どうやってるのよ?」4. クッキーの技術
と、ここまで書けばわかるでしょうが、これを実現しているのがクッキーです。 クッキーの登場は1994年と随分前のことです。 その頃、ショッピングサイトを実現しようとした技術者がいました。 その人が困っていたのは、人によって違う画面を表示する方法でした。 当時のWebブラウザ(まだChromeもなく、Netscape Navigator が主流だった時代)では誰がいつどこからアクセスしても同じものしか表示できませんでした。 クッキーというのは、ごくごく小さなデータです。 どれくらい小さいかというと、多くは100バイト以下くらいに小さいのです。 (1バイト=英数字1文字と考えてください) では、クッキーにはどんな情報が入っているのでしょうか? クッキーの内容はサーバ側(サイト運営側)で自由に決めることができます。 例えば、利用者を識別するための情報が代表的ですが、他にも表示言語、通貨単位(ドルか円か)といった情報にもよくクッキーが利用されます。 最初に、サーバがクッキーを生成します。この時は、ログイン情報などを利用して「誰か?」を識別に必要な情報がクッキーに含まれます。 このクッキーは、サーバから利用者のブラウザへと、ページ内容といっしょに送り返されますが、画面には表示されません。 利用者が別のページ(例えばショッピングカートや商品説明ページ)にアクセスしようとすると、ブラウザは欲しいページの情報といっしょにクッキーをサーバに返送します。 サーバは戻ってきたクッキーの内容を見ます。 最初に書いたように、クッキーには利用者を識別できる情報が含まれていますから、これを元にすれば、その人専用のページが作れるというわけです。 かなりややこしいですが、このようにしてクッキーは利用者毎に違ったページを表示するのに欠かせない技術なのです。 なお、クッキーには有効期限が設定できます。 翌日にアクセスしても再ログインせずに専用ページやカートの内容を表示できるのは、この有効期限を長い目(例えば二日)に設定してあるからなんですね。5. クッキーの危険性
さて、このように便利なクッキーなのですが、悪質な利用による事件も発生しています。 大きくクローズアップされたのは、2019年に起きたリクナビというリクルートサイトでの事件でした。 当時、クッキーが個人情報と明記されていないのをいいことに、学生の同意を得ずにクッキーを収集し、それをもとに内定辞退率を計算し各企業に提供していたというものです。 いくらクッキーが個人情報と明記されていないとしても、それを元に具体的な個人を容易に推測できる形で企業側に提供したことは明らかに個人情報保護法の趣旨を逸脱した運用でしたので、監督省庁からかなり厳しい勧告や指導があったようです。 結局、クッキーは個人情報の一部(個人関連情報)として個人情報保護法で定義され、取り扱いには十分な注意が必要であるということになりました。 そのためもあり、一昨年くらいからクッキーを利用しているサイトでは、クッキー利用についての同意を求めるサービスが急増しました。6. まとめ
多くのWebサービスではアクセスした人によってページ内容を変える必要があります。 ところが、本来のWebサービスにはそのような仕組みがなく、誰でも同じ内容のページしか表示することができません。 そこで、考案されたのがクッキー(Cookie)という仕組みでした。 クッキーは、サーバ側で生成したアクセス元を識別できる情報で、それを利用者側(ブラウザ)に送り付ける形を取ります。 利用者側(ブラウザ)は他のページを表示する時にクッキーを無条件に送り返すルールとなっており、それによってサーバ側はアクセス元が誰なのかを識別できるという仕組みです。 余談ですが、「なんで『クッキー』?」と筆者も疑問に感じるのですが、公式には「Cookieの呼び方に理由はない」のだそうです。 今回はクッキーのお話をしました。 次回もお楽しみに。 (本稿は 2025年2月に作成しました)
前号: No 392 / 次号: No 394 / 一覧(note.com)へ / ブログページに戻る