「クライアント・サーバ」システムから正しく考えるサーバサイドプログラムの意味

テクノロジー

ネットの仕事やWebサイトの制作現場では、「サーバー」という言葉がよく出てきます。

今回は、「サーバ」とはそもそも何なのかを紹介し、「サーバサイドプログラム」という言葉の意味につないでいきます。
(※)「サーバー」「サーバ」どちらも正解ですが、ここでは技術者寄りにして、以下「サーバ」で統一します。

「クライアント・サーバ」システム

ネット関係で出てくる「サーバ」は、「クライアント・サーバ」システム、のサーバです。

「クライアント・サーバ」という考え方・概念は、少なくとも30年以上生き残り、現役でいまも使われ続けています。インターネットは「クライアント・サーバ」システムで成り立っていると言えます。

サーバはソフトウェア

まず前提として「サーバ」はソフトウェア、あるいは、アプリである、と考えます。「サーバ」の役割をするソフトウェアが「サーバ」です。

「サーバ」というソフトウェアが動いているハードウェアを「サーバ」と呼んだりするので、とてもややこしくなるのですが、「サーバ」はソフトウェアだ、と考えることでかなりスッキリします。

「サーバ」の役割は、「クライアント」から頼まれたものを渡すことです。

サーバの例)WWWサーバ、Webサーバ

ここでは、世界中で動いていて非常にシンプルな例として、Webサーバ、WWWサーバの動きを取り上げます。

たとえば、「ブラウザからヤフーのページを開けるとき」の動きを説明してみます。

Webサーバの動き:例 「ブラウザからヤフーのページを開けるとき」

ヤフーの「サーバ」は、インターネットの中にあります。ChromeやEdgeなどのブラウザ(クライアント)にヤフーのURLを入力すると、ヤフーの「サーバ」に対して、ブラウザ(クライアント)が「トップページをください」と言います。

すると、「サーバ」は、トップページのHTMLを送ってきます。ここで送られてきたものは、 Chromeであれば右クリックして「ページのソースを表示(Ctrl+U)」を選択すると、みることができます。

このHTMLを解釈して、読み込めと書いてあるCSSやJavaScriptを読み込み、それらを統合して画面に表示するのが、ブラウザ(クライアント)というソフトウェアの役割です。

DOMがわかるとJavaScriptが近づいてくる!ブラウザ技術の中核をつかめ
「JavaScript」や「jQuery」でWebページを動かしたり加工したりするときに、知っておくと進みが早くなる知識として、「DOM」を紹介します。DOM(Document Object Model)のイメージ「DOM(Document Object Model)」のイメージをつかむには、次のような理解をするとわかり...

HTTPの「P」は、プロトコルの「P]

つまり、Webサーバの仕事は、言われたものを送り返す、だけです。ただし、このやり取りには一定のルールが設けられています。そのルールのことを一般に「プロトコル」と呼びます。

URLの前に、「http://」という文字が付いていますが、これが実は「どういうプロトコルでやり取りしたいか」ということを指示しています。httpは、「HTTP:HyperText Transfer Protocol」の略です。

「**p」と最後に「p」が付く言葉がネットではたくさん出てきます。

HTTPの他にも、FTP、SMTP、TCP、IPなどなど、たくさんありますが、すべて最後が「プロトコル」で終わる言葉の略語です。

サーバサイドプログラム

「クライアント・サーバ」の考え方をつかめば、「サーバサイドプログラム」という言葉もはっきりしてきます。

「サーバサイドプログラム」は、その言葉のとおり、サーバ側で動くプログラム、サーバソフトウェアと連携して動くプログラムのことです。

「サーバサイドプログラム」に使われるプログラム言語として最も有名なのは「PHP」です。世界中で8割のシェアを占めるとも言われています(https://w3techs.com/ の2018年7月の数字より)

W3Techs - extensive and reliable web technology surveys
W3Techs provides information about the usage of various types of technologies on the web.

PHPはもともと、Webページ・HTMLを処理するために作られました。Webサーバやデータベースと連携し、動的なページを作るのが得意です。

「データベース」は、「サーバ」と同様に、ソフトウェアです。データを保存したり引き出したりすることがスムーズにできるソフトウェアです。

先ほどの図に当てはめると、このような形です。

サーバサイドプログラム「PHP」「WordPress」の動作イメージ

PHPでできている「WordPress」の動作イメージ

PHPと同様、現在Webサイトをつくるときに世界で一番よく利用されている「WordPress」というシステム(CMS)を例として取り上げます。

「WordPress」は「PHP」で作られています。

クライアントであるブラウザは、WordPressなのか、PHPなのか、ということはまったく気にすることなく、URLに指定されたページをください、とサーバに言います。(前述の例と同じです。)

サーバ側は、クライアントから指定されたページが「WordPress」つまり「PHP」で作られたページであることがわかると、「PHP」を呼び出します。「WordPress」の中に書かれている「PHP」プログラムの記述に従って、データベースからデータを取り出して加工し、HTMLを作成して、クライアントであるブラウザに送り出します。

ブラウザは、受け取ったページデータ(HTML)を解釈してページを表示します。クライアントであるブラウザは、PHPで書かれているかを気にしませんし、PHPを解釈することはありません。そのHTMLの中に書かれているCSSやJavaScriptを解釈して実行します。

PHPがサーバサイドプログラムと呼ばれるのに対して、このJavaScriptはクライアントサイドプログラムと呼ばれます。クライアントであるブラウザで、解釈され実行されるからです。

まとめ

「サーバ」がソフトウェアであり、その役割は、頼まれたものを送り返すこと、です。これがわかると、「サーバ」や「クライアント」がいろいろなところで動いて複雑に組み合わされていたとしても、その仕組みを理解することができるようになります。

仕組みが理解できると、つながらない、表示できない、などのトラブルが起こったときに、原因を追求して対処を考えることが可能になり、付加価値が生まれてそこに報酬が発生する、つまり、プロとして食えるようになる、ということにつながっていきます。

コメント