Session(セッション)とは

Session(セッション)と一言で言っても、話す人・聞く人によってその意味合いは様々に変化します。おなじみWikipediaでもIT関連の説明として、2つの意味が紹介されております。

コンピュータの用語で、一連のインタラクティブな操作のこと。典型的にはログイン(ログイン)してからログアウト(ログオフ)するまでが一つのセッション。
Wikipediaより http://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3

コンピュータネットワーク用語で、一連の通信のこと。典型的には接続を確立してから切断するまでが一つのセッション。
Wikipediaより http://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3

アクセス解析の指標名としてもSession(セッション)という言葉があります。こちらは前者に分類される代物ですが、一括りにして理解してしまうと、いろんな場面で思わぬ齟齬が生じてしまうことが懸念されますので、アクセス解析でいうSession(セッション)は、これはこれで別の意味を持っていると理解いただいた方が懸命です。

例えば、
マーケティング担当者が、エンジニアに「流入元によってセッションが変わるんですよ」といった話をしたとしましょう。当のエンジニアは、「え?もうちょっと詳しく教えてください」などと平静を装いつつ、心の中では、「(致命的なバグ!?)」、「(セ、セ、セッションハイジャック!?)」といったよからぬ想像が先行し、冷や汗どころか、変な汗が吹き出し、肝を冷やし寿命が縮まっているかもしれません。

昨今、アクセス解析はメジャーなツールなので、この話は極端ではありますが、「何気ない会話をしているつもりのマーケティング担当者」と「それを聞いて動悸がして冷や汗が出ているエンジニア」といったように、Session(セッション)という言葉の意味が多岐に渡る為、場合によっては同じSession(セッション)の話をしているのに、まったく噛み合ないという状態になってしまいます。多様な意味があることを理解し、必要に応じて「アクセス解析で言うセッション」またはGoogle アナリティクスに倣って、「訪問」というような形で、表現するといいと思っております。

余談ですが、Google アナリティクスのレポート画面で各種表記の変更が行われて久しいですが、セッション数もその一つで、訪問数となったのを覚えていらっしゃいますでしょうか?個人的な見解ですが、単に横文字をやめたわけではなく、セッションという言葉が持つ多様な意味が誤解を招くため、訪問数となった、というのが変更理由の一つとしてあるのではないかと推測しております。ちなみに英語版ではVisitsという表記になりました。同様にユニーク数→ユーザ数と変更になったと記憶しておりますが、こちらはこちらで、厳密にはUniqueではありませんので「ユニーク」というのが誤解を招くので「ユーザ」となったと推察しております。

Session(セッション)の仕組み

本投稿では前回のCookie編の続編ということで、Wikipediaからの抜粋の前者(コンピュータの用語)の方について、その仕組みを書いていきたいと思います。

Cookieはあなたのコンピュータ内に保存されます。その為、意図的にあなたが内容を変更しようと思えば可能です。また、Cookieの性質上、その内容がサーバから送られてきたり、サーバに送らなくてはならないので、内容が通信に乗ってしまうというセキュリティ的なリスクも存在します。(※SSLうんぬんは割愛!)

「意図的に変更が可能」、「内容が通信に乗ってしまう」という課題を解決する為に、Session(セッション)が登場します。

この課題のポイントは、「あなたのパソコンにデータが保存されている」ことなので、「であればいっそのこと、このデータはサーバに保存しよう!」というのが、(Wikipediaからの抜粋前者の)Session(セッション)です。

依然として、あなたを識別する為に、Cookie(クッキー)が用いられることに変わりはなく、識別する為にサーバからランダムな文字列が発行・送信され、Cookieに保存されます。このランダムな文字列はいわば鍵のようなもので、サーバはあなたに保存をお願いしたその鍵をあなたから受け取り、サーバに保存されているあなたのデータを識別し、システムで利用します。

サーバ側にデータが保存されているので、あなたが意図的にデータを変更することができず、サーバ側にデータが保存されているので、通信にそのデータが乗らない。通信に乗るのは、そのサーバでしか意味をなさない鍵(ランダムな文字列)のみ

というわけです。これで、課題が解決されているという形になっておりす。

ECサイトでよく見るカート機能などは、あなたがカートに入れた商品データがサーバに保存され、Cookie(クッキー)に保存された鍵を利用して、これを識別し処理しているわけです。Cookie(クッキー)にこれらの情報を全て保存してしまうと、意図的に改変すれば、あるはずのない商品をカート入れたり、価格を操作されたりして、そのまま購入までできてしまうといったことになりかねません。(※システムの実装次第でもありますので、このような挙動が可能かどうかは一概には言えません。)

以上が、簡単ではありますが、Wikipediaからの抜粋の前者(コンピュータの用語)のSession(セッション)の仕組みです。

余談ですが、先にも出て来た「セッションハイジャック」なるものは、この鍵が奪取されることを言います。システム開発において、Cookie改変など含めて、悪意を持っていろいろ改変するユーザへの対応を実装する(しなくてはならない)点に最も工数・コストが掛かっているのではないでしょうか。 

まとめ

・アクセス解析でいうところのSession(セッション)は、コンピュータ用語のそれとは似て非なるもの
・Session(セッッション)はCookie(クッキー)を用いて実現されている。(Wikipediaからの抜粋の前者の場合)
(※Cookie未対応のガラケーなどはURLに鍵情報を入れる形でSession(セッション)を実現しております。)

メジャーなブラウザは無料で提供されておりますが、実はHTMLのレンダリングだけではなく、Cookie(クッキー)の処理を始め、通信に関する処理を厳格に行い、最近ですとJavascriptの処理など含めまして、目に見えないところで、懸命に稼働しております。Cookieのようにデータとしては小さいですが、非常に重要なデータを扱っていたりしますので、ブラウザは常に最新バージョンに保っておくことをオススメします。

以上、長々となってしまいましたが、Session(セッション)について、Cookie(クッキー)との関係含めまして書いてきました。

技術寄りの話で、出来る限り誤解が生じないようにしたく、結果説明が冗長になってしまっているとは思いますが、今後アクセス解析に関して記事を書いていくに当たり、説明させていただきたい話でありましたので、ご一読の上、今後投稿される記事を楽しみにしていただければと思っております。

次回のこのシリーズでは、アクセス解析でいうところのSession(セッション)について書きたいと思っております。