クライアントサーバモデルとは?身近な例でわかりやすく解説!

6 min 2,209 views

スマートフォンでアプリを開いたとき、あなたは今まで知らなかった仕組みの恩恵を受けています。

その仕組みとは「クライアントサーバモデル」。

一見難しそうに聞こえるこの言葉、実は私たちの日常生活に深く関わっているんです。

今日は、難しい専門用語を横に置いて、身近な例を通じて、誰もがわかるクライアントサーバモデルの世界へご案内します。

インターネットやスマートフォンアプリがどのように動いているのか、まるで魔法のように感じていた仕組みの秘密、ここで明らかにします!

そして最後に、この2つが機械の種類を指す言葉ではないことを、Webのやりとりを定めた仕様書の言葉で確かめます。

クライアントサーバモデルとは?

レストランのテーブルでメニューを開く2人と、そばに立つ店員のイラスト(クライアントサーバモデルとは?の節の扉絵)

クライアントサーバモデルは、サービスを提供する側(サーバ)と、サービスを利用する側(クライアント)に役割を分ける仕組みです。

  • サーバ
    情報やサービスを提供する側
  • クライアント
    サーバに情報を要求する側

ここで「側」と書いたのには理由があります。クライアントとサーバは、機械の種類ではなく役割の名前です。この記事の後半で、同じ1台が両方の役をこなす例を紹介します。

例えば、レストランを想像してください。

  • サーバ
    料理を作る人、料理を提供する人
  • クライアント
    料理を注文する人、料理を食べる人

クライアント(お客さん)は、サーバ(料理人)に「〇〇料理を食べたい」と注文します。

サーバ(料理人)は、注文に応じて料理を作り、クライアント(お客さん)に提供します。

クライアントサーバモデルの仕組み

立ち並ぶサーバの機器と、その前でメールの画面を見ている人のイラスト(仕組みの節の扉絵)

クライアントサーバモデルでは、クライアントとサーバはネットワークを通じて通信します。

動作の流れは次の通りです。

  1. STEP

    リクエストの送信

    ユーザーがアプリやウェブサイトで何かをしたいと操作すると、クライアントはサーバに「~したい」というリクエストを送ります。

  2. STEP

    処理

    サーバはリクエストを受け取り、必要な処理を行います。

    例えば、SNSにログインする場合、サーバはあなたのアカウント情報を確認します。

  3. STEP

    レスポンスの返信

    処理が完了すると、サーバは結果をクライアントに返送します。

    ログインが成功すれば、あなたのFacebookのホーム画面が表示されます。

この仕組みによって、私たちは様々なサービスをスムーズに利用できます。

クライアントサーバモデルのメリット・デメリット

クライアントサーバモデルには、以下のようなメリット・デメリットがあります。

メリット
  • 効率的な情報管理ができる
  • セキュリティ対策を1か所にまとめられる
  • 処理の分散ができる
デメリット
  • サーバへ依存してしまう
  • 構築・運用コストがかかる
  • ネットワーク負荷が高くなる

効率的な情報管理ができる

サーバで情報を一元管理するため、情報の更新や管理がしやすいです。

会社の共有フォルダを思い浮かべると分かりやすいでしょう。資料をサーバに1つ置いておけば、直したときに全員の手元が同時に新しくなります。もし各自のパソコンにコピーを配っていたら、誰の手元が最新なのか、誰にも分からなくなります

置き場所が1つに決まっていることが、この仕組みのいちばんの利点です。

セキュリティ対策を1か所にまとめられる

大事なデータがサーバに集まっているので、対策もサーバ側にまとめられます。パソコン1台ずつに同じ設定をして回るより、確実で手間もかかりません。

ただし、これは「安全になる」という意味ではありません。1か所にまとめられるということは、そこが破られたときの被害も1か所に集まるということです。利用者が自分のパソコンをいくら守っても、預けた先で起きたことは防げません。

利用する側にできることは、預ける先を選ぶことと、自分のアカウントを守ることです。

処理の分散ができる

サーバとクライアントで処理を分担することで、負荷を分散できます。

手元の機械が非力でも使えるのは、このおかげです。スマートフォンで地図を動かしたり、翻訳をかけたりするとき、重い処理をサーバ側がやっている場合があります。手元は結果を受け取って表示するだけで済みます。

そう作られている場合、その処理は手元では動いていません。通信できないところへ行くと使えなくなるアプリがあるのは、これが理由です。逆に、電波が無くても動くアプリは、手元だけで処理をしていることになります。

サーバへ依存してしまう

サーバが停止すると、クライアントはサービスを利用できなくなります。

やっかいなのは、手元のパソコンは何ともないのに、何もできなくなることです。画面は動くし、他のサイトは見られる。それなのに目当てのサービスだけが開かない——このとき、直せる場所は自分の手元にはありません。

できるのは、自分側の問題かどうかを切り分けて、そうでないと分かったら待つことです。そのサービスの障害情報を見に行くのが最初の一手になります。

構築・運用コストがかかる

サーバの構築や運用には、コストがかかります。

かかるのは買うときのお金だけではありません。置き場所、電気、故障したときの交換、ソフトの更新——動かし続けるほうに手間と費用がかかります。しかも止まると全員が困るので、放っておけません。

この負担を自分で持たずに、外の事業者から借りる形にしたのがクラウドです。社内にサーバを置くか、借りるかは、この費用と手間をどちらが持つかの選択になります。

ネットワーク負荷が高くなる

クライアントとサーバ間の通信量が増えると、ネットワークに負荷がかかります。

手元で処理しないということは、やりとりのたびに線を通るということです。使う人が増えれば、その線に同時に入る量も増えます。

会社で決まった時間だけ動きが鈍くなる、といった症状は、混み具合を疑ってみる価値があります。

クライアントサーバモデルの身近な例

大きなスマートフォンの画面とグラフを2人で組み立てているイラスト(身近な例の節の扉絵)

クライアントサーバモデルは、私たちの身近なところでたくさん使われています。

例えば次のようなものがあります。

  • Webサイトの閲覧
  • メールの送受信
  • スマホアプリの利用
  • オンラインゲーム

Webサイトの閲覧

Webブラウザ(クライアント)は、WebサーバにWebページを要求し、表示します。

アドレスバーに入れた文字が、この要求の宛先です。返ってきた部品をブラウザが組み立てたものが、いま見ている画面です。

このやりとりの決まりを HTTP といいます。記事の最後で、その仕様書がクライアントとサーバをどう定めているかを見ます。

メールの送受信

メールソフト(クライアント)は、メールサーバにメールを送信したり、受信したりします。

ここで知っておくと役に立つのは、送るときと受け取るときで、頼む相手も頼み方も違うことです。送るときは自分の契約先のメールサーバに「これを届けてください」と渡し、受け取るときは同じサーバに「届いていますか」と聞きに行きます。

だから送れるのに受け取れない、あるいはその逆が起こります。片方だけ動かないときは、機械が壊れたのではなく、片方の頼み事だけが通っていないと考えてください。

スマホアプリの利用

スマホアプリ(クライアント)は、アプリサーバに情報を要求し、様々な機能を利用します。

画面の枠はアプリの中にありますが、中身は開くたびにサーバから取っています。電波の届かない場所でアプリを開くと、枠だけ出て中身が空になることがあるのはこのためです。

あの状態は、アプリが壊れたのではありません。要求の返事が来ていないだけです。

オンラインゲーム

ゲーム機(クライアント)は、ゲームサーバに接続し、他のプレイヤーと対戦します。

対戦の判定や持ち物の中身は、サーバ側が持っている場合があります(作りはゲームによって違います)。手元の機械だけで結果が決まっているわけではありません。

そう作られている場合、手元の通信が一瞬途切れると自分だけ動けなくなったり、少し前の位置まで戻されたりします。それでも持ち物が消えないのは、記録が手元ではない場所にあるからです。

クライアントとサーバは、機械ではなく役割

「サーバ」と聞くと、データセンターに並んだ黒い機械を思い浮かべるかもしれません。ですが、この言葉が指しているのは機械の種類ではありません

Webのやりとりを決めている HTTP の仕様書は、この2つの言葉をこう定めています。

HTTP の「クライアント」とは、1つ以上の HTTP 要求を送る目的でサーバへの接続を確立するプログラムである。HTTP の「サーバ」とは、HTTP 応答を送ることで HTTP 要求に応じるために接続を受け入れるプログラムである。

クライアントおよびサーバという用語は、これらのプログラムが特定の接続において果たす役割のみを指す。同じプログラムが、ある接続ではクライアントとして、別の接続ではサーバとして動作することがある。

後半の原文は「The terms client and server refer only to the roles that these programs perform for a particular connection. The same program might act as a client on some connections and a server on others.」(RFC 9110 §3.3・2022年6月/2026年8月17日確認)。訳は当サイトによるものです。

読み取れることが3つあります。

仕様書が言っていること
  • 呼び分けているのはプログラムであって、機械ではない
  • その名前が有効なのは、ひとつの接続のあいだだけ
  • 同じプログラムが、接続が変われば逆の役になる

3つ目は、たとえば通信を中継するプログラムに当てはまります。受け取るときはサーバとして振る舞い、その先へ渡すときはクライアントとして振る舞う——同じプログラムのまま、接続ごとに役が変わります。

機械の側で言えば、もっと身近な例があります。会社で自分のパソコンのフォルダを共有に設定すると、同僚から見れば、そのパソコンはサーバです。その同じパソコンでブラウザを開けば、こんどはクライアントとして動いています。1台が両方の役を、同時にこなしています。

同僚のパソコンから自分のパソコンへ、自分のパソコンからWebサーバへ矢印が向かっている図。中央の自分のパソコンに「同僚から見ればサーバ」「Webサーバから見ればクライアント」と書かれている

この記事のはじめに「サーバ=提供する」と書いたのは、そういう意味です。役割を分ける仕組みであって、機械を2種類に分ける仕組みではありません。

なお、いま引いたのはHTTP という取り決めの仕様書で、クライアントサーバモデル全体の定義書ではありません。ただ、Webの世界の当事者がこう書いているという事実は、この言葉の性質をよく表しています。

まとめ

この記事では、クライアントサーバモデルの基本的な仕組みやメリット・デメリット、身近な例を紹介しました。

クライアントサーバモデルは、情報やサービスを提供する側(サーバ)と、利用する側(クライアント)に役割を分ける仕組みです。Webのやりとりを定めた HTTP の仕様書は、この2つを「その接続で果たす役割」と定義しています——つまり機械の種類ではありません。同じ1台が、つなぐ向きによって両方の役をこなします。

便利さも不便さも、この「1か所に集める」という形から来ています。まとめてあるから管理しやすく、まとめてあるからそこが止まると全員が止まる。表と裏は同じことの言い換えです。

ぜひ、身の回りのクライアントサーバモデルを探してみてください。使っているアプリが通信できないところでどうなるかを試すと、どこまでを手元がやっているのかが見えてきます。

参考: クライアントサーバモデル – Wikipedia

関連記事