Webサイトを閲覧していると、時間によって内容が変わったり、ログインする人によって表示される情報が異なったりすることがありますよね。このような「動的なWebページ」を実現しているのが、PHPのようなプログラミング言語です。
この記事では、「そもそもPHPって何だろう?」「どうやってWebページを動かしているの?」という疑問をお持ちの初心者の方に向けて、PHPが働く仕組みを基礎から丁寧に解説します。
Webページが表示される基本的な流れ
まず、PHPの話に入る前に、私たちが普段どのようにWebページを見ているのか、その基本的な流れを理解しましょう。ここでの登場人物は「クライアント」と「サーバー」です。
- クライアント: 私たちが使っているパソコンやスマートフォンのWebブラウザ(Google Chrome, Safariなど)のことです。Webサイトの情報を「見せてください」とお願いする(リクエストする)役割を持ちます。
- サーバー: Webサイトのデータ(HTMLファイル、画像ファイルなど)を保管している高性能なコンピュータのことです。クライアントからのリクエストに応じて、適切な情報を「はい、どうぞ」と返す(レスポンスする)役割を持ちます。
このクライアントとサーバーがインターネットを通じて情報をやり取りすることで、私たちはWebページを閲覧できるのです。
「静的なページ」と「動的なページ」の違い
サーバーがクライアントに返すWebページには、大きく分けて2つの種類があります。
静的なページ
いつ、誰が見ても常に同じ内容が表示されるページです。例えば、会社の概要ページやお知らせページなどがこれにあたります。
サーバーにはあらかじめHTMLファイルが用意されており、クライアントからリクエストが来たら、そのファイルをそのまま返すだけです。非常にシンプルな仕組みと言えます。
動的なページ
一方で、アクセスするタイミングや状況によって表示内容が変わるページを「動的なページ」と呼びます。
- ショッピングサイトのカートの中身
- SNSのタイムライン
- ブログのコメント欄
- 今日の天気予報
これらは、見る人や時間によって内容が変わりますよね。このようなページは、単にHTMLファイルを返すだけでは実現できません。そこで登場するのがPHPです。
PHPが動く仕組みを5ステップで解説!
では、いよいよ本題です。PHPはどのようにして動的なページを作り出しているのでしょうか。その裏側の仕組みを5つのステップに分けて見ていきましょう。
ステップ1:クライアントがリクエストを送信
ユーザーがブラウザのアドレスバーにURLを入力したり、リンクをクリックしたりすると、ブラウザ(クライアント)は「このページが見たいです!」というリクエストをWebサーバーに送信します。
ステップ2:Webサーバーがリクエストを受け取る
リクエストを受け取ったWebサーバー(「Apache」や「Nginx」といったソフトウェアが有名です)は、そのリクエストがどのファイルに対するものかを確認します。
もしリクエストされたファイルが.html
であれば、静的なページとしてそのまま返します。しかし、ファイルの拡張子が.php
だった場合、「これはPHPの処理が必要だ!」と判断します。
ステップ3:WebサーバーがPHPに処理を依頼
Webサーバーは、.php
ファイルの処理を専門家である「PHPインタープリタ(PHPのプログラムを解釈して実行するソフトウェア)」に依頼します。
ステップ4:PHPがプログラムを実行し、HTMLを生成する
依頼を受けたPHPは、ファイルに書かれたプログラムを上から順に実行します。
- 「今の時刻を取得して表示しなさい」
- 「データベースに接続して、最新のブログ記事を10件取得しなさい」
- 「計算フォームから送られてきた数値を足し算しなさい」
といった命令を実行し、その結果を盛り込んだ最終的なHTMLをその場で生成します。データベースとの連携には、SQLという言語を使ってデータの取得や保存を指示します。
ステップ5:サーバーが生成されたHTMLをクライアントに返す
PHPによって生成された出来立てのHTMLを、Webサーバーがクライアント(ブラウザ)にレスポンスとして返します。
ブラウザ側は、それがPHPによって作られたものだとは知らず、単なるHTMLファイルとして受け取ります。そして、そのHTMLを解釈して画面に表示することで、私たちは動的なWebページを見ることができるのです。
なぜXAMPP(ザンプ)が必要なの?
PHPの学習を始めると、まず「XAMPP」をインストールするように言われることが多いです。
XAMPPは、ここまで説明してきたWebサーバー(Apache)、データベース(MariaDB、MySQLから派生したもの)、そしてPHPといった、Webサイトを動かすために必要なソフトウェアを一括でインストールできるパッケージです。
これを使えば、自分のパソコン(ローカル環境)の中に、本番さながらのサーバー環境を簡単 に構築できます。実際にWebサイトを公開する前に、自分のパソコンでプログラムの動作確認やテストができるため、PHP開発には欠かせないツールとなっています。
PHP 8のサンプルコードを見てみよう
最後に、PHPがどのようにHTMLを生成するのか、簡単なサンプルコードを見てみましょう。このコードは、アクセスしたときの現在日時と、簡単な計算結果を表示する動的なページを生成します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>PHPの動作テスト</title>
<style>
body { font-family: sans-serif; line-height: 1.6; padding: 20px; }
.container { max-width: 600px; margin: auto; border: 1px solid #ddd; padding: 20px; border-radius: 8px; }
.highlight { color: #d9534f; font-weight: bold; }
</style>
</head>
<body>
<div class="container">
<h1>PHPによる動的なページ生成</h1>
<p>
このページはPHPによって作られています。<br>
サーバーの現在時刻は <span class="highlight"><?php echo date('Y年m月d日 H:i:s'); ?></span> です。
</p>
<?php
// 税込み価格を計算する関数
// PHP 8の名前付き引数を利用して呼び出します
function calculateTotalPrice(int $basePrice, float $taxRate = 0.1): float {
return $basePrice * (1 + $taxRate);
}
$productPrice = 2500;
$finalPrice = calculateTotalPrice(basePrice: $productPrice, taxRate: 0.1);
?>
<p>
価格が <?php echo number_format($productPrice); ?> 円の商品の場合、<br>
税込み価格は <span class="highlight"><?php echo number_format($finalPrice); ?></span> 円です。
</p>
</div>
</body>
</html>
このコードの <?php ... ?>
で囲まれた部分がPHPのプログラムです。
date('Y年m月d日 H:i:s')
は、サーバーの現在日時を取得する命令です。calculateTotalPrice(...)
は、商品の税込み価格を計算するオリジナルの命令(関数)です。
この.php
ファイルにアクセスすると、PHPがこれらの命令を実行し、その結果(現在時刻や計算結果)を埋め込んだHTMLを生成してブラウザに返します。そのため、ページを再読み込みするたびに時刻が更新されるはずです。
まとめ
今回は、PHPが動的なWebページを生成する仕組みについて解説しました。
【ポイントの振り返り】
- Webはクライアントとサーバーのやり取りで成り立っている。
- PHPはサーバー側で動作し、リクエストに応じて動的にHTMLを生成する言語。
- Webサーバー(Apacheなど)がPHPに処理を依頼し、PHPがプログラムを実行する。
- データベースと連携することで、さらに複雑な処理も可能になる。
PHPの仕組みを理解することで、Webアプリケーション開発の学習がよりスムーズに進むはずです。ぜひ、XAMPPなどでご自身のパソコンに環境を構築し、実際にコードを動かしてみてください。