「PHPは古い」と言われがちな理由をComposer視点で考える

PHPが「古い」と見えるのは言語仕様より“運用の歴史”の影響が大きい

結論から言うと、PHPが古いと言われる理由の多くは文法や性能ではありません。
パッケージ管理と依存関係の扱いが長い間統一されていなかったことが最大の要因です。

そして、この問題を埋めたのがComposerでした。
つまり「PHPが古い」の正体は、言語の問題というよりエコシステムの成熟タイミングの問題です。

この視点で見ると、評価の理由がかなり具体的に理解できます。

Composer登場前のPHPは“再現性”が弱かった

ライブラリ導入が手作業だった時代

かつてのPHP開発では、ライブラリ導入は次のように行われていました。

  • ZIPをダウンロード
  • 解凍
  • include / require
  • パス調整
require_once 'lib/Smarty.class.php';

これは小規模サイトでは便利でした。
しかしチーム開発になると問題が出ます。

  • 誰がどのバージョンを入れたか不明
  • 本番と開発でファイルが違う
  • サーバーに直接修正が入る

つまり、同じコードでも同じ結果にならない状態です。

現代の開発では当たり前の「再現性」が弱かったのです。

他言語は依存関係が先に整備された

同時期の他言語を見ると違いがはっきりします。

  • Ruby:Bundlerで依存固定
  • Python:virtualenv + requirements
  • Node.js:npm

これらは早い段階で「プロジェクト単位の依存管理」を持っていました。
その結果、開発手順が統一されました。

PHPだけは長く、サーバーごとに状態が違う文化が残りました。
この差が「近代的ではない」という印象を生みました。

Composerが変えたのは“開発手順”

Composerが導入したのは単なるパッケージ管理ではありません。
開発の手順そのものです。

セットアップが1コマンドになる

composer install

このコマンドの意味は大きいです。

  • 依存関係を取得
  • バージョンを固定
  • autoload生成

つまり「環境構築の手順書」が不要になります。

> Git cloneしてcomposer installするだけで動く

これは現在では当たり前ですが、PHPでは比較的新しい文化です。

autoloadが評価を変えた理由

もう一つ重要なのがautoloadです。

昔のPHPはファイル読み込みに強く依存していました。

require_once 'User.php';

この書き方は自由度が高い反面、構造がバラバラになります。
フレームワークごとにルールも違いました。

Composerのautoloadはこれを統一しました。

require __DIR__.'/vendor/autoload.php';

PSR-4規約により、

  • ディレクトリ構造
  • 名前空間
  • クラス配置

が揃います。
結果としてコードの可読性と移植性が大きく向上しました。

つまり、Composerはパッケージ管理以上にPHPの設計ルールを標準化したのです。

なぜ評価はすぐ変わらなかったのか

ここが面白い点です。
Composer登場後も「PHPは古い」という評価は残りました。

理由はシンプルです。

> 古い書き方のコードが大量に残っていた

Webは長寿命です。
10年前のPHPが今も動いています。

  • 直接SQL
  • グローバル変数
  • 手動include

これらが検索結果に多く出ると、新規参入者は「PHPはこういう言語」と認識します。

つまり評価は現在の技術ではなく、過去の資産に影響されます。

注意点:Composerがあっても“書き方”は強制されない

ここは誤解しやすい点です。
Composerは標準を提供しますが、強制はしません。

極端な例では、Composerを入れても次のようなコードは書けます。

require 'vendor/autoload.php';
include 'legacy_functions.php';

つまり、良い設計を保証するツールではありません。
選択肢を提供するだけです。

そのため、古い書き方のPHPが残り続け、評価の更新が遅れました。

「古い」という評価の正体

整理すると、PHPが古いと言われる理由は3つに分解できます。

  • 依存管理の統一が遅れた
  • 過去資産が多い
  • 書き方の自由度が高い

このうち1つ目を解決したのがComposerです。
ただし2つ目と3つ目は、言語の特性として残ります。

まとめ:PHPが古いのではなく、進化の経路が違った

PHPは設計された言語というより、使われながら進化した言語です。
そのため、近代的な開発文化の導入が後からになりました。

Composerはその転換点でした。

  • 再現可能な開発
  • 依存関係の固定
  • 構造の標準化

これにより、現在のPHPは他言語と同じ土台に立っています。

「PHPは古い」と感じる場面の多くは、今のPHPではなく“昔のPHPのコード”を見ている時です。
そして、その境界線にあるのがComposerと言えます。