「セッションに保存する」というフレーズが招く誤解とは?

この記事では、Web開発においてよく使われる「セッション」という用語について、稀にある誤解を紹介します。

Webのアプリケーションを作成したことがある方、あるいは、これから作成するために勉強している方であれば、「セッション」という言葉を聞いたことがあると思います。

Web系のITエンジニアの間では当たり前のように使われている言葉ですが、たまに通常と違う意味で用いられることがあります。

共通認識を持っていると思って使っていた言葉が、実はお互いに違うものを指していたとなると、思わぬトラブルの原因になる可能性があります。

そのようなトラブルにならないよう、ぜひ、誤解の内容を押さえておいてください。

通常「セッション」という言葉は何を指すのか

まず、通常「セッション」という言葉が何を指すのかを見ていきましょう。

通常、「セッション」とは、同一の発信元からのリクエストを識別し、それに紐づくデータをサーバー側に保存する仕組みを指します。

同一の発信元からのリクエストを識別しないといけない理由は、Webの通信に使用されるHTTPプロトコルが、一回限りの通信(リクエストとレスポンス)にしか対応していないからです。

もしセッションという機能を利用しないとすると、①入力フォームに氏名を入れて送信し、②次の画面で入力フォームに住所を入れて送信する、といったようなオペレーションをした場合、①で送信された氏名と②で送信された住所が同一のユーザーから送信されたものであることが判断できないということです。

このような連続した操作が同一ユーザによって行われたものであることを識別する、というのが、”同一の発信元からのリクエストを識別”するということの意味です。

また、連続した操作についての情報をサーバーに保存する、というのもポイントです。

Webに関する仕組みでは、クライアント(ブラウザ)に情報を保存する仕組みと、サーバーに情報を保存する仕組みがありますが、セッションという言葉は、通常サーバーに情報を保存する仕組みを指しています。

何と誤解されることがあるのか:答え「セッションストレージ」

それでは、セッションという言葉は何と誤解される可能性があるのでしょうか?

それは「セッションストレージ」という仕組みです。

Webブラウザには、「Webストレージ」と呼ばれる、ブラウザ内に情報を保存する仕組みがあります。

前節で取り上げたセッションとは違い、こちらはクライアント側に情報を保存する機能です。

Webストレージには「ローカルストレージ」「セッションストレージ」といった種類がありますが、このうち「セッションストレージ」が省略されて「セッション」と呼ばれることがあります。

なお、「ローカルストレージ」「セッションストレージ」ともに、Webブラウザに情報を保存する仕組みではありますが、保存期間が異なります。

「ローカルストレージ」は明示的に削除しない限りデータが残り続けますが、「セッションストレージ」はタブが(または、ブラウザごと)終了した時点で残っているデータが消去されます。

「Webストレージ」の内容はどうやって確認するのか

「Webストレージ」はブラウザに情報を保存する仕組みであるため、その内容をブラウザ上で確認することができます。

Chromeであれば、以下のような手順で確認できます。

①ページ内で右クリックし、メニューから「検証」を選択。

「検証」を選択

②検証ツールのメニューで「Application」または「アプリケーション」を選択。

「Application」を選択

③左のメニューから「ローカルストレージ」(「Local Storage」)、または、「セッションストレージ」(「セッションストレージ」)を選択。

「Local Storage」「Session Storage」を選択

「Webストレージ」には何が格納されているのか

Webストレージ内の情報は、キー/バリュー形式で保存されています。

「ローカルストレージ」(「Local Storage」)、または、「「セッションストレージ」(「Session Storage」)」内にあるURLをクリックすると、右側にストレージの内容が表示されます。

キーとバリューの組み合わせが1行になっており、左側にキー、右側にバリューが表示されています。(下画像内「ア」)

また、各行をクリックすると、その詳細な内容が下に表示されます。(下画像内「イ」)

おわりに

「セッション」という言葉がもたらす勘違いについて解説しました。

普段から当たり前のように使っている言葉だと、他の人も同じ意味で使っているはずだと思いがちです。

しかし、話がなかなか噛み合わず、よくよく話してみると、前提となっている言葉の認識が違っていたなんてことがよくあります。

「セッション」という言葉は、サーバー側に情報を保存する仕組みを指すことが多いので、ほとんどのケースで誤解は発生しないと思いますが、もし、議論が噛み合わないときは、この記事で紹介している誤解がないか確認してみてください。