ふわっと理解しがちな「サーバー」をどこまでも分かりやすく説明して本質を掴む(非エンジニア向け)

「サーバー」って、IT用語ではありますがそれ以外の人もしばしば見聞きするのではないでしょうか?

・「プロキシサーバーが応答していません」(ネットの接続設定でよく見る)
・「海外のサーバーを経由して、、」(ドラマでよく見る)
・サーバーが止まってる(IT業界でよく見る)

筆者も「サーバー」をしっかり理解できたのはおそらくプログラミングの勉強を始めてからですし、言語化して人に説明できるようになったのはエンジニアになってからかもしれません。

そんなこともあり、「サーバーの説明って割と需要あるのでは?」と思い執筆しました。
※非エンジニアでも分かるように書いていますので、プログラミング初学者など既に知識ある方は読み飛ばすところもあるかもしれませんがご了承ください。

(本題の前に)まずは、サイトに「アクセスする」という考え方をやめる

日常会話でも「サイトにアクセスする」という言葉はよく使われますし、あなたがマーケティング担当であれば「サイトの訪問者を集計する」という言葉を耳にすることも多いかもしれません。

しかし「アクセスする」「訪問する」という考え方は、情報技術を理解するのを難しくしてしまうのではないかと考えました。

ちょっと大袈裟ですが、この考え方をやめてみることが情報技術のコツを掴む上での第一歩だと思います。

ITはキャッチボール

大枠のイメージとして、情報のやりとりは配達ではなくキャッチボールです。

ボール=データ=情報は投げるものであり、郵便屋さんがポストに行くように、「何かが動いてデータを取りに行く」ということはありません。

コンピュータは動かない。データを投げることでのみやりとりしている。

「当たり前じゃん!」「些細な違いなのでは?」と感じるかもしれませんが、ITのイメージを掴む上では重要なことなので最初に述べておきます。

「Webサイトにアクセス(訪問)する」というのは、正確にはWebブラウザ(SafariとかChrome)が「〇〇のWebサイトの画面情報をください」という依頼(リクエスト)を送信し、そのWebサイトからの返答(レスポンス)として画面情報が返ってくるのです。

アクセス(訪問)はしていない。データ(ボール)を投げ合うことでやりとり(通信)している。


すべてはリクエストとレスポンスでできている

そしてコンピュータの世界では、すべてのやりとりはリクエストとレスポンスでできています。
なぜなら、コンピュータは人間と違って「(誰に依頼されるわけでもなく)自発的に行動する」というようなことはあり得ないからです。

どんなに自発的に動いているように見えても、元を辿ると人間がそのように指示(プログラム)しているのです。

URLを入力してからWebサイトを閲覧するまで

では、URLを入力してからWebサイトを閲覧するまでにどのようなキャッチボールが行われているのでしょうか?

リクエスト/レスポンスによって私たちがWebサイトが閲覧するまでの流れを見ていきましょう。
今回は例としてAmazonのサイトがブラウザに表示されるまでを解説します。


人間がマウスやキーボードを使い、WebブラウザにAmazonのURLを入力して送信します。(操作的にはURL入力ではなく、Amazonのリンクやブックマークをクリックしたりするかもしれませんが、これらも内部的にはすべてURLを送信するというアクションに集約されています)


人間からのマウスやキーボード操作によって「Amazonのサイトを見せて」というリクエストを受けたブラウザアプリは、そのURLをもとにAmazonのアプリケーションに同じ要求(リクエスト)をします。


URL付きのリクエストを受け取ったAmazonのアプリケーションは、そのURLに相当する画面情報をブラウザに返却(レスポンス)します。
このとき、画面情報はHTMLという言語で書かれていることが多いです。


Amazonから受け取った画面情報は主にHTMLという言語で構成されていますが、そのイメージは以下のような文字列であり、人間の見やすいものではありません。

HTML自体は人間にとって見やすくない

このHTMLを簡単に解説すると以下のようになります。

  • 「h1」というのは大見出しを表すタグで、「h1タグに囲まれた文字は大きく表示するように」というメッセージです。

  • 「p」タグは標準のテキストですが、その中のstyleプロパティ(color:red;)につけることよって「このタグに囲まれた文字は赤くして。」というメッセージになります。

ブラウザがHTMLの情報をもとに、人間にとって見やすいグラフィックな画面を生成している

これをブラウザが読み取り、人間にとって見やすいグラフィックな画面に変換することで、私たちは綺麗なWebサイトを見ることができています。

AmazonのWebサイトトップページ(https://www.amazon.co.jp/)


「サーバー」をどこよりも分かりやすく解説

やっと本題ですが、リクエストする側のコンピュータを「クライアント=Client=顧客」、レスポンスする側のコンピュータを「サーバー」といいます。

※Amazonはアプリケーションを提供するので正式には「アプリケーションサーバー」と呼ばれます。

サーバー(Server)とはServe(提供する)+er(人・もの)なので、直訳すると「提供者」です。
IT業界では本当に色々な文脈で使われますが、実はそれ以上の意味はありません。大抵は「何を提供するのか」(提供される対象物=Service)が省略されているだけです。

ITの世界でただ「サーバー」と言う場合、大抵は上の図でいう「アプリケーションサーバー」を指しています。
「サーバーが止まってる!」というのは②でリクエストを送ったのにアプリケーションが停止しているので③が返ってこないことを言います。

サーバーとは役割の名前でしかない

サーバーというと以下のようなイメージを持つ人が多いですが、サーバーはあくまで役割の名前なので、半分正解で半分不正解です。

よくあるサーバーのイメージ

例えば価格比較サイトをイメージしてください。
ブラウザからは「画面情報をください」というリクエストを受け付けている点でサーバーですが、楽天市場やAmazonには「価格情報をください」というリクエストを送る側なのでクライアントでもあります。

人間の世界でも、例えば居酒屋店員は常に「提供する側(サーバー)」ではありません。
仕事が終わってコンビニに寄ればその人はコンビニのクライアントですし、仕事中であってもビールメーカーや卸売業者からすればクライアントです。
(ビールサーバー)

コンピュータも人間社会と同じように、時間帯や処理の内容によって提供する側/される側のどちらにもなり得ます。

コンピュータも人間社会も、時と場合によって提供する側/される側のどちらになることもある。


クライアントもサーバーも、同じコンピュータ

そして意外だと思いますが、私たちが日頃使うパソコンも、いわゆる「サーバー」も、どちらも同じ「コンピュータ」であり、中の構成要素は基本的に全く同じです。

どちらも同じコンピュータであり、基本の内部構成は全く同じ

ただ違うのは、右側のコンピュータは左側のパソコンと違い人間が普段使いする必要がないということです。
そのため、人間の使いやすさに必要な液晶パネルやキーボードを削って、その分を処理能力に割り振っているだけの話です。

今後あなたが「サーバー」という言葉に出会ったら

・何を提供しているのか?
・誰にとっての「サーバー」か?

ということを考えてみると、今よりも解像度が上がると思います。
少しでも「サーバー」の理解に役立てれば幸いです。

いいなと思ったら応援しよう!