【初学者向け】Web技術入門用語 解説８選

## はじめに
プログラミングの勉強にいざ手を着け始めたはいいものの、聞き慣れない言葉、見慣れない用語に戸惑い、うんざりしてしまうことってありますよね…。

なかなかピンとこない言葉も多いWebの基礎知識部分ですが、「**知っているようで実は知らない…**」「**何度か目にしたことはあるけど、実際の意味はわからない**」と思われるものを、今回ピックアップして挙げさせていただきました。

Web知識入門へのはじめの一歩として、ご活用いただけますと幸いです。

## ステートフルとプロトコル
そもそもステートフル（stateful）とはどういう意味でしょう？

ステートフルは日本語に訳すと「**状態を持つ**」といったところでしょうか。
つまり、状態を持ったプロトコル、という意味です。

またプロトコル（protocol）は、主に**通信プロトコル**を短くした言い方です。
通信プロトコルは、コンピュータやネットワーク機器同士が情報をやり取りする際のルールや手順、決まり事、取り決めを意味しています。

つまり「**ステートフル・プロトコル（Stateful Protocol）**」とは、「**状態を持つルール/状態を持つ取り決め**」のことなのです。


#### ではなぜ「状態を持つ」プロトコルが必要なのか？

通常、情報やデータを送るときは、それぞれの部分が別々に処理されます。

しかし、一部のWebアプリケーションでは、複数の要求や応答が連続して行われるため、前のやりとりの状態を覚えておかなければなりません。

たとえば、ネット上のショッピングサイトで商品をカートに入れ、会計（チェックアウト）をする場合を考えてみましょう。

欲しい物があり、商品を選択してカートに入れ、いざ会計（チェックアウト）を済ませようとしたところ、カートの中身が空っぽになっている……。

これでは商品の購入もままならず、不便で困ってしまいますよね。


こうした場合にステートフル・プロトコルを使用すると、サーバーはカートに追加された商品やお客様の情報を覚えておくことができます。

そのため、ログインしているユーザーが商品の追加や会計（チェックアウト）をしようと操作した場合にも、そうした要求に難なく対応することが可能になるのです。

つまり、私達がネットでお買い物をしているときも、ステートフル・プロトコルのお世話になっていたというわけです。

## ステートレスなプロトコル
また、ステートフル・プロトコルの反対、つまり「**状態を持たないプロトコル**」というのもあります。
それが **ステートレス・プロトコル（Stateless Protocol）** です。

むしろ、インターネットの通信やWebアプリケーションにおいては、ステートレス・プロトコルの方がより一般的に使用されているくらいです。

とくに、ウェブブラウザとウェブサーバー間の通信に広く使用されているHTTP（Hypertext Transfer Protocol）は、最も一般的なステートレス・プロトコルの例といえます。


ウェブブラウザからの各リクエストは、セッション情報や状態情報を持たず、単一の要求としてサーバーに送信されます。


たとえばGoogleなどで何か気になることについて検索をかけた場面を想像してみてください。

検索の結果は、その前に何を調べたかを反映しているため、その時々で検索結果が変わる……なんてことはありませんよね？

通常、サーバはその要求に対して適切な応答を返し、それ以前の要求（この場合は検索）と以降の要求とは関連性を持ちません。

ステートレス・プロトコルの利点は、サーバ側で情報を保持しておく必要がないため、サーバ側での処理が簡単かつ負荷も少なくなる点です。

結果としてウェブサイトの表示の遅延やエラーの発生なども少なくでき、利用するユーザーが増えてもサーバはスムーズに対応できるので、ウェブサイトやWebアプリケーションをよりたくさんの人に提供することが可能となるのです。

## リクエストとレスポンス
リクエスト（Request）は、**クライアントがサーバに対して行う要求や、要求の内容**のことを指します。

クライアントが「必要だ、ほしい、ちょうだい！」と求めることを**リクエスト**、それに対してサーバが「はいどうぞ！」と要求に返答や応答することを **レスポンス（Response）** といいます。

先ほどの検索を例に挙げますと、みかんという果物について調べたくなり、検索画面で「みかん」と文字を打ち込み検索をかけた場合は、「みかん」にまつわる情報を**クライアントがサーバにリクエストした**ことになります。

検索ボタンをポチッと押すと、「みかん」についての検索結果がバッと表示されますよね？

これは、「みかん」というリクエストに対して、サーバが「これが検索の結果です！」と返答をしたということ、つまり、「みかん」について**サーバがクライアントへレスポンスした**ということになるわけです。

## クッキー
先ほどご説明したHTTPはステートレスだというお話をしました。
ステートレスなプロトコルであるためサーバの負荷や負担を軽くし、いわゆる「サクサク動く」を実現したわけです。

ですが、HTTPがステートレス・プロトコルであるがゆえに困った事態も起きてきました。
それは「ログイン状態を保つ」などの状態の保持ができないことでした。

IDとパスワードを入力してログインしたのに、次のページに移ったらまたログアウトしてしまっていた……となっては、不便でなりません。

そこで考えられたのが「**クッキー（cookie）**」という技術です。

クッキーはHTTPの仕様を拡張し、WebアプリケーションとWebブラウザの間で情報を交換できるようにしたもので、一時的にデータを保存するための小さなテキストファイルのことを指します。

テキストファイルは理解しやすく「メモ」と言い換えてもいいでしょう。

そのテキストファイル（メモ）は、一時的ではありますが、当日チケットのような役割を果たします。

たとえば、あなたがある夢の国にある遊園地に遊びに行って、一度園から退園したけれど、また遊びたくなって戻ってきたとします。

そのときに持っていた当日チケットを差し出すと「当日分の料金をすでに支払った方の再入園ですね」と係の人に確認してもらえて、再度を再度支払わなくても入園させてもらうことができます。


クッキーはこの場合のチケットと似たような働きをします。


クッキーというメモのなかには、ログイン情報やカートの内容の情報、使っているひとの言語の選択、フォームの入力履歴、ウェブサイトの利用履歴などなど、そのウェブサイトを使う人が快適に利用するために必要な情報が書きこまれています。

それによって、ステートレスなプロトコルであるHTTP上でも、一定期間中であれば、何度も再ログインを求められたり、カートの中身を忘れられてしまうことなく、快適に利用することができるようになるのです。

## ポートとポート番号
ポート（port）とは英語で「港」を意味しますが、コンピュータやネットワークの世界では、ポートは「データが出入りするための専用の港や入り口、通路」のことを指します。
トンネルと考えても分かりやすいかもしれません。

コンピュータはたくさんの通路（ポート）を持っていて、それぞれには見分けがつくように専用の番号がついています。

そしてデータをやり取りする際は、たくさんある中のどれかの通路（ポート）の入り口を通ってきた情報を受け取ったり、または通路（ポート）を通して相手に情報を送ったりするわけです。

例を挙げれば、あなたがウェブブラウザを使ってインターネットのウェブサイトにアクセスするとき、ウェブサイトのデータは特定の通路（ポート）を通ってあなたのもとにやってきます。
ウェブサイトとのやりとりはその通路（ポート）を通じて行われるのです。

また、それぞれの通路（ポート）には番号があり、データをやりとりする際、データの送信元のコンピュータとデータの宛先のコンピュータがお互いを見つけるのにも役立ちます。
特定の番号の通路（ポート）を使うことで、特定の種類の通信やプログラムとつながることが可能となるのです。

ポート番号はその場所を特定するためにつけられた番号で、正しい通路（ポート）を通してデータを送ることで、データが正しく相手のもとに届く仕組みとなっています。

なお、データの種類によってはどの通路を通るかあらかじめ決まっているものもあります。

例えば、インターネットのデータは80番の通路を通る、などと前もって決められているのです。

しかし、すべてのデータがどの何番の通路を通るかが決まっているわけではありません。

むしろ、どの通路を使ってもいいけど、使う人が多いデータの種類があるのなら、その種類はこの通路を使ったほうが利便性が高いよね、ということであらかじめ通路が決められているものもあるのです。

## おわりに
今回は、なかなかピンとこないWebの基礎知識部分の初歩の初歩にあたる用語を簡単にご説明させていただきました。

なんとなくイメージを掴んでいただくことはできましたでしょうか？

引き続き、こうした知識を深く、また体系立てて学びたい方は、下記書籍やサイトもオススメです。

▼参考書籍『プロになるためのWeb技術入門』サポートサイト

https://www.littleforest.jp/webtext/

▼参考サイト
[「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典](https://wa3.i-3-i.info/index.html "「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典")


ぜひ上記サイトにもアクセスし、学習を進めてみてください。

本記事が、Web知識を学ぶどなたかのお役に立つことができましたら幸いです。