
サーバーについて理解するとWebプログラミングの習得スピードが早くなる
PHPはサーバー上で動作するプログラムです。
サーバー側で動作するプログラムなので「サーバーサイドプログラム」と呼ばれることもあります。
ところで、「サーバー」という言葉は聞いたことがあると思いますが、初めての人は具体的にどのようなモノかイメージが難しいと思います。
しかし、サーバーについて知っておくと、知らないとでは、これからのWebプログラミングの習得スピードが全然違います。
ということで、まずはサーバーについて、ざっと理解していきましょう。
サーバーとは何か
インターネットや社内ネットワークなどで複数の端末(ブラウザなど)がデータ通信して、それぞれの端末の送信内容に応じたデータを返す処理を行うコンピューターのことを「サーバー」と呼びます。
クライアント・サーバーシステム

また、通信元の端末(PC、タブレット、スマホなど)のことをサーバーに対する用語で「クライアント」と呼びます。
このようなコンピュータの役割をサーバーとクライアントに分担して構成されるシステムを「クライアント・サーバーシステム」と呼びます。
リクエスト処理とレスポンス処理

クライアント・サーバーシステムにおいて、クライアント1台とサーバー1台ののデータのやり取り(データ通信)をみた時、クライアントが実行するデータ送信を「リクエスト処理」と呼び、それに対してサーバーが実施するデータ返信を「レスポンス処理」と呼びます。
また、リクエストで送信するデータのことを「リクエストデータ」、レスポンスで送信するデータのことを「レスポンスデータ」と呼びます。
Webサイト(ホームページ)を設置するサーバーのことを「Webサーバー」と呼びますが、上記図の処理に合わせて、Webサイトを閲覧する仕組みを説明すると、次のような処理の流れになります。
- 端末(クライアント)上で動作しているブラウザが、Webサーバーにリクエストデータ(指定したURLのHTMLを送ってくれ!という依頼)を送信する
- Webサーバーは指定されたURLに対するレスポンスデータ(HTML)をブラウザに返信する
- ブラウザがHTMLソースを解析してWebサイトを表示する
※注:正確には、ブラウザはHTMLソースを解析し、HTMLソースの中に書かれている画像 / CSS / JavaScriptなどのURLを検出した場合、さらにそれらのURLに対してリクエスト処理を実行することで画像 / CSS / JavaScriptなどのデータも取得し、Webサイト全体が表示されます。
サーバーには2種類の意味がある
インターネットや社内ネットワークで使われるサーバーは、大く分けて2種類の意味があります。
「サーバーマシン(サーバー機器)」の意味と、「サーバーソフトウェア」の意味です。
つまり、サーバーは多義語ですので、文章や会話の文脈によって、どちらのサーバーの意味か判断する必要があります。
サーバーマシン(サーバー機器)
まず1つ目の「サーバー」の意味ですが、サーバーマシン(サーバー機器)、つまりハードウェアを指して「サーバー」と呼びます。
サーバーマシンには、タワー型サーバーとラック型サーバーがあります。
タワー型サーバー

タワー型サーバーは主に企業のオフィス内に1台もしくは数台設置して使用するのに適したサーバーです。
規模が小さい場合、パソコンをサーバーとして使用する場合もあります。
ラック型サーバー

ラック型サーバーは、ラックという大きな箱の中に重ねて設置するのに適したサーバーです。
サーバーを多数扱うサーバー管理業者などが扱います。
正確にいうと、ラック型サーバーの左端と右端にはボルト用の穴があり、この穴とラックにある穴をボルトで締めて固定します。
上下のラックサーバーの間には、少し隙間が空いており、少しサーバーが中に浮いたような状態になっています。
よって、実際にサーバーをの上にサーバーを載せているわけではありません。
実際のラック型サーバーの設置環境について紹介しましょう。
みなさんがレンタルサーバーなどで使っているサーバーマシンは、サーバー管理会社が所有している「データセンター」と呼ばれる建物内の「サーバールーム」と呼ばれる巨大な部屋の中に設置されています。
以下が実際のサーバールームの写真です。
縦長の冷蔵庫のような大きな箱がラックであり、その中にラック型サーバーがボルトで固定されて多数設置されています。

なんだかSF映画で出てきそうなサイバーチックな環境ですね(笑)
サーバーマシンは24時間365日絶え間なく稼働しているため、熱が発生しやすく、そのまま放置しておくと熱くなりすぎて壊れてしまうため冷却する必要があります。
そのため、サーバールーム内は常に冷房がガンガンにかかっています。
筆者はサーバールームで何度かサーバーの設定作業をした経験がありますが、結構寒かったです。
また、多数のサーバーマシンのファンと冷房の音でゴーゴーという騒音が常に鳴り響いており、かなりうるさいです。
サーバーソフトウェア
次に2つ目の「サーバー」の意味ですが、サーバーソフトウェアのことを指して「サーバー」と呼びます。
サーバーマシンは、パソコンやスマホと同様にサーバー専用のOSがインストールされています。
サーバーOSの代表的なものとして、WindowsServer, Linux, UNIXなどがあります。
サーバーOSに対してインストールする、クライアントからのリクエストデータを受信して、その内容に応じたレスポンスデータを返すソフトウェアが「サーバーソフトウェア」です。
いろいろと用語が出てきて混乱するかもしれませんので、関係図を描いてみました。

よく使用するサーバーソフトウェアの例を以下にリストアップします。
Webサーバー
主にブラウザなどからアクセス(=リクエスト)された時に、Webサイトを閲覧するためのデータを返信する処理を行います。

<主なリクエスト処理とレスポンス処理>
リクエスト処理:データを取得したい(アクセスしたい)ページのURLを送信
レスポンス処理:指定したURLに対するHTML / CSS / JavaScript / 画像などのデータを返信
その他、PHP、Python、RubyなどのサーバーサイドプログラムをWebサーバー上で使用すると、Webページを表示させるだけでなく、さまざまなことができます。
例えば、別記事「【PHPプログラミング入門講座】PHPでどのような機能が作れるか?」に書いているような機能が実現できます。
FTPサーバー
サーバーOS上のフォルダ(ディレクトリ)内にパソコンにあるファイルをアップロードしたり、逆にサーバーOS上のフォルダ(ディレクトリ)内にあるファイルをパソコンにダウンロードしたりする機能が使えるようにするためのサーバーソフトウェアです。
<主なリクエスト処理とレスポンス処理(ファイルアップロード時)>
リクエスト処理:アップロードするファイルのデータ
レスポンス処理:アップロード状況をFTPソフトに伝える
<主なリクエスト処理とレスポンス処理(ファイルダウンロード時)>
リクエスト処理:PC上のFTPソフトが、FTPサーバーにダウンロードしたいファイルを指定
レスポンス処理:指定したファイルをPC上にダウンロードする
データベースサーバー
大量のデータを扱うにはデータベースサーバーが必要です。
データベースは、大量のデータを登録することができ、またデータの検索、登録(データ追加)、修正、削除を高速に処理することができます。
<主なリクエスト処理とレスポンス処理>
リクエスト処理:SQL(データベースのデータを検索、登録、修正、削除する命令)を送信
レスポンス処理:検索の場合は検索結果のデータ一覧、登録、修正、削除の場合は処理結果を返信
DNSサーバー
「www.yahoo.co.jp」のようなドメインは、人間には分かりやすい表記ですが、サーバー間の通信では、ドメインは使用せず、サーバー機器やネットワークを中継するルーター、プログラムなどが扱うことができる「IPアドレス」を使って通信を行います。
IPアドレスは「182.22.16.251」のような数字で表現されます。
世界中のサーバーのドメインとIPアドレスの対応表を管理するサーバーがDNSサーバーです。
例えば、ブラウザでURLを入力して通信を行うと、まずDNSサーバーにアクセス(リクエスト)して、ドメインに対するIPアドレスを取得します。それから、目的のWebサーバーにアクセス(リクエスト)します。
※なお、今後Webサーバーなどの接続処理について説明する際、正確にDNSサーバー接続の話をすると煩雑になり、本題からずれるため省略します。
<主なリクエスト処理とレスポンス処理>
リクエスト処理:ブラウザ/サーバーがIPアドレスを取得したいドメインを送信 ドメインの例:www.yahoo.co.jp
レスポンス処理:ドメインに対するIPアドレスをブラウザに返信 IPアドレスの例:182.22.16.251
メールサーバー(SMTPサーバー)
メールサーバーは、送信と受信でそれぞれのサーバーが存在します。具体的にはSMTPサーバーとPOPサーバーです(最近はセキュリティ上POPではなくIMAPを使用することが多いですが割愛)。
SMTPサーバーはメール送信を行うためのサーバーです。
<主なリクエスト処理とレスポンス処理(メール送信時)>
リクエスト処理:PC上のメールソフトが、メールサーバーにメールを送信
レスポンス処理:メール送信結果を返信
メールサーバー(POPサーバー)
メールサーバーは、送信と受信でそれぞれのサーバーが存在します。具体的にはSMTPサーバーとPOPサーバーです(最近はセキュリティ上POPではなくIMAPを使用することが多いですが割愛)。
POPサーバーはメール受信を行うためのサーバーです。
<主なリクエスト処理とレスポンス処理(メール受信時)>
リクエスト処理:PC上のメールソフトが、メールサーバーにあるメールデータを送るように依頼
レスポンス処理:メールデータをPC上のメールソフトに返信
ファイルサーバー
会社の関係者やビジネスパートナー、もしくは友達の間で、資料(Word、Excel、PowerPointなど)や画像や動画などのファイルを共有するために使用するサーバーです。
プリントサーバー
こちらはインターネットではなく、オフィスで使用するサーバーです。
通常、プリンターは、USBケーブルでパソコンと繋いで利用しますが、その場合、パソコン1台でしかプリンターを使用することができません。
プリントサーバーを使用すると、複数台のパソコンからプリンターを使用できるようになります。
おわりに
PHPプログラミングを始めるために必要なサーバーの知識を説明しましたが、いかがでしたでしょうか?
いろんな用語が出てきたので、初めての人は覚え切れないかもしれません。
是非、何回もこの記事を読み返して、インターネットの知識を深めてください。
頑張ってくださいね!
PHPプログラミング入門講座 〜 全記事一覧 〜
- PHPで開発された有名なWebサイト
- PHPでどのような機能が作れるか?
- 現在のページ:サーバーについて理解しよう
- Webサーバーの処理について詳しく説明
- PHPプログラムの動作について説明
- パソコンにPHPの動作環境を構築しよう
- 一番簡単なPHPプログラムを書いてみよう
- ブラウザ画面にメッセージを表示しよう
- PHPタグの書き方と終了タグの省略
- 特殊なメッセージ(文字列)の書き方
- PHPプログラムで計算をしてみよう
- 変数
- 文字列の結合とヒアドキュメント
- ファイルの分割とファイルの読み込み
- コメント
- 定数
- 数値と文字列の性質・デバッグ
- 条件分岐 (if文)
- 論理型 (boolean型)
- 比較演算子
- 論理演算子
- 条件分岐 (switch文)
- 三項演算子
- 配列とforeach文
- 代入演算子 / 加算子 / 減算子
- ループ処理 (for文)
- ループ処理 (while文とdo-while文)
- break
- continue
- 連想配列
- 連想配列のループ処理