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

Webで実行できるプログラミングには「クライアント側で動かす方法」と「サーバー側で動かす方法」の2通りがあります。

前者「クライアントサイド」、後者を「サーバサイド」と言います。ほとんどの場合この2つが組み合わされます。

クライアントサイドのプログラム

クライアントサイドのプログラムは、Webサーバー側からHTMLとともに送り込まれWebブラウザの内部で動きます。

Webブラウザの種類によりますが、主に次の2つのプログラムを動かせます。

1. JavaScript

初期のWebブラウザで大きなシェアウィ占めていたNet scape社によって考察されたプログラミング言語です。

当時は「ちょっとしたメッセージを出す」「マウスでの右クリックを禁止する」などしか使われていませんでしたが、ブラウザ間の互換性の問題が解消するにつれ、次第に幅広く使われるようになりました。

現在では、ほとんど全てのWebブラウザが、標準でJavaScriptで書かれたプルグラムの実行に対応しています。

HTMLを書き換えたり、マウスの動きやキー入力、文字入力などの状態を読み取って動きをつけたりします。

2.Flash

Macromedia社(買収されて、現在はAdobe社)が開発したプログラムの実行環境です。「Adobe Flash」というツールを使って作ります。「Action Script」というJavaScriptに似た言語で記述します。

実行するには「Adobe Flash Player」というプラグインが必要です。全てのWebブラウザで対応しているわけではありません。

(現在では使用されず段々衰退しています)

近年Flashは、JavaScriptに置き換わりつつあります。その理由はiphoneでは実行できない事とAndroidでもサポートが打ち切られて実行できなくなったからです。

しかしながら、過去の開発資産が多いことからWebブラウザで動くゲームの実装や動画サイトによく使われています。

またFlashでは、動画やアニメを作りやすいためその分野では依然として使われ続けています。

ユーザー環境に依存する

クライアントサイドのプログラムは、ユーザーのパソコンのWebブラウザで実行されるので、その実行速度はユーザのパソコンの性能に依存します。

そして、そもそも「プログラムが動かない」という可能性もあります。

例えばFlashのプログラムを動かすには、プラグインが必要です。プラグインがインストールされていないWebブラウザでは実行できません。

JavaScriptならば、プラグインなどをインストールすることなく主流なWebブラウザで実行できます。

しかし、実装されているバージョンや言語仕様が少し違う事があり、例えば「Internet Explorerなら動くけど、Edgeで動かない」という可能性もあります。

クライアントサイドでプログラムを作るときは「プログラムを作っている自分のブラウザでは動くけれど、他のユーザーのブラウザでは動かないかもしれない」という点を認識しておく必要があります

サンドボックスの中で実行される

クライアントサイドのプログラムは「サンドボックス(sandbox。砂場)」と呼ばれる、閉じられた環境の中で実行されます。

閉じられた環境というのは、その中で不正な動きをしたとしても、他に影響を与えないように作った実行環境のことです。これは不正なプログラムを送り込まれて、パソコンのデータが消されたり盗み出されたり、設定を変更されて動かないようにされたりしてしまうのを防ぐためです。

クライアントサイドのプログラムは、基本的にパソコンの設定を変更したりファイルを読み書きしたりすることはできません。

また、プログラムを送信したWebサーバー以外と通信することもできません。

プログラムを見られたり改変されたりする恐れがある

クライアントサイドのプログラムは、クライアント上で実行されるため、そのプログラムをユーザーが見る事ができます。

ですからユーザーに対して隠しておきたい情報をプログラムに書くべきではありません。

またプログラムがユーザによって改変される恐れもあります。

例えば、ゲームなどでは所持しているアイテムの個数が改変されることも考えられます。改変を防ぐためには、データを暗号化するなどの手法をとります。

サーバーサイドのプログラム

一方でサーバーサイドのプログラムはWebサーバー上で動作するので、今まで述べてきたような制限がありません。

すなわち、

です。

同時に実行される可能性がある

サーバーサイドのプログラムは、接続しているユーザーの数だけ同時に実行される可能性があります。プログラムを作るときは以下の2点を注意しましょう

1.できるだけ短い時間で処理が終わるようにする

プログラムは、できるだけ短い時間で処理を終えるようにします。

負荷が重いと、多数のユーザーが同時に接続してきたときに、サーバーの能力が追いつかず、ユーザーを待たせたり、一部のユーザーの接続を受け入れられずに切断したりしてしまう事があります。

2.複数のユーザーが同時にデータを書き換える可能性を考える

サーバー上のデータを書き換える場合、後から書き込んだユーザーのデータが、前のユーザーのデータを上書きしてしまう恐れがあります。

この問題を避けるためには、必要に応じて「書き換え中は、他の人はアクセスしない」というロック処理をします。

サーバー上のプログラムが実行されるタイミング

サーバー上のプログラムが実行されるタイミングは、ユーザーがアクセスしてきた瞬間だけです。

これは、ブラウザからサーバーに接続されるタイミングであり、次の3パターンしかありません。

これら以外の場合、例えばユーザーがブラウザ上でマウスを動かしたとか、入力欄のチェックボックスや選択肢を変更した時にはサーバーへの通信が発生しないので、サーバー上のプログラムが実行されることはありません。

とはいえ、実際そのような挙動を見たことがある人もいるでしょう。例えば「チェックボックスのオン・オフを切り替えると押せるボタンが変わる」とか「ある選択肢を変えると、他の選択肢が変わる」という入力フォームは実際よく見かけます。

実はこのようなギミックは、サーバーサイドのプログラムだけでは実現できないので、クライアントサイドで動作するJava Scriptと連携しています。

現在、実用的なWebプログラムではユーザーの操作のしやすさを重視しクライアントサイドのプリグラムとサーバーサイドのプログラムをうまく組み合わせて構築しています。

まとめ

いかがでしたでしょうか、クライアントサイドとサーバーサイドについて記述してきましたが、やはり目に見えるクライアントサイドの方が花形のような気がします。

もちろん両方Webサービスの構築には必要な要素ですが、、、

それとクライアント側はデザイン的な要素も含んでいますので人気です。

これは本当にセンスがわかれますので自分に合ったWebプログラム言語を選んでいただけたらと思います。

ではでは

Follow me!