Hirologue

年齢を理由にエンジニアになることを諦めないミドルの成長記録

EP 1: 身近な例えで学ぶWeb技術の用語

Web開発をガチで学ぶにはWeb技術の基本的な用語について知っておく必要があると思います。 本記事では、学習を進めるにあたってよく耳にするであろうWebまわりの用語を身の回りのシチュエーションで例えてみました。

コンビニなどのお店を想像しよう(リクエストとレスポンス)

あなたは近所を散歩していて、休憩しようとコンビニに立ち寄りました。
カウンターの店員さんが「いらっしゃいませ」と迎えてくれます。
のどが渇いていたので、「ホットコーヒーのSサイズください」と店員さんに伝えました。
店員さんは「ホットコーヒーのSサイズですね。こちらをどうぞ」とホットコーヒーを渡しました。

Webシステムでは、あなたのことを「クライアント(Client)」、店員さんのことを「サーバ(Server)」といいます。
これらの英単語を訳せば、お客さんと給仕人ということですね。
お客さんであるあなたは自分の欲しいものを伝えました。
これが「リクエスト(request)」、ホットコーヒーのSサイズが欲しいという要求を伝えたわけです。
注文を聞いた店員さんが注文の品を渡しました。これが「レスポンス(response)」、受けた注文に応えて、ホットコーヒーのSサイズを渡しています。

したがって、私たちがWebサイトを閲覧するとき、クライアントが「〇〇のサイトが見たい」とリクエストします。そして、それを受けたサーバがレスポンスとして、〇〇のサイトのファイルを探してクライアントへ渡す。といった一連の流れになるわけです。

宅配便を想像してみよう(プロトコルとポート番号)

あなたは運送会社で働く宅配ドライバーです。
お預かりした大切な荷物をお客様の元に届けるには、汚してはいけない、時間の指定があればその時間に届けなければならないなど会社で定めたルールにしたがわなければなりません。会社で決めたルールをキッチリ守って荷物を運び、お届け先のマンションに到着しました。
そこで、お届け先の住所の部屋番号を確認したところ、お届け先は201号室のようです。 あなたはインターホンを鳴らし、住民の方にお預かりした荷物を無事届けることができました。

この運送会社が定めた荷物を運ぶためのルールのことをプロトコル(protocol)といいます。 プロトコルには、Webページを閲覧するためのものやメールの送信など色々な種類があります。
また、荷物のお届け先の201号室のように荷物を受け取る場所のことをポート番号といいます。このポート番号はアプリケーションによって決められる番号です。
Web上でのデータの送受信に関するルールを定めたものとして、HTTP(HyperText Transfer Protocol)があります。このHTTPでは、ポート番号80番を使用することになっています。 このように、アプリケーションによってあらかじめ決められているポートのことを「ウェル・ノウン・ポート(Well Known Ports)といいます。

なじみの店を想像してみよう(ステートフルとステートレス、Cookie

仕事も一段落し、昼食はいつものラーメン屋にしました。
あなたには、こだわりの注文方法があります。
「醤油ラーメン、大盛り、麺硬め、油少なめ、野菜マシ」いつもこれです。
店の大将も「あなた=この注文」の図式が完成しています。なので、注文するときは一言「いつもの」そういえばいいんです。
周りのお客さんは誰もそんな注文の仕方をしていません。私だけでした。
ある日、大将が「お店に私がいなかったら、これを見せて『いつもの』といってください」とあなたに小さなカードを渡しました。
次の日、いつものラーメン屋に行きましたが、大将は不在でした。 早速あなたは大将からもらった小さなカードを出して、「いつもの」と注文したのでした。
そして数分後、いつもどおりのラーメンがあなたの前に運ばれてきました。

あなたはいつもお店で同じ注文なので、大将には「いつもの」で通じていました。このような状態のことをステートフル(stateful)であるといいます。
一方、他のお客さんのように「いつもの」が通じないことをステートレス(stateless)であるといいます。
また、大将をサーバと見立ててみましょう。
大将の立場になって考えてみれば、お昼時に来るすべてのお客さんの注文内容をずっと記憶することは、かなりの高負荷であることは容易に想像できるでしょう。
それなので、Webサイトのようにたくさんの情報をやりとりする場合、すべて覚えていては効率も悪く、処理しきれないので、HTTPはステートレスなプロトコルとなっています。
では、ステートレスなのに、私たちが普段閲覧しているWebページが以前の情報を維持しているのはなぜでしょうか。
そこにはクッキー(Cookieという技術が使われています。ラーメン屋の大将が渡した小さなカードがそのクッキーにあたります。この小さなカードには、「いつもの注文の内容」が書かれていると思ってください。
だから、大将が不在でもこの小さなカードを出して「いつもの」と注文できたのです。
便利ですね。

このようにWeb系の技術は何か問題があって、それを解決するために次の技術が生まれてといった具合に時々刻々と進化しています。新しい技術を学ぼうと思ったら、その背景を知ることも大事なのですね。


IT系の用語は中々イメージを掴みにくいものや概念が難しいものが多い気がします。
でも、このように噛み砕いてしまえば理解しやすくなるのではないでしょうか。
この内容が役に立ったら幸いです。

(ひとりごと)
昔から気になっていたんですが、理科の実験で使う「ビーカ」であったり、前述の「サーバ」みたいに長音記号が省略された表記に違和感があります。今は気にしないでいいようですが、中には気にする方もいるようですね。個人的には相手やチームに合わせればいいんじゃないかなと思います。
うちの会社のある年齢以上の方は「pH」のことを「ペーハー」っていいますし(笑)