セッション(Session)ってなに?

rails

こんにちは。てくてーくです。

今回はプログラミングをやる上で出てくる用語「セッション」について取り上げていきたいと思います。

プログラミングを勉強するまで、このセッションという言葉は”音楽を一緒に演奏する”みたいな意味以外には全く聞いたことがなくピンときませんでした。

これからセッションを理解したいという方に向けてまとめてみました。

これではない ↑

セッションを理解する

セッションを理解する上で、おさえておくべき用語が3つあるので見ていきましょう。

  • HTTP
  • ステートレス(Stateless)
  • クッキー(Cookie)

HTTP

HTTPはHyper Text Transfer Protcolの略でクライアントとサーバー間でハイパーテキストを転送するための通信プロトコルです。普段私たちがインターネットを使用する際に使っている通信プロトコルになります。

クライアントがサーバーに要求することをリクエストと呼び、サーバーがクライアントに返答することをレスポンスと呼びます。

具体的にいうと、

  1. インターネットで私たち(クライアント)がこのサイトを見たいとポチっとボタンを押す
  2. サーバーに対し、このサイトの情報をちょーだい!というリクエストが送られる
  3. サーバーはそのリクエストに対し、はいよ!と、そのサイトの情報を送る
  4. 私たち(クライアント)はサイトを見ることができる

このようなやりとりがあって初めて私たちはサイトを閲覧することができるのです。

このような仕組みがHTTPです。

ステートレス(Stateless)

ステートレスとは state(状態)less(ない)ことを意味します。

そして先ほどのHTTPはステートレス(状態がない)なことが特徴の一つとして挙げられます。

どういうことかというと、HTTPは過去の情報を処理結果に反映させることができません。

HTTPはたとえクライアントが同じリクエストを何度したとしても、過去の情報はすべて忘れてレスポンスを返してくるということになります。

クッキー(Cookie)

クッキーとは自分のブラウザに保存できる情報のことを言います。ブラウザとサーバーがやりとりしてユーザー情報やパスワード、サイトを訪れた日時など様々な情報を保存します。

具体的な例は

サイトにパスワードなどを入力しログインした後、しばらくしてからもう一度そのサイトにアクセスするとパスワードなどを入力しなくてもすんなりログインできることがあります。これはブラウザがクッキーに保存されたログイン情報を活用しているからです。

セッションとは

これを踏まえてセッションとは、ページを遷移しても、本来はステートレスなHTTPの性質により失われる情報をクッキーなどを使用し保持する一連の流れのことを指します。

登録が必要なサイトでログインした後に、サイト内でページを遷移しても情報が失われずにログイン状態が保たれている状態です。

厳密にいうと、このログインからログアウトまでが一つのセッションだそうです。

 最後に

セッションを理解するにあたりHTTP、ステートレス(Stateless)、クッキー(Cookie)などの用語が出てきましたのでここできちんと押さえていかないといけないですね。

セッションはWebアプリを作る上でも欠かせない用語です。セッションがログイン機能の実装、Remember me機能の実装等において深く関わっています。きちんと意味と機能を理解しておきたいですね!

 

参考にした記事:

「分かりそう」で「わからない」でも「分かった」気になれるIT用語辞典

【Rails】ログイン機能を実装する上で必要不可欠な「Session」について解説

コメント