ある日の我が家
娘(4歳)「パパ、セッションとかCookieってなあに?」
娘「サーバサイドの勉強してると出てくるやつ」
ワイ「おお、今日はその質問か」
ワイ「ええでええで〜、パパが教えたるで〜」
娘「わ〜い!」
ワイ「ワ〜イ!」
例えば月曜日
ワイ「例えば、月曜日の朝は仕事する気にならへんからTwitterを見るやろ?」
娘「うん!」
ワイ「せやからTwitterのホーム画面を見るために」
ワイ「ブラウザのアドレスバーにhttps://twitter.com/homeって打ち込むんや」
ワイ「まぁ実際にはブックマークから行くんやけど、まぁ同じことや」
ワイ「つまりブラウザ君を通して、サーバ君に」
「ワイのTwitterのホーム画面のHTMLをくれや〜」
ワイ「ってことを伝える訳や」
娘「うんうん」
ワイ「でもな?」
ワイ「それもセッションとかCookieがないと出来ひんことやねん」
娘「何で?」
ワイ「世界中のPCやスマホからTwitterのサーバにアクセスが来るわけやから」
ワイ「サーバ君からして見たら」
ワイのアクセス「ワイのホーム画面をくれや〜!」
山田くんのアクセス「ワイのホーム画面をくれや〜!」
佐藤くんのアクセス「ワイのホーム画面をくれや〜!」
〇〇くんのアクセス「ワイのホーム画面をくれや〜!」
・・・
・・・
ワイ「ってな感じや」
ワイ「何万人ものユーザが」
「ワイのホーム画面をくれや〜!」
ワイ「ってアクセスしに来るねん」
ワイ「でも、HTTP通信っていうのはステートレスな通信やからアカンねん」
娘「ステートレス・・・状態がないってこと?」
ワイ「せや」
ワイ「例えば・・・」
ワイのアクセス「ただいま
Yametaro1983のアカウントでログイン中や!」
ワイのアクセス「せやからワイのホーム画面をくれや〜!」
ワイ「↑こんな感じで、現在の状態を添えてサーバ君にリクエストしてあげたら」
ワイ「サーバ君も」
サーバ君「よっしゃ、貴様のホーム画面の情報を返したるわ!!!」
ワイ「・・・って返してくれると思うんやけど」
ワイ「HTTPリクエストは状態を持たれへんから」
ワイ「毎回はじめましてな感じやねん」
サーバ君「貴様ら、ワイのホーム画面くれとか、ワイの通知一覧くれとか言うてるけど」
サーバ君「ワイって誰やねん!!!」
サーバ君「どのアカウントでログイン中の奴やねん!!!」
ワイ「って感じやねん」
ワイ「せやからセッションとCookieが必要なんや」
娘「まだよく分かんないけど、Cookieとセッションがあると」
娘「どのアカウントでログイン中なのか、っていう状態を」
娘「サーバ君に伝えられるってこと?」
ワイ「せや」
ワイ「擬似的にやけどな」
ワイ「まず、自分のホーム画面を見るためには」
ワイ「ログイン画面でアカウントとパスワードを入力してログインをするやろ?」
娘「うん」
ワイ「そうするとサーバ君が」
サーバ君「ログインできたで〜!」
ワイ「って言う情報と共に」
サーバ君「貴様の個人識別番号は
gh3049ghjb39003nやから、覚えときや〜!」
ワイ「っていう指示をブラウザ君に対してくれるねん」
ワイ「そうすると、ブラウザ君はその個人識別番号を保存しといてくれんねん」
ワイ「その、ブラウザに保存される情報がCookieや」
娘「へえぇ〜」
ワイ「個人識別番号だけやなくて、ほかにもいくつも記憶させたり出来るで」
娘「そうなんだね」
娘「パパより賢いね」
ワイ「せや」
Cookieって何かに似てる
娘「Cookieってなんか」
娘「JavaScriptのsessionStorageとかlocalStorageみたいだね」
ワイ「せやな」
ワイ「でもそれらと違うのは、Cookieは毎回サーバに自動送信されるってとこやな」
娘「そうなんだ〜」
ワイ「ほんで、ブラウザ君だけがその個人識別番号を覚えててもしゃあないから」
ワイ「当然サーバ君も記憶しておいてくれんねん」
ワイ「サーバ側が記憶してくれる情報がセッションや1」
娘「なるほど〜」
娘「だから・・・」
ワイのアクセス「今度は通知一覧ページをくれや〜」
ワイのアクセス「ワイの個人識別番号はgh3049ghjb39003nやで〜(自動送信)」サーバ君「また貴様か!」
サーバ君「ずっとTwitter見てるな!」
サーバ君「仕方ない、ほらよ!」
娘「みたいに、サーバ君とのやり取りができるんだね」
ワイ「せや」
ワイ「ドチャクソざっくりやけど、イメージは分かったやろ?」
娘「うん!」
娘「HTTP通信はステートレス、つまり状態を持たないけど」
娘「セッションとCookieを使うと」
娘「擬似的に状態を維持できる!」
娘「ってことだね!」
ワイ「そんな感じや!!!」
娘ちゃんが寝たあと
よめ太郎「あんた、セッションとかCookieとか知ってたんやな」
よめ太郎「jQueryしか知らんのかと思ってたわ」
ワイ「いや、実は昨日ハスケル子ちゃんがな」
ハスケル子「そろそろ娘ちゃんからこんな質問が来るころだと思うので」
ハスケル子「セッションとCookieのことをお伝えしておきますね・・・」
ワイ「って言うて、あらかじめ教えてくれたんや・・・」
よめ太郎「Oh...」
よめ太郎「ハスケル子ちゃん、預言者かい・・・」
そのとき会社では
ハスケル子「ハ、ハッ・・・」
ハスケル子「ハッスケル!!!!!」
ハスケル子「誰か私のウワサしてるな・・・」
〜おしまい〜
