近年、Web技術が企業システムに急速に浸透してきています。クライアントにWebブラウザを利用することは、今や当たり前の選択肢になってきました。
今回は「Webシステム」及び、「クライアントサーバーシステム(以後:C/S)」における「クライアントサイド」と「サーバーサイド」とは何かについて解説していきます。
この記事でわかること
- クライアントサイドとは?
- サーバーサイドとは?
Webシステムとは?
「WEBシステム(Web System)」とは、主にWEB技術をベースとして構築された「3階層」or 「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システムの利点
- 構造的にはC/Sシステムと同じである
- クライアント側に特別なソフトウェアのインストールが不要である
- 特別な端末を用意する必要がなくコストダウンに繋がる
まず、構造的には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システムは利点が多く欠点も少なからず存在するが、欠点の多くは既存技術の有効活用によって、問題を縮小化できることが多い