Webセッションとは何か?ついでにクッキーとは何か?

  • -

    シェア
  • ---

    LINEで送る
  • -

    はてなブックマーク
    ブックマーク
  • -

    pocket
  • -

    rss
他言語サイト
翻訳はみつかりませんでした
Q&A キャプチャ

Webの世界でセッションと言えば『ブラウザからページを表示してブラウザを閉じるまでの間』『訪問』という答えを聞くことがあります。

Webマーケティングが注目されてからそのように言われているように感じます。

しかし、セッションという言葉は、場所・人が違えば意味が違ってきます。

あらためてセッションの意味を考えます。ついでに関係の深いクッキーについても説明します。

セッションは場所・人によって意味が違う

『ブラウザからページを表示してブラウザを閉じるまでの間』『訪問』

Webの知識のない人にセッションを説明するとき、このように説明する人が最近多くなっている気がします。

ぼくも同じように説明することがあったし、これからもするでしょう。と同時に、『セッションの意味はこれだ!』と断定されると困ってしまいます。『訪問』がそうですが、本来のセッションの意味とは全く違います。訪問は"session"ではなく"visit"ですよね?

これは、Webマーケティングが注目されてから広がったように思います。Googleアナリティクスなどウェブアクセス解析を勉強した人はこのような意味で使っているのではないでしょうか?

セッションの本来の意味は違います。上の表現は『遠からず近からず、やっぱり遠い』といったところです。

とくに、Web関連の仕事しているシステムエンジニア・プログラマには全く通用しません。彼らは本来のセッションの意味で使っているからです。

通用するのは、Web関係の人でも『Webマーケター』『Webアナリスト』『Webコンサル』ぐらいでしょう。少なくとも『誰にも通用するWeb用語』ではありません。

ここでは、『本当の意味』でのセッションを説明します。技術的なこと、専門用語はなるべく使わないで話を進めます。

セッションの英単語の意味

sessionの英単語には、『何かが始まっているようす』という意味があります。

国会の開会、裁判所の開廷などで使われます。

音楽業界でセッションすると言いますが、これは『本来なら一緒にやるはずのない、1回限りの希少なことが始まった』というところからきています。

Webのセッションとは?

Webの話に戻しましょう。

Webのセッションは、『ブラウザからの訪問』に限らず『何かの始まりから終わりの間』という処理のまとまりのことを言います。

そして、Webの仕組みを知っているプログラマ・システムエンジニアは、セッションと聞くと、『始まりから終わりまで何かの情報を維持し続ける』という条件が頭に浮かびます。

彼らはセッションを、

それぞれ独立した処理に共有情報を持たせて、処理につながりを作る。

と解釈します。具体的なセッション機能を見てみましょう。

ログイン機能

ログイン機能では、ログインをすると、

  • ボタンを押してログアウト
  • ブラウザを終了させたらログアウト
  • ブラウザを終了してもある一定時間は維持し続けてその後ログアウト

など、ログアウトが行われるまでログイン情報は維持されます。その間にはページの遷移もあればブラウザの終了・再開もあります。

当たり前に思うかもしれませんが、これはセッションを使わなければできないことです。

Webではhttp通信を行いますが、この通信ではページを表示すると処理は終了します。ページを遷移するとき、前のページと次のページの間に処理のつながりはありません。

Webページの表示はWebサーバーが担当しますが、Webサーバーから見ると、ページの遷移とブラウザを一度閉じて再開するのに違いはありません。ブラウザからページ表示のリクエストを1件受信するだけです。

1ページ表示は1処理でそれぞれの処理は独立しています。互いに干渉しません。

Webページは、ボタンをクリックして別のページに遷移したり、動画を再生したりします。操作感としては処理がつながっているように感じますがそうではありません。クリックする前に処理は一旦終わっていて、クリックすることで新しい処理が始まります。

Webの処理は、『開始→終了→開始→終了→...』の繰り返しです。

ログイン機能がどれだけセッションに支えられているか分かるでしょう。セッションがなければ処理の連続性・継続性は維持できません。

ショッピングサイトのカート機能

ショッピングサイトのカート機能も同じです。カートに入れた商品は、キャンセルするか、商品を購入しない限り何日でも残っていますよね?

これもセッションによって実現されています。

  • Webは1ページ表示で1処理。
  • Webサーバーから見るとページ遷移とブラウザの再起動に違いはない。
  • Webの処理は、『開始』→『終了』→『開始』→『終了』→...の繰り返し。
セッションは、独立した個々の処理に情報を共有させて、連動した処理のまとまりを作ること。

セッションは単位ではなく機能

今ではセッションは単位のように使われますが、本来は機能です。もともとは機能なので、セッションと言っても場所・人によって意味は変わります。

Webの世界にいると、話の前後でなんとなく判断できてくるのですが、ほかと区別して『ログイン(の)セッション』『カート(の)セッション』と呼んだりします。

機能だから言える表現ですね?

これは決して単位としてのセッションを否定しているわけではありません。むしろこちらのほうが多く使われているでしょう。

複数の独立した処理をひとまとめにしたものを1セッションと言います。1袋みたいなものです。

セッションタイムアウトとは何か?

セッションには、独立した処理をひとまとめにする特長から、タイムアウトの機能がほとんどついています。セッションタイムアウトと言います。

セッションは、内部でいくつもの処理が独立して開始・終了を繰り返すので、セッションを始めたら必ず終わらせることが難しい特長があります。

内部の処理はそれぞれ独立しているので、自分の処理が終わったあとに別の処理が始まるかどうかは分かりません。なので、内部の処理は、処理の最後がセッションの終わりなのかどうかも分かりません。

そこでセッションは、ある程度セッションの終わりの条件を決めて、セッションが始まってから放置されないようにセッションタイムアウトを設定します。これで、ぜんぶの処理がセッションを終わらせなくても、最後は時間切れで確実に終わります。

ネットバンキングでは、ログアウトボタンを用意します。それ以外はログインタイムアウトで終わるようにしています。ログインタイムアウトがセッションタイムアウトです。

ログアウトボタンを押さずにブラウザを閉じて、後日ブラウザからページを表示すると、

前回のログインから一定時間が過ぎたのでタイムアウトしました。
お手数ですが再度ログインしてください。

と表示されることがありますよね?これがセッションタイムアウトです。

クッキー(Cookie)について

セッションを語る上でクッキーははずせません。

クッキーは、Webサーバーにあるコンテンツがブラウザに情報を保存するために作成するファイルのことです。

セッションは、いくつもの処理の間で情報を共有する必要があります。機能によっては、ページを見る側(ブラウザ)で情報を保存するときもあります。その保存先がクッキーです。

たとえば、ログイン画面にある『ログイン状態を保存する』のチェックボックスに印をつけると、クッキーにログイン情報につながるものが保存されます。そうすることで、ブラウザを閉じてもログインが続いて、次からログイン作業を省略します。

また、ショッピングサイトのカートの中身は、ブラウザを閉じても、そのサイトでログインしていなくても、別の日にショッピングサイトのカートを見ると前回の情報が表示されます。

これも、クッキーにカート情報につながるものが保存されています。

クッキーに保存される情報は、ログイン情報そのものや、カートの情報そのものであることはありません。

以前は情報そのものだったのですが、セキュリティ上マズイということで、その保存方法はなくなってきています。
現在は、ブラウザとWebサーバーの双方だけが共有する暗号化されたものや、ワンタイムパスワードなどがクッキーに保存されています。
以前はクッキーを盗んでファイルを開けば、中身を見ることができました。しかし今は、暗号化されているので意味がわからないものだったり、ワンタイムパスワードなのでそもそも意味のないものだったりします。
なので、クッキーを盗んだだけでは意味がありません。悪いことをするにはもう1つ手間をかける必要があるのでセキュリティは上がっています。しかし、100%安心ではありません。

最後に

セッションは『ブラウザでページを開いてから閉じるまでの間』以外にたくさんあることがわかると思います。

少なくとも『訪問』ではないことは確かでしょう。なんとなく『訪問』になったいきさつは想像できます。

ウェブアクセス解析では、訪問、訪問者数、訪問時間という言葉があります。

  • 訪問時間は、訪問者がページを閲覧した時間の総和
  • 訪問は、ページを閲覧し始めてから最後のページを離脱するまで
  • 訪問はブラウザでページを開いてからブラウザを閉じるまで
  • ある時期を境にセッションと言い始めた(Googleアナリティクス?)
  • セッションは、前は『訪問』と呼ばれたもの
  • 中身は変わらず呼び方が変わっただけなので、『セッションは訪問』が通用した

という感じだと思います。

この言葉の意味のビミョーなすれ違いは、Googleアナリティクスのセッション継続時間の不正確さ問題に表れています。

問題の本質は『セッション継続時間』=『訪問時間』だと思っているところです。

セッションを本当の意味でとらえる人は、

そもそもセッションは終わりが不確実だから、時間を計測するのはムリがあるよね?

で終わりです。セッション継続時間と訪問時間は違うものと考えます。

ただ、その無理をどうにかして克服しようとするGoogleの技術者たちは尊敬します。

 

最近Webカテゴリでよく読まれている記事です。
post-cta-image
blog image

ドメイン取得の意味が分からない人へ。王道の方法を紹介します。

ドメインの登録業者を選ぶのに悩む必要はないです。サイトを簡単に早く公開するには全くいらないことで、むしろ邪魔です。『お名前.com』というサービスは必ず耳にします。そのお名前.comのメリットとデメリットと一緒に、ドメインの意味が分からない人が一番失敗しないドメインの取得方法を紹介します。

tadtadya.com

_

SNSでも記事を配信しています。
コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

この記事を気に入ったらぜひシェアも!!