T

なぜPHPが勝ったのか

何日か前に「なぜPHPが勝ったのか」と題するエントリを読んだ。勝ったというのが、PHPがここまでポピュラーになり、ポピュラーであり続けているということを指すなら、まさにそうだろう。著者はスタートアップ企業のCTOで、その立場からなぜ自分がPHPを開発プラットフォームとして選択するのかを説明している。言語としてではなく、プラットフォームとしてというのが味噌だ。

このエントリをざっとまとめると:PHPの言語仕様のまずさこそが勝利の原因だ。

前提として、PHPにはそれなりの実績がある大量のコードが既にあり、そのユーザ数も多く、サポートするコミュニティも大きい。その上で、こんな理由を挙げている。

以下、要約。

PHPが勝った理由その1:イテレーションの早さ

PHPなら最初からApacheモジュールとして動作して、再読み込みしても軽快に動作するし、ウェブサーバの再起動なしに再読み込みさえすれば変更内容を確認できる。

PHPが勝った理由その2:貧弱なマッピングとコードとプレゼンテーションの混在

URLをファイルにマッピング、コードとプレゼンテーションをごちゃまぜにする。PHPのアプリケーションではこんなことも許される。普通、頭のいい開発者ならバックエンドの言語が何かURL部分に埋め込んだりはしない。edit.phpが編集画面でregister.phpが会員登録画面だ、なんて間抜けのすることだ。

でも、このやり方だと、ある機能の改修が必要になったとき、どこのコードをいじればいいのか考える必要は全くない。会員登録画面でエラーが出るようになったと連絡が入れば、URLマッピング用の正規表現を一生懸命読んでどのファイルがこの機能を担当しているか探したりせず、あわてずregister.phpを開いて、そこから修正箇所を探せばいい。ボタンのサイズを変えて登録ボタンをもっと目立つようにしたいなら、やっぱりregister.phpを開けばそこにはHTMLとPHPのコードがごちゃごちゃ混在しているはずだから、HTML部分をいじっておしまいだ。ある規模までのアプリケーションなら実はこれでも動くっちゃ動くし、十分っちゃ十分だ。HTMLならわかるけれどもプログラミングには不慣れな人だって、どこかからコピーしてきたコードさえあれば、あとはどこに貼りつけるかの問題にしかならない。

PHPが勝った理由3:ぐちゃぐちゃだが膨大な標準ライブラリ

今日ではプログラミングというのは名人芸のアルゴリズム作成というよりは、ほとんどが半可通のプログラマによるたんなるデータ処理であって、データを上手に処理できる言語にはたくさんの標準ライブラリが必要だ。PHPには、データベースドライバや正規表現、HTTP通信など、とりあえずなんでも一通りそろっていて、さらにプログラミング言語としては悪いことに、まともなパッケージ配布システムやモジュール化も進まずに、単一のインタプリタにすべてが同じように放り込まれている。システム管理者、セキュリティコンサルタント、プログラミング言語の純粋主義者、公開したくないライブラリをバンドルしたいサードパーティ企業をいらつかせるこのやり方は、開発者にはありがたいことで、どこでもたいてい同じような環境になり、コードの再利用も進む。

PHPが勝った理由4:オブジェクト指向プログラミングのサポートが貧弱

叩きどころ満載のPHPだが、特にオブジェクト指向プログラミングのサポートが貧弱であると叩かれることが多い。今日ではかなり改善された一方で、PHPのオブジェクトは長いこと辞書に毛が生えたようなものでしかなかった。

オブジェクト指向の長所の一つにカプセル化がある。しかし、実際のところ、PHPのアプリケーションではオブジェクトはリクエスト毎に作成され、利用され、そして捨てられるものだ。ステートレスに動作しているアプリケーションでオブジェクトの状態がどうこうというのは、実地にはあまり意味をなさない。委譲については、PHPはストレージ部分はMySQLなりmemcachedなり他のプロセスにやってもらうわけだから、外部のプロセスへの簡単なラッパさえあれば事足りてしまう。

ゆえに、これといってオブジェクト指向でないプログラムでも十分ということになり、これまた非プログラマを引き寄せることになる。

そもそもウェブ自体がコードの存在はURLの背後に隠れたものであり、ブラウザからのリクエストをベースにしたステートレスなものなわけだから、PHPのスクリプト自体が一個のオブジェクトみたいなものであり、HTTPが定義するインタフェースを実装したカプセルなのだ。

最終的にPHPが(ウェブプログラミングの世界で)勝利したのは、ウェブの基礎に絡み合ってその写し鏡のようになった言語であったからで、古典的な意味でのエレガントさにそれらを落とし込もうとしたからではない。

もちろん、セキュリティはどうなる!?とか、大規模開発ではこうはいかん!!とか、やっぱPHPは馬鹿用言語だよな、とか、いろいろな異論反論はあるだろう。それらも間違いではないと思う。でも、PHPは非プログラマに最適だとか、言語仕様としてまずいのがその手の人たちに受け入れられた理由だというのは説得力がある。もちろん、PHPでプログラマが仕事をすることは可能だし、すごいものを作る人もいる。もちろん、とか言い出すときは本当はその後にくることが本当に言いたいことなわけだが、ここでもその慣習に従うと、しかしながら、ポピュラーな言語になるには、非プログラマに非プログラマであるままで仕事をさせてしまうという手もあり、それは今のところ結構有効だ、ということだ。もちろん言語設計者としてそれは許し難いという考え方もあるだろうし、ポピュラーになること自体で勝負するのは無意味というのもひとつの知見としてそれはそれで正しいのだが。

Posted by on 1月 19, 2009 in PHP

Comments

  • […] 非常に反応の薄い「なぜPHPが勝ったのか」について、海外ではそれなりの反響があったようだ(「ときどきの雑記帖」さんは面白い情報が多くてよく読むんだけどトップページの2009年1月分のリンクが間違っているのでなんとかお知らせしたいのだが画像が表示されないのでメールアドレスがわからない)。 […]

  • コメントを残す