エンジニアの知識

クライアントサイドとサーバーサイドの違いとは?

近年、Web技術が企業システムに急速に浸透してきています。クライアントにWebブラウザを利用することは、今や当たり前の選択肢になってきました。

今回は「Webシステム」及び、「クライアントサーバーシステム(以後:C/S)」における「クライアントサイド」と「サーバーサイド」とは何かについて解説していきます。

この記事でわかること

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

Webシステムとは?

WEBシステムはWEB技術を活用したクライアント・サーバー

「WEBシステム(Web System)」とは、主にWEB技術をベースとして構築された「3階層」or 「3階層アーキテクチャ」システムを指しています。

3階層アーキテクチャシステムの概念図

3層アーキテクチャはクライアントサーバシステムの概念のうちの1つです。

Webシステムを支える技術

  • WEBサーバー(サーバーサイド)
  • WEBブラウザ(クライアントサイド)
  • 各種通信プロトコル

クライアントサイドとは?(Webシステム編)

WEBシステムにおけるクライアントサイドとは、クライアント側のWEBブラウザ、および「WEBブラウザで動作する処理」のことです。

WEBシステムが対象とするのはブラウザですので、以下のような処理が行えます。

  • HTMLの解析と表示
  • 各種画像/音声/動画の取得と表示
  • CSSを用いたレイアウト調整
  • クッキーほか、ローカルストレージ(LocalStorage / WebStorage)の取得と保存
  • JavaScript等を用いたインタラクティブな処理

クライアントサイドプログラムとは?

クライアントサイドプログラム」とは、利用者からのリクエストに対し、その結果をWebサーバから自身のマシンへダウンロードして、利用者側の パソコンやスマートフォン上で実行するプログラムを指します。

クライアントサイドの言語としては、HTML、CSS、Javascript、Reactなどが該当します。

サーバーサイドとは?(Webシステム編)

WEBシステムにおけるサーバーサイドとは、下記のサーバーなどから構築されたコンピュータ、およびそれらでおこなわれる処理のことを指します。

  • WEBサーバー
  • DBサーバー
  • APサーバー
  • メディアサーバー
  • etc

これらは最終的に「WEBサイトとして動作すること」が目的となります。

サーバーサイドプログラムとは?

サーバーサイドプログラム」とは、「クライアントサイドプログラム」 とは反対に、サーバー側で実行されるプログラムを指します。

サーバーサイドの言語としては、JavaやPHP、Python、Perl、Rubyなどが該当します。

WEBシステムの利点

WEBシステムはクライアント・サーバーの利点を踏襲し、多くの欠点を補う

WEBシステムは、クライアント・サーバーの欠点を多く補完するため、さまざまな利点があります。

Webシステムの利点

  • 構造的にはC/Sシステムと同じである
  • クライアント側に特別なソフトウェアのインストールが不要である
  • 特別な端末を用意する必要がなくコストダウンに繋がる

まず、構造的にはWEBシステムはクライアント・サーバーであるため、内部の処理自体は従来培ってきたノウハウがそのまま通用します。
また、クライアント・サーバーで問題となった、「クライアント側へのソフトウェアインストールが不要」という利点もあります。

そして、端末もブラウザが動けばよいので、一般流通している安価なパソコンやスマートホン、タブレット端末で事足ります。

WEBシステムの欠点

WEBシステムにも欠点あり。でも既存技術をうまく使うことで欠点は縮小化する

対して、WEBシステムにも欠点があります。

WEBシステムの欠点

  • セキュリティ確保の問題は相変わらず存在する
  • ブラウザやOSの依存が往々にしてある

まず、セキュリティ対策については、クライアント・サーバーであっても、WEBシステムであっても往々にして問題になります。

加えて、ブラウザは現在、玉石混交の様相を呈しており、各ブラウザによっては動作・挙動に差異があります。

ただこれらの欠点は、「既存技術の有効活用」によって、問題を縮小化できることが多々あります。

・OSやブラウザを限定する、
・既製品のセキュリティ対策ソフトやHTTPSの導入
・ブラウザ間の互換性を吸収するフレームワーク等の導入

C/S(Clinet Server)システムとは?

クライアント・サーバーは、クライアント(要求側)とサーバー(処理側)に分けて負荷分散を行う

クライアント・サーバー・システム」(Client Server System)とは、ネットワークを用いた処理分散(処理を振り分けて分離すること)の概念です。

一連の処理を「要求側」(Client/クライアント)と、「処理側」(Server/サーバー)に分けて実行し、負荷を分散します。

別名「クライアント・サーバー・モデル」(Client Server Model)や、単にクライアント・サーバーともいいます。

クライアントサイドとは?(C/Sシステム編)

クライアントサイドとは、利用者側の端末や処理のこと

クライアントサイド」(Client Side)とは主に、下記を示す用語を指しています。

クライアントサイド

  • 処理要求側のコンピュータ自体
  • クライアント側で要求する処理
  • クライアント側で処理する内容

私達に最も近い位置にあるコンピュータが担当します。

サーバーサイドとは?(C/Sシステム編)

サーバーサイドは、実際に処理を行う側の端末や、その端末での処理のこと

「サーバーサイド」(Server Side)とは主に、下記を示す用語を指しています。

サーバーサイド

  • 処理実行側のコンピュータ自体を指す
  • クライアント側から要求されておこなう処理を指す
  • 自発的に処理し、クライアント側で利用される内容を指す

なお、サーバー・コンピュータは物理的に私達の遠くにある場合もあれば、クライアント・コンピュータとサーバー・コンピュータが一体化していることもあります。

したがって、クライアントサイドやサーバーサイドとは、「距離ではなく概念である」ということを、間違えないようにしましょう。

クライアント・サーバーの利点

クライアント・サーバーの利点欠点を正しく把握しよう

クライアント・サーバーには利点と欠点があります。

クライアント・サーバーの利点

  • 負荷分散に向いている
  • 習熟したモデルである
  • クライアントサイドとサーバーサイドで別のプログラムを用いる

まず、当たり前ながらクライアントとサーバーで処理を分けるため、負荷分散ができます。そのため大規模なシステムを構築できます
そしてクライアント・サーバーはインターネットの発達とともに発展しており、非常に習熟したモデルといえます。

加えて、クライアントとサーバーが分離しているため、それらは別々のプログラムに分かれています
そのため、一方だけに見つかった不具合の場合、修正自体は容易といえます。

クライアント・サーバーの欠点

クライアント・サーバーには明確な欠点がある

しかし、先述の利点は、欠点と表裏一体といえます。

クライアント・サーバーの欠点

  • クライアントサイドのセキュリティ対策がネックとなる
  • クライアント側の不具合の際に、ソフトウェアの入れ替え作業がネックとなる

まず、クライアントサイドでのセキュリティ対策が往々にしてネックとなります。
クライアント・サーバーはネットワークを用いるため、ひとたびコンピュータウィルス等に感染すると深刻な被害を招きかねません。

加えて、特にクライアント側のソフトウェア更新がネックになります。
これは修正自体は容易であっても、いざその修正を反映しようとすると問題になります。なぜならすべてのクライアントを同時に更新せねばならいためです。はたまた、部分部分で更新をかけていき、異なるバージョンが混在しても正しく処理できるような配慮が必要です。

これらは非常に労力がかかる作業であり、「クライアント・サーバーの明確な欠点」となります。

そのため、最近ではクライアント・サーバーをベースにしつつ、これらの問題点を克服できる「WEBシステム」が脚光を浴びています。

まとめ

まとめ

クライアントサイドやサーバーサイドという言葉は、聞いたことはあっても厳密に理解していないという方は多いでしょう。

そして、クライアント・サーバーでの用語であるか、WEBシステムでの用語であるかによって、若干意味するところが違います。

以下に本記事の内容をまとめますので、誤って理解して否か再確認に活用していただければと思います。

  • クライアント・サーバーとは、ネットワークを用いた負荷分散の方式
  • 処理を「要求側」(クライアント/Client)と「処理側」(サーバー/Server)に分けて分散処理する
  • クライアントサイドはクライアント側の処理、サーバーサイドはサーバー側の処理
  • クライアント・サーバーには一部欠点があり、その欠点を補うためWEBシステムが脚光を浴びている
  • WEBシステムはWEB技術を活用したクライアント・サーバー型のシステム
  • WEBシステムのサーバーサイドでは内部の処理結果をブラウザで表示できるようHTMLやJavaScriptなどを返却する
  • WEBシステムは利点が多く欠点も少なからず存在するが、欠点の多くは既存技術の有効活用によって、問題を縮小化できることが多い

よく読まれている記事

1

Shellとは? Shellとは、人間の理解できる言葉を機会へ伝えるプログラムです。 Linux環境でコマンドプロンプト画面を開いているとき、常にShellは起動している状態です。 「Shell」とは ...

2

Linuxは主にサーバー用として利用されるOSです。大規模な基幹システムの開発者、ロボットや家電開発等の組み込み系エンジニア、ネットワーク機器やデータベースに携わるインフラエンジニアは触れることが多い ...

3

プログラミング言語を習得しようと思った時、必ずと言っていいほど候補として挙げられるのが「Java」というプログラミング言語です。 「Java」は、現在日本で最も使われている言語であり、非常に人気のある ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-エンジニアの知識