Webプログラミング学習者にとってSessionという言葉は混乱を招きます。
特定の機能の名前であるSessionと英単語としてのSession(期間)がごっちゃになるからです。
経験者はコンテキストからどういう意味でSessionと言っているのかを判断しますが、学習者には区別がつきません。
人によって、初めてSessionという単語に出会う場面が違うため、Sessionの意味を聞いても自分が出会ったSessionとは違う意味を説明されたりします。一つ一つのわからない単語を調べていく真面目な人ほど混乱してます。
Sessionクラスというのがあったとして、誰でもそれだけでは何を意味してるのかわかりません。
英単語としてのSession
まずはSessionは英単語として 期間 という意味です。プログラミングの文脈では 一つの期間 ぐらいの意味で使います。この場合は特定の何かの機能を指しているわけじゃないので、別に仕様とかもありません。
HTTP Session
HTTPクライアントがRequestを送り、HTTPサーバーが処理を行った上でResponseを返す。この一連の処理をHTTP Sessionといいます。
これのことも単にSessionという場合があります。
WebアプリのSession機能
HTTPはステートレスなプロトコルなのでWebアプリは大抵何らかの状態を保持する機能を持っています。この機能のこともSessionといいます。
この機能はPHPの様に言語が持っている場合もありますが、基本的にはライブラリ・フレームワークがそれぞれ独自のものを持っています。(rubyだとrack)
このSession機能は内容の保存方法・場所を選べ、サーバーのファイルに保存したり、データベースに保存したり色々です。
特にこの保存場所がCookieであることがあるので、学習者の混乱は加速します😅
学習者としての覚え方
そのSessionが指しているのがHTTP SessionかWebアプリのSession機能なのかをまずコンテキストから判断しましょう。それ以外だったら大抵は英単語としてのSessionです。