PHP 入門

PHP イントロダクション

PHP(Hypertext Preprocessor)は、広く利用されているオープンソースの汎用スクリプト言語です。特に Web 開発に適しており、HTML 内に埋め込んで使用できるのが大きな特徴です。

本セクションでは、サーバーサイド(Server-side)スクリプト言語としての PHP の立ち位置、クライアントサイドとの違い、そして動的な Web ページ生成において PHP がどのような役割を果たしているかを詳しく解説します。

1. サーバーサイドスクリプトの理解

サーバーサイドスクリプトとは、ユーザーのブラウザ(クライアント)ではなく、Web サーバー上で実行されるプログラムを指します。

ユーザーが Web ページをリクエストすると、サーバーはスクリプトを処理して HTML レスポンスを生成し、その結果をブラウザに送信します。ブラウザが受け取るのは、最終的な静的 HTML、CSS、および JavaScript だけであり、サーバーサイドで実行された元のコード自体を目にすることはありません。このアーキテクチャにより、動的なコンテンツ生成、データベースとのインタラクション、そしてクライアントからは隠蔽された高度なセキュリティ操作が可能になります。

1.1 実社会における具体例:パーソナライズ体験

「ようこそ、〇〇さん」といった挨拶や、最近の注文履歴を表示するなど、ユーザーごとに最適化されたコンテンツを持つ Web サイトを想像してみてください。このようなパーソナライズは、すべてサーバーサイドスクリプトによって処理されています。

  • Amazon の事例: Amazon にアクセスした際、サーバーはユーザーのログイン状態を処理し、データベースから過去の購入履歴を取得して、ブラウザに送信する前に「あなた専用」のページをレンダリングします。注文履歴を抽出するロジックはサーバー側に秘匿されており、ユーザーが見るのは最終的に出力された HTML だけです。
  • オンラインバンキング: ログイン時、サーバーサイドスクリプトがデータベースと照合して認証を行い、口座残高を取得して、財務情報を表示するセキュアなページを動的に生成します。機密性の高いロジックやデータベースのパスワードは常にサーバー側に保持されるため、クライアントサイドからの盗聴を防ぐことができます。

1.2 想定シナリオ:社内従業員ポータル

従業員が自身の残り休暇日数を確認できる社内ポータルを想定してみましょう。

  1. 従業員がログインする。
  2. サーバー上の PHP スクリプトが人事(HR)データベースにクエリを送信する。
  3. 該当する従業員の残り休暇日数を取得する。
  4. その情報を分かりやすいフォーマットの HTML ページとして生成する。
  5. ブラウザに送信される前に、スクリプトが社内規定をチェックし、追加の休暇申請が可能かどうかを判定することも可能です。

2. サーバーサイド言語としての PHP の役割

PHP が優れたサーバーサイド言語である理由は、Web サーバーやデータベースとの親和性が極めて高い点にあります。HTML ファイルや専用の PHP ファイル内に埋め込まれたコードをインタープリタが解析して動作します。

2.1 PHP のワークフロー

ブラウザが .php 拡張子のファイルをリクエストすると、以下のプロセスが走ります。

  1. Web サーバー(Apache や Nginx など)がリクエストを受け取り、PHP インタープリタに渡す。
  2. インタープリタがファイルをスキャンし、記述されている PHP コードを実行する。
  3. インタープリタはコードの実行結果(出力)を静的な HTML と結合する。
  4. この結合された結果(純粋な HTML ドキュメント)が、サーバーからクライアントのブラウザへ送信される。

2.2 動的コンテンツの生成

  • ブログ記事: 記事のタイトル、本文、著者、投稿日などは通常データベースに保存されています。PHP スクリプトはデータベースを検索し、関連情報を抽出して、HTML テンプレートに動的にインサートします。これにより、新しい記事ごとに手動で HTML ファイルを作成する必要がなくなります。
  • 動的な画像ギャラリー: HTML 内にすべての <img> タグをハードコーディングする代わりに、PHP スクリプトでフォルダやデータベース内の画像ファイル名を読み込み、ループ処理で必要なタグを自動生成できます。

3. 現代の Web 開発における PHP の地位

今日の開発環境においても、PHP は依然として強力かつ広く普及している言語であり、インターネット上の膨大な数のサイトを支えています。

  • コンテンツ管理システム (CMS): 世界中で数百万のサイトを動かしている WordPress、Drupal、Joomla といった主要なシステムの基盤となっています。
  • Web アプリと E コマース: Magento などの EC プラットフォームや、Laravel を活用した決済ゲートウェイ連携など、多様な Web アプリケーションで利用されています。
  • モダンフレームワーク: PHP は進化を続けており、オブジェクト指向(OOP)機能を強化した Laravel、Symfony、CodeIgniter といったモダンフレームワークの台頭により、現在の大規模プロジェクトにおいても非常に高い競争力を持っています。

4. PHP 開発史

バージョン核心的なマイルストーンと機能
1994PHP Tools (起源)Rasmus Lerdorf 氏が作成した CGI ツール。当初は自身の履歴書の閲覧者を追跡するために使用。
1995PHP/FI 2.0Form Interpreter と結合。Perl ライクな変数、フォーム処理、HTML 埋め込み機能が備わり始める。
1998PHP 3.0現代的な PHP の雛形。解析エンジンが書き直され、正式名称が「PHP: Hypertext Preprocessor」となる。
2000PHP 4.0Zend Engine 1.0 を搭載。セッション管理、アウトプットバッファリング、初期のオブジェクト指向(OOP)を導入。
2004PHP 5.0Zend Engine II 搭載。完全な OOP モデル、例外処理、そして重要な PDO(PHP Data Objects)を導入。
2005 - 2010PHP 6 (未リリース)Unicode (UTF-16) のネイティブサポートを試みるも、パフォーマンス低下により断念。主要機能は 5.x 系へ統合。
2015PHP 7.0Zend Engine 3.0 搭載によりパフォーマンスが倍増。スカラー型/戻り値型宣言、宇宙船演算子、Null 合体演算子を導入。
2020PHP 8.0近代化の新章。JIT コンパイラ、Union 型、名前付き引数、Match 式、Nullsafe 演算子、アトリビュートを導入。
2021 - 2023PHP 8.1 - 8.3開発体験の最適化。列挙型 (Enums)、readonly プロパティ/クラス、Intersection 型、DNF 型などを導入。
2024PHP 8.4プロパティフック (Property Hooks)、非対称な可視性によりボイラープレートを削減。HTML5 パーサーを内蔵。
2025PHP 8.5パイプ演算子による直感的なメソッドチェーンを実現。#[NoDiscard] アトリビュートや、配列の先頭・末尾取得関数のネイティブ実装。