ラスムス・レルドーフとPHPの物語—小さなウェブ用スクリプト群がどのように広く使われるプラットフォームになり、なぜ今日も多くのサイトでPHPが使われ続けているのかを解説します。

PHPは壮大なプラットフォームや綿密に設計された言語として始まったわけではありません。始まりはラスムス・レルドーフが具体的な問題を解決したいと考えたことでした:個人サイトの維持で繰り返しの手作業を減らしたかったのです。
この点が重要で、今日でもPHPが持つ独特の感触を多く説明してくれます。
レルドーフは初期ウェブで開発していた人で、当時はページの多くが静的で、HTML以外の更新はすぐに面倒になりました。訪問者を追跡し、共通のページ部分を再利用し、動的にコンテンツを生成するようなシンプルなスクリプトが欲しかったのです。
つまり:変更を素早く出荷するためのツールが欲しかったのです。
「個人用ツール」はブランド名ではなく考え方でした。初期のウェブビルダーはしばしば退屈な作業を自動化するために小さなユーティリティを書きました:
PHPの初期バージョンはその実用的で「まず動かす」アプローチに影響されて作られました。
PHPのルーツを知ると、多くの性質が説明できます:HTMLに直接コードを埋め込むことへのフォーカス、一般的なウェブタスクに向けられた豊富な標準ライブラリ、学術的な純粋さよりも利便性を優先する傾向。
これらの選択はPHPの急速な普及を後押ししましたが、後ほど触れるトレードオフも生んでいます。
この記事では、PHPがレルドーフのスクリプトからコミュニティ主導の言語へと成長した過程、なぜホスティングやLAMPスタックに適合したか、WordPressのようなエコシステムがどのように拡大を加速させたか、そしてPHP 7・8以降で何が変わったのかを解説します。これにより、ノスタルジーや誇大宣伝ではなく現実に基づいてPHPを評価できるようになります。
1990年代半ばのウェブは主に静的なHTMLでした。フォーム処理、ヒットカウンタ、訪問者ごとのカスタマイズといった動的要素が必要な場合、一般的にはCGIスクリプト(多くはPerl)に頼っていました。
それは機能していましたが、スムーズとは言えません。
CGIプログラムはリクエストごとに別プロセスとして動作しました。単純なタスクでも、多くの手間が発生します:スクリプトファイルの適切な権限、サーバー設定、そして「ウェブページを書く」というよりはHTMLを出力する小さなプログラムを作るという別の思考が必要でした。
趣味のサイトや小規模ビジネスの一般的なニーズは反復的で実用的なものでした:
ほとんどの人は共有ホスティングで、CPUやメモリに制限があり、サーバー設定の細かい制御はできませんでした。カスタムモジュールをインストールしたり長時間動作するサービスを起動するのは現実的ではありませんでした。アップロードして単純なスクリプトを動かすことは可能でした。
これらの制約は次のようなツールを求める方向に人々を向けました:
このギャップ――静的ページと重厚なスクリプトの間――を埋めることがPHPの狙いでした。
レルドーフはプログラミング言語を発明しようとしたわけではありません。もっと普通の目的、つまり自分のサイトをより良く運用する方法が欲しかったのです。
最初の「PHP」は、彼が履歴書サイトの訪問を追跡するために使っていた小さなCプログラム群と、ページを頻繁に手作業で編集しなくて済むようにするユーティリティの集合でした。
当時は訪問者が誰でどれくらい来ているかを把握するのも簡単ではありませんでした。レルドーフのスクリプトはリクエストをログし集計するのを助け、トラフィックの把握を容易にしました。
同時に簡単なテンプレートや小さな動的出力、フォーム処理のヘルパーを作り、サイトが“生きている”ように見せることができました。完全なカスタムアプリを作る必要はありませんでした。
一度、リクエスト追跡やフォーム処理、ページ部品の再利用ができるツールが揃うと、それは偶然にも他の人々にも使えるものになりました。
この瞬間が重要です:機能が特定のレイアウトやページに縛られておらず、他のサイト運営者が自分のプロジェクトに取り入れられると想像できたのです。
道具箱として始まったため、使い勝手は実用重視でした:一般的なことを素早くやる、過設計しない、参入障壁を低く保つ。
この姿勢はPHPを当初から親しみやすくしました。
要点は簡単です:PHPのルーツは学問的でも理論的でもなく、問題解決志向で、実際にサイトを楽に動かすことを目指していたのです。
PHPは今日のような意味で最初から“言語”だったわけではありません。最初の公的なマイルストーンはPHP/FI(“Personal Home Page / Forms Interpreter”)でした。
その名前は示唆的で、すべてを目指すものではありませんでした。動的ページの作成とフォーム処理を手軽に行えるものを目指していました。
PHP/FIはいくつかの実用的なアイデアを束ね、当時のウェブ開発をずっと楽にしました:
洗練されていたわけではありませんが、ページを動かすために書かねばならない接着コードの量を減らしました。
初期のサイトはすぐに限界にぶつかります:フィードバックフォーム、ゲストブック、サインアップ、簡易検索など、ユーザー入力を受け取り処理する必要が出てきます。
PHP/FIはフォーム処理を中核のユースケースとして扱いました。送信された値を読み取り、応答ページを生成するのが簡単になったのです。
この焦点は日常のサイト運営者のニーズと一致していました。
PHP/FIの最も影響力のあるアイデアの一つはテンプレートスタイルでした:HTMLを主要なドキュメントとして保ち、小さなサーバー側のロジックを織り込むという考え方です。
<!-- HTML-first, with small dynamic pieces -->
<p>Hello, <?php echo $name; ?>!</p>
デザイナーやチューニング好きには自然に感じられました:ページを編集して“ちょっとした”動的挙動を追加でき、完全に別のシステムを採用する必要がありませんでした。
PHP/FIはエレガントではなく、そうするつもりもありませんでした。人々が採用した理由は:
これらの“キラー機能”は派手ではありませんでしたが、当時のウェブが本当に必要としていたものでした。
レルドーフの初期スクリプトは自分の問題を解決するためのものでした:訪問者の追跡、共通要素の再利用、手作業の削減。
その小さなユーティリティが「PHP」として広く認識されるようになったのは、一度に一つずつ、他の開発者が同じ利便性を自分たちのサイトにも欲しがったからです。
PHPを公開すると、ユーザーから修正、機能追加、アイデアが寄せられました。そのフィードバックループが重要で、プロジェクトは一人のニーズではなく多くのウェブマスターのニーズを反映するようになりました。
ドキュメントが整い、エッジケースが修正され、言語には多くの人が学びやすい慣習が生まれました。
大きな転機はPHP 3です。コアエンジンを書き直し、名前も “PHP: Hypertext Preprocessor” に変わりました。これは単なるブランディング以上の意味がありました。
このリライトで言語はより一貫性を持ち、拡張しやすくなり、PHPは単なるスクリプト群から信頼できるプラットフォームへと成長しました。
多くのユーザーコミュニティは、使っているツールとの統合を求めました。拡張機能が出現し、PHPはさまざまなデータベースやサービスとつながるようになりました。単一のセットアップに縛られなくなったのです。
「HTMLを出力するスクリプト」から「ゲストブック、フォーラム、カタログ、初期のEコマースを作る実用的な方法」へとPHPの役割が変わりました。
重要なのは:コミュニティの貢献は単に機能を増やしただけでなく、PHPの役割を変えたことです。
PHPが多くのウェブサイトのデフォルト選択になったのは、取り掛かりやすさだけではありません。内部エンジンが大きく改善され、より速く、一貫性があり、拡張しやすくなったことも大きな要因です。
Zend(アンドゥイ・グットマンズとジーヴ・スラースキが創設)はPHPのコアとしてZend Engineを導入しました。車の車種は同じままエンジンを載せ替えたようなものです。
開発者は馴染みのあるPHPコードを書き続けられましたが、実行環境は内部的に改善されました。
その結果、次の利点が得られました:
Zend Engine 1を搭載したPHP 4は、共有ホスティングモデルにぴったりのタイミングで登場しました。
多くのホスティングプロバイダーが手軽に安価にPHPを提供できるようになり、その可用性が利用の拡大につながりました。多くの環境で「十分に良い」選択肢となったのです。
Zend Engine 2を採用したPHP 5は、より大きなコードベース向けに進化しました。主な変更点はオブジェクト指向の強化で、クラスの扱いが改善され、可視性ルールが整い、大規模な設計パターンを組みやすくなりました。
目指したのは学術化ではなく、現実のプロジェクトを整理し、コードを再利用しやすく、保守しやすくすることでした。
PHPが広がるにつれて、新たなプレッシャーが生まれました:古いコードが動き続けることへの期待です。ホスティング企業やCMS、エージェンシーは安定性に依存していました。
この時点から、PHPの進化は「機能を追加する」だけでなく「インターネットを壊さない」ことが重要になりました。
PHPが勝利したのは紙の上で最も優れた言語だったからではありません。即座に「使えるウェブページ」を作る体験を提供したからです。
初期のウェブ開発者(デザイナー、趣味の開発者、小さな事業主など)にとって、PHPは最小限の手間で最初の動くものを作る助けになりました。
PHPではフィードバックループがほとんど摩擦なく回りました:ファイルをアップロードしてページを更新すれば結果が見える、という単純さが世代を形作りました。
1つの動的ページ(連絡フォーム、ゲストブック、カウンタ)から始めて徐々に拡張することができます。
初期のウェブプロジェクトには大きなエンジニア組織は稀で、1〜2人の開発者が急ぎの要件に対応していました。
PHPはその現実に合っていて、デプロイ周りの手続きが少なく、段階的な変更が簡単に出せました。
多くのプロバイダーがあらかじめPHPをインストールして提供しており、特別なインフラは不要でした。デプロイはしばしば「ファイルをコピーする」だけで済み、既存のHTML公開フローに馴染みました。
採用が進むと、チュートリアル、スニペット、フォーラム、コピペ例が大量に増えました。
このコミュニティの知識があることで、PHPは複雑な問題であっても取り組みやすく感じられました。
PHPが簡単に学べたからだけでなく、初期のウェブには“デフォルトの家”があり、それがLAMPスタック(Linux + Apache + MySQL + PHP)でした。長年にわたり、この組み合わせは中小規模のダイナミックなサイトの標準レシピでした。
LinuxとApacheは入手しやすく安価でした。PHPはApacheのリクエスト/レスポンスモデルに自然に収まり、訪問者がURLにアクセスするとApacheがPHPに渡し、PHPがHTMLを生成して返す、という流れがシンプルでした。
別にアプリケーションサーバーを管理する必要がなく、デプロイは安価で簡単でした。
MySQLが加わることで状況は完成しました。PHPの組み込みデータベース拡張により、MySQLへ接続してクエリを実行し、結果をページに描画するのが簡単だったのです。
この緊密な統合により、多くのデータベース駆動サイトが同じツール群で作られるようになりました。
加速要因となったのは共有ホスティングです。多くのホストがPHPとMySQLをあらかじめ設定して提供していました。
cPanelのようなコントロールパネルでMySQLデータベースを作成し、phpMyAdminでテーブルを管理し、FTPでPHPファイルをアップロードしてすぐ公開できる環境が一般化しました。
さらにWordPressやフォーラム、ショッピングカート向けのワンクリックインストーラが普及し、「ウェブサイト = PHPアプリ + MySQLデータベース」という考え方を当たり前にしました。これが数百万のサイトにとって最短ルートとなりました。
このスタックは、.phpファイルを編集してブラウザを更新し、SQLを調整してまた繰り返す――という実用的なワークフローを促しました。
テンプレートやインクルード、フォーム処理、セッション、CRUDページといった慣習が形成され、LAMPのピークを過ぎても共通のメンタルモデルとして残りました。
PHPが“どこにでもある”ようになったのは文法だけの話ではありません。インストール可能な完成品がその上に構築されたからです。これらは最小限の設定でビジネス上の問題を解決しました。
コンテンツ管理システムはPHPをワンクリックの決定にしました。WordPress、Drupal、Joomlaのようなプラットフォームは、管理画面、ログイン、権限、テーマ、プラグインなど面倒な点をまとめて提供しました。
これによりデザイナーはテーマ制作を学び、エージェンシーは反復可能なサービスを作り、プラグインマーケットプレイスが成長しました。クライアントのサイトがそのエコシステムに依存すると、知らず知らずのうちにPHPが選ばれ続けます。
オンラインストアやコミュニティサイトは初期の必需で、PHPは共有ホスティングの現実によく適合しました。
Magentoや(WordPress上の)WooCommerce、phpBBのようなソフトウェアはカタログ、カート、アカウント管理、モデレーションなどをすぐに使える形で提供しました。
これらのプロジェクトは「アプリをインストールしてブラウザで設定し、モジュールで拡張する」というワークフローを標準化し、PHP普及を後押ししました。
すべてのPHPが公開向けではありません。多くのチームが内部ダッシュボード、管理ツール、支払い・在庫・CRM・分析と接続するシンプルなAPIにPHPを使っています。
こうしたシステムは表面的な「このCMSか?」スキャンには現れませんが、日常的にPHPを使う理由になっています。
ウェブの大きな割合がいくつかの巨大な製品(特にWordPress)上で動いていると、下にある言語もその影響を受けます。
PHPの広がりは、言語自体だけでなく、その上に築かれたエコシステムの広がりでもあるのです。
PHPの成功は常に実用主義と結びついており、実用主義はしばしば粗さを残します。
多くの批判は歴史に根ざしていますが、それらが現代のPHPの使われ方全てを反映しているわけではありません。
よくある不満は一貫性の欠如です:関数名の命名規則がバラバラ、パラメータ順序が異なる、古いAPIが新しいものと共存しているなど。
これは想像上の話ではなく、ウェブの変化に合わせて急速に機能を追加しつつ、何百万もの既存サイトが動き続けるよう後方互換性を保ってきた結果です。
PHPは複数のプログラミングスタイルをサポートします。単に“動かす”スクリプトを書く方法もあれば、構造化されたオブジェクト指向コードを書く方法もあります。
批判者はこれを「混在パラダイム」と呼び、支持者は「柔軟性」と呼びます。欠点はチームが標準を定めないとコード品質がばらつく点です。
「PHPは安全でない」というのは単純化しすぎです。多くのPHPにまつわるセキュリティ事故はアプリケーションのミスが原因です:ユーザー入力を信用する、文字列連結でSQLを書いてしまう、ファイルアップロードの設定を誤る、アクセスチェックを忘れるなど。
PHPの歴史的なデフォルトが初心者を安全でないパターンに導くこともあり、その結果初心者が公開アプリケーションをそのままデプロイしてしまう事例が多かったのは事実です。
より正確に言うと:PHPはウェブアプリを簡単に作れるが、ウェブアプリは初心者が間違えやすい対象でもある、ということです。
PHPは「インターネットを壊さない」重い責任を負ってきました。
後方互換性は長期間にわたるアプリの稼働を支えますが、その結果レガシーコードがいつまでも残り続け、企業が古いパターンのメンテに多大な労力を費やすこともあります。
公正な批判:不整合、レガシーAPI、コードベースのばらつきは実在します。
古い批判:現代のPHPプロジェクトが2000年代初頭のPHPそのものだと決めつけるのは誤りです。
実際には、違いを生むのはツールよりもチームの運用や慣習であることが多いです。
PHPの評判はしばしば過去に書かれたコードに結びつけられます:HTMLとロジックが混在したファイル、ばらつくスタイル、サーバー間で"動く/動かない"が起きるような慣習。
PHP 7と8+は単に機能を追加しただけでなく、エコシステムをよりきれいで速く保守しやすくする方向へ導きました。
PHP 7はコア内部を見直して大幅なパフォーマンス改善をもたらしました。
同じアプリケーションが同じハードウェアでより多くのリクエストを捌けるようになり、トラフィックあたりのコストが下がりました。共有ホスティングや負荷の高いWordPressサイト、売上に直結するページロードタイムを気にするビジネスにとって大きな意義がありました。
PHP 8は大規模なコードベースをより理解しやすくする機能を導入しました:
int|string)は値が取り得る型を複数明示でき、推測やツールの支援が効きやすくなります。現代のPHPプロジェクトは通常Composerという依存管理ツールに依存します。
ライブラリを手でコピーする代わりに、依存関係を宣言して適切なバージョンをインストールし、オートローディングを使えます。これが現代のPHPを旧来のコピペ時代と一線を画す理由の一つです。
古いPHPはアドホックなスクリプトを連想させます。現代のPHPはバージョン管理された依存関係、フレームワーク、型付けコード、自動テスト、そして実際のトラフィックに耐えるパフォーマンスを持つことが多いです。
PHPはノスタルジーの選択ではなく、多くのウェブ業務で今も適した実用的なツールです。
重要なのは制約に合わせて選ぶことであって、イデオロギーで決めることではありません。
PHPは以下の用途で強みを発揮します:
「多くの開発者が既に知っている」「ホスティングがどこでも使える」といった利点で摩擦を下げたいプロジェクトにはPHPが有利です。
次のような場合は別のスタックを検討してください:
新規プロダクトを作る際に、型付きAPIやモダンなアーキテクチャのデフォルトが重要なら別の選択肢が向くこともあります。
次の点を検討してください:
PHPの起源から学べるのは普遍的な教訓です:アイデアと動くソフトウェアの距離を縮めるツールが勝つということ。
PHPに投資し続けるか、新しいサービス(例:ReactフロントエンドとGo API)を並行して作るかを評価するときは、素早いプロトタイプが多くの不確実性を解消します。Koder.ai のようなプラットフォームは「まず出す」ワークフロー向けに作られており、チャットでアプリを説明して動作するプロジェクトを生成し(React + Go + PostgreSQL など)、計画モードやスナップショット、ロールバックといった機能で迅速に反復できます。準備ができたらソースコードをエクスポートできます。
より実用的なガイドは /blog をご覧ください。デプロイやサービスの比較なら /pricing がコストの見積もりを助けます。
ラスムス・レルドーフは、自分の個人サイトを維持するための小さなC言語ベースのユーティリティ群を作りました――訪問者の記録、ページ部品の再利用、簡単な動的出力の処理などです。
目標が“繰り返しの作業を減らすこと”であり、「完璧な」言語設計を目指すものではなかったため、PHPは実用性を第一にした作りになりました:デプロイが簡単で、HTMLに組み込みやすく、ウェブに特化した便利な関数群が揃っていました。
1990年代半ば、ほとんどのページは静的なHTMLでした。フォームやカウンタ、ユーザーごとの表示など動的な要素が必要な場合は、CGIスクリプト(多くはPerlで書かれていた)を使うのが普通でした。
それでも動的コンテンツの構築は面倒で、HTMLページに小さなサーバー側の処理を埋め込む感覚とは異なり、別プログラムを書いてHTMLを出力するという考え方になりがちでした。
CGIプログラムは通常、リクエストごとに別プロセスとして実行され、権限やサーバー設定などの準備が必要でした。開発者のメンタルモデルも「ウェブページを編集する」より「HTMLを出力する小さなプログラムを書く」に近かったのです。
PHPは動的出力を「ウェブページを編集する」感覚に近づけました:HTMLを書き、そこに小さなサーバー側のスニペットを追加してアップロードし、ブラウザでリフレッシュするだけで結果が見られます。
PHP/FIは「Personal Home Page / Forms Interpreter」の略で、フォーム処理や動的ページ作成に特化した初期公開バージョンでした。
重要だったのは、ページ内にサーバー側コードを埋め込めることと、フォームや簡易データベースアクセスなど日常的なウェブ作業向けの組み込みヘルパーが揃っていた点です。これが当時のウェブ開発の負担を大きく減らしました。
HTMLを主文書として保ち、そこに小さな動的部分を差し込むアプローチは、非専門家の学習のハードルを下げました。名前を出力したり、結果をループで表示したりといった簡単な動作を、完全に別のテンプレートシステムを導入せずに実現できたのです。
この手法は共有ホスティング上で段階的にサイトを成長させるやり方にもよく合っていました。
PHPを公開すると、他の開発者が修正や小さな機能、アイデアを送ってきました。
このフィードバックループでPHPは「一人の道具箱」から、多くのウェブマスターのニーズを反映するエコシステムへと変わっていきました。ドキュメントが整い、エッジケースが修正され、利用しやすい慣習が生まれていきました。
PHP 3は大幅な書き直しで、コアエンジンを整理し "PHP: Hypertext Preprocessor" という名前を採用しました。
このリライトにより言語はより一貫性を持ち、拡張しやすくなり、単なる寄せ集めのスクリプト群から安定して拡張可能なプラットフォームへと進化しました。
Zend Engine(アンドゥイ・グットマンズとジーヴ・スラースキによる)は、PHPのランタイム内部を改善しました。これにより実行速度が向上し、内部構造が整理され、拡張機能を追加しやすくなりました。
この改善は、ホスティング業者が広く安価にPHPを提供できるようにし、大きなコードベースを扱うチームがより予測可能な動作を得られるようにした点で重要でした。
LAMP(Linux + Apache + MySQL + PHP)は、特に共有ホスティング時代における動的サイトの“定番”でした。
PHPはApacheのリクエスト/レスポンスモデルにうまくはまり、MySQLとの接続も容易だったため、データベース駆動型サイトが同じツール群で手早く構築できる環境が整いました。結果として多くのサイトが同じスタックに標準化され、PHPは事実上のデフォルト選択となりました。
現代のPHP(7や8以降)は大きなパフォーマンス改善や保守性向上の機能を導入し、Composerによる依存管理やより型を意識した記述が主流になりました。
選ぶべきかは状況次第です。WordPress/Drupal/Magentoなどのエコシステムを使うなら利点が大きく、安価で広く提供されるホスティングやシンプルなデプロイが重要ならPHPは合理的な選択です。既存のPHPコードベースを拡張する場合、段階的なモダナイズは全面的な書き換えより費用対効果が高いことが多いです。