ネットの仕事やWebサイトの制作現場では、「サーバー」という言葉がよく出てきます。
今回は、「サーバ」とはそもそも何なのかを紹介し、「サーバサイドプログラム」という言葉の意味につないでいきます。
(※)「サーバー」「サーバ」どちらも正解ですが、ここでは技術者寄りにして、以下「サーバ」で統一します。
「クライアント・サーバ」システム
ネット関係で出てくる「サーバ」は、「クライアント・サーバ」システム、のサーバです。
「クライアント・サーバ」という考え方・概念は、少なくとも30年以上生き残り、現役でいまも使われ続けています。インターネットは「クライアント・サーバ」システムで成り立っていると言えます。
サーバはソフトウェア
まず前提として「サーバ」はソフトウェア、あるいは、アプリである、と考えます。「サーバ」の役割をするソフトウェアが「サーバ」です。
「サーバ」というソフトウェアが動いているハードウェアを「サーバ」と呼んだりするので、とてもややこしくなるのですが、「サーバ」はソフトウェアだ、と考えることでかなりスッキリします。
「サーバ」の役割は、「クライアント」から頼まれたものを渡すことです。
サーバの例)WWWサーバ、Webサーバ
ここでは、世界中で動いていて非常にシンプルな例として、Webサーバ、WWWサーバの動きを取り上げます。
たとえば、「ブラウザからヤフーのページを開けるとき」の動きを説明してみます。
ヤフーの「サーバ」は、インターネットの中にあります。ChromeやEdgeなどのブラウザ(クライアント)にヤフーのURLを入力すると、ヤフーの「サーバ」に対して、ブラウザ(クライアント)が「トップページをください」と言います。
すると、「サーバ」は、トップページのHTMLを送ってきます。ここで送られてきたものは、 Chromeであれば右クリックして「ページのソースを表示(Ctrl+U)」を選択すると、みることができます。
このHTMLを解釈して、読み込めと書いてあるCSSやJavaScriptを読み込み、それらを統合して画面に表示するのが、ブラウザ(クライアント)というソフトウェアの役割です。
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月の数字より)
PHPはもともと、Webページ・HTMLを処理するために作られました。Webサーバやデータベースと連携し、動的なページを作るのが得意です。
「データベース」は、「サーバ」と同様に、ソフトウェアです。データを保存したり引き出したりすることがスムーズにできるソフトウェアです。
先ほどの図に当てはめると、このような形です。
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はクライアントサイドプログラムと呼ばれます。クライアントであるブラウザで、解釈され実行されるからです。
まとめ
「サーバ」がソフトウェアであり、その役割は、頼まれたものを送り返すこと、です。これがわかると、「サーバ」や「クライアント」がいろいろなところで動いて複雑に組み合わされていたとしても、その仕組みを理解することができるようになります。
仕組みが理解できると、つながらない、表示できない、などのトラブルが起こったときに、原因を追求して対処を考えることが可能になり、付加価値が生まれてそこに報酬が発生する、つまり、プロとして食えるようになる、ということにつながっていきます。
コメント