Web技術の用語

はじめに

Web技術で頻出する用語について解説します。
本記事では以下の項目を扱います。

  • ステートフル
  • ステートレス
  • リクエス
  • レスポンス
  • クッキー
  • プロトコル
  • ポート番号

また、想定読者は「超初心者で用語のイメージを掴みたい」という方になります。
ちなみに、以下では「クライアント」という用語が説明なしに出てきますが、よくわからない方は「Webサイトに訪問したユーザが使用しているブラウザ」と解釈していただいて構いません。
それではいきましょう。

ステートフル - stateful

一言で表すなら「状態を保持している」という意味になります。
イメージとしては、ECサイトなどでカートに入れた商品が保持されている状況です。
カートに入れた商品が、別のページに行ったり来たりしている間に消えたりすることはないですよね?
それはまさに、「商品をカートに入れた状態」が「保持されている」からです。
これがステートフルです。

ステートレス - stateless

では、その対義語になりそうなステートレスとは何か?
それは「状態を保持しない」です。そのまんまですね。
前回の状態を保持しないので、毎回毎回、情報をハッキリ定義しないといけません。
さっきのECサイトの例を出すと、もしカード情報がステートレスに処理されているとすると、カート内商品の情報が毎回リセットされる、といったことになります。
これでは不便極まりないですが、ステートレスが悪いわけではありません。
用途が違うのです。
ステートレスとは、「無用な状態を保持しない」ということでもあるので、状態を保持する必要のない時に有用です。 例えば、ECサイトのトップ画面は誰が見ても同じですので、トップ画面上の情報だけをやり取りすれば済みます。(※ここではログイン前後で変化する内容は無い、と仮定させてください)
この時、ステートフルだといちいち状態に関する情報までやり取りするので、情報量が無駄に増えてしまいます。
これをカットしてスッキリしたやり取りを実現するのが、ステートレスです。

リクエスト - request

その名の通り、「要求」になります。
よく使われるのは、サーバーに対してクライアント側から要求する時に使われます。
リクエストには、何に対してなのか、どんなことをするのか、といった要求に関する情報が含まれています。

レスポンス - response

リクエストの対義語で、「返答」になります。
こちらもリクエストの逆で、クライアントに対してサーバー側から返答する時によく使われます。
レスポンスには、リクエストに対する返答内容が含まれていますが、そもそも上手くリクエストを処理できたのかといった、エラーに関する情報も含まれています。

Webの世界におけるクッキーとは、サーバー側が作成し、クライアントで保存される小さなファイルを指します。
このファイルがあることで、サーバー側が「あ、このクライアントはログインしているな」といった判別ができるのです。
次項目の内容を先取りしますが、Webサイトなどで使用される通信はHTTP(もしくはHTTPS)という規約(プロトコル)に従って行われているのですが、これらはステートレスなプロトコルになります。
なので、そのままだとステートフルな機能を実現できません。
なぜならサーバー側がクライアントを識別できないからですね。
サーバーがどのクライアントかを識別するために、クライアント側にクッキーというファイルを持たせているのです。

プロトコル - protocol

前項目で出てきましたが、「通信の規約(取り決め)」を意味します。
これだけでは意味がわかりづらいかもしれないので、荷物(郵便物)を発送する時に例えてみます。

もしあなたの荷物が、定形郵便物に該当し、郵便局から送る場合を考えてみます。
その時の決まりは、封筒に入れ、宛名と住所を書き、84円切手を貼って送りますよね?
これが定形郵便物を発送する時の「プロトコル(取り決め)」になります。

さらに、その荷物がただ送付先のポストに投函されるだけでなく、本人にちゃんと受け取って欲しいのであれば、書留料金を追加で支払うことになるでしょう。
これは定形郵便物を書留郵便で発送する時の「プロトコル」になります。

これと同様なことがWebの世界にもあります。
メールを送る時、ファイルをやり取りする時、など様々な用途ごとにプロトコルが存在しています。
先述のHTTPやHTTPSプロトコルの一種で、Webサイトを閲覧する時に主に使用されます。

ポート番号 - port number

最後はポート番号です。
これは通信を行う際の機器の接続口を示す番号、になります。
クライアントからサーバーに接続する時、サーバーが1台だったとしても、接続口は複数存在します。
その番号は先述のプロトコルごとに決まっています。
例えば、HTTPでは80番、HTTPSでは443番、といった具合です。
これらを決めてあげることで、通信を受けとった機器は、どういった通信を行うのかが分別でき、適切に処理することができます。

まとめ

上記項目について、私の理解の範囲内で説明しました。いずれもWeb界隈では当然のように出てきますので、「Apple」と聞いたら「りんご」と脳内で自動変換されるよう、理解しておきたいものです。もしご指摘等ございましたら、ぜひコメントで教えていただけると勉強になります。