ことれいのもり

クライアントとサーバーの立場は「役割」で変わる話

はじめに

Webアプリを作っていると「クライアント」「サーバー」という言葉をよく聞きます。

私の中でこの言葉の意味が曖昧になっていたので、調べてまとめました。

クライアント・サーバーとは?

クライアント・サーバーというのは、やりとりをする関係の中の立場を表す言葉です。


サーバー: データなどを提供する側

クライアント: データなどを受け取って利用する側


ポイントは、あくまで立場を表すだけという部分です。

ある状況においてはクライアント、ある状況においてはサーバー、とどちらにもなりうる可能性があります。

レストランを例に考える

レストランで考えてみましょう。


【パターン1】

客(クライアント): 料理を注文して受け取る

ウェイター(サーバー): 注文された料理を客に出す


客がクライアント、ウェイターがサーバーです。

クライアントは受け取る側、この例だと料理を受け取る立場です。 サーバーは提供する側、この例だと料理を提供する立場です。

しかし、ウェイターがクライアントになるパターンもあります。


【パターン2】

ウェイター(クライアント): キッチンに伝え、できた料理を受け取る

キッチン(サーバー):料理を作る人


キッチン、ウェイターという二人に絞って見た場合、ウェイターがクライアント、キッチンがサーバーになります。

ウェイターは受け取る側、この例だとキッチンで作った料理を受け取る立場です。

キッチンは提供する側、この例だと料理を作って提供する立場です。


どこを中心として見るか?で、クライアント・サーバーの立場が変わることが分かると思います。

今は例としてレストランで取り上げましたが、Webの世界でも同じです。

誰と誰がやりとりをしているのか?が決まれば、その中でクライアント・サーバーという立場が決まるだけです。

Webの世界でクライアント・サーバーを考える

ではWebの世界で考えてみましょう。

ブラウザとサーバー

一般的にイメージされるのがブラウザとサーバーです。

ブラウザとサーバーの関係


Webブラウザ(クライアント): Webブラウザ。Chrome,Firefox, Safariなど

Webサーバー(サーバー): Webブラウザから要求があったページを返す


①GoogleChromeなどで検索してページを見たいとき、該当するページが見たいとブラウザがクライアントに要求をします。(リクエスト)

②Webサーバーは要求内容を解析し、処理をしてページを準備します。

③Webサーバーはクライアントに該当するページを返却します。(レスポンス)


これはイメージしやすいと思います。

ただ、先ほども話したようにクライアント・サーバーは立場によって変わります。

Webサーバーもクライアントになり得る場合があるのです。

サーバーとデータベース

Webサーバーがクライアントになる例を見てみましょう。

サーバーとデータベースの関係


Webサーバー(クライアント): ページを表示するために必要な情報を要求する

データベース(サーバー): 要求に応じたデータを返す


例えばショッピングサイトで商品を見たい時をイメージしてください。

①Webサーバーがデータベースに対して「商品データをください」と要求をします。(リクエスト)

②データベースは受け取った内容から、商品名や価格など必要な情報を準備します。

③データベースは必要な情報を返却します。(レスポンス)


Webサーバー・データベースという2つの世界で見れば、Webサーバーがクライアントでデータベースがサーバーです。

まとめると

ブラウザも一緒に表示すると次のようになります。

ブラウザとサーバーとデータベースの関係


【WebブラウザとWebサーバーの世界】

Webブラウザ:クライアント

Webサーバー:サーバー


【Webサーバーとデータベースの世界】

Webサーバー:クライアント

データベース:サーバー


立場によってクライアント・サーバーが変わるという意味が分かるかと思います。

クライアントが受け取る側で、 サーバーが提供する側ということを覚えておけば、あとは立場によって自動的に決まります。

おわりに

クライアント・サーバーが立場によって変わるということを解説しました。

私自身、今まではクライアントがWebブラウザで、サーバーがWebサーバーという不変のものと思っていました。

一つの例を知るのではなく、核となる意味を知ることが大事ですね!