またphpネタで盛り上がってる

こういう波って本当に定期的に来るよね。特に何も書かずにスルーしてたけど、うっかり書いてしまいました。

まず自分の過去を振り返ってみると、2001〜2003年頃は共用ホスティングでPerlCGIを書いてました。それこそhogehoge.cgiにprint文が山盛り入ってるようなのを書いてた時代。当然CPANなんて全く無縁の世界。

phpを使い始めたのは2004年。自分が仕事をするステージではPerlよりもやれることが多かったのと、htmlの中に部分的にスクリプトを組み込むというスタイルが当時の自分にとって都合がよかったというのが大きな理由でした。5.1からはphp5に移り、オレオレフレームワークなんかを書いたりしながらやってきました。そして、今また改めてPerlをやり始めてるという状態です。RubyRailsの本を買ってパラパラと目を通した程度なので語れません。そんな自分の視点から。

言語としてのphpには確かにダメな部分が多いと思います。まつもとさんのエントリで挙げられているphpのダメな点というのは、途中までは基本的に同意。

  • PHPで書かれたたくさんのアプリがあるがどれもHTMLとロジックが分離されてない(本当?)
  • PHPは初心者に学びやすい」と言われる。確かにそうかもしれないが、 おかげでどれだけのSQLインジェクションやらXSS脆弱性やら、 ひどいコードが放置されていることか
  • グローバル。使うんじゃないってば。

あたりは「phpはダメ言語」という論拠としては言いがかりに近いものを感じてしまいましたが。昔の非use strictなPerlCGI圏もそんな感じだったし、今時のphpの書き方してればそうはならないし。

ただ、僕はphpの今後というのは正直明るい材料が少ないと思っていて、そこには上記のようなことが大きく関係してます。

必ずしもphpが悪いわけじゃないような問題に対して、「こう書くべきだ」という思想を言語として明確に示してこなかったこと。言い換えれば「よい設計/よいコード」をphp自身が後押ししてこなかったことがphpの最大の失敗ではないかと思っています。

特に初学者に対してそういう教育的な配慮がされてこなかったことはdisられて当然だろうと思います。phpは「安価な共用レンタルサーバで簡単にプログラムが動かせる」という見方をされることが多いし、実際そういう用途にはうってつけでしょう。それ自体は何も悪いことではない。問題はそこで「初めてプログラムを書きました」というような人がいいコードを書くように誘導していないこと。

コードが動くか動かないかの閾値を低く設定して、「とりあえず動く」を優先したphpの戦略はかつては正解だったと思います。まだWebアプリケーションのセキュリティ意識が今よりもずっと低かった時代は、とにかく動くことを優先して、多くの人に触れてもらうという4スタンスもよかったと思います。しかし、今の時代に求められるのは、初学者がガイドに沿ってコードを書いたらそれがいいコードになっていた、という教育的な配慮ではないでしょうか。それがないから「おかしなコードを書くことを助長する言語」としてdisられるわけで。

僕は今でもphp4.4は出すべきではなかったと思っています。5.1からそのままphp5一本に絞っていれば、今はもう少しましな状況だったんじゃないかと。php4を切り捨てることは大きな痛みを伴うにしても、いずれはやらなきゃいけないことだったんだから。あの当時はネットでも書籍でもphpが今よりもっと盛んに取り沙汰されていたし、そこで大々的に移行をしてしまうべきだったというのは当時も今も自分の意見としては変わっていません。

php5がそこまで素晴らしい物だとは思っていないけど、それでもphp4/5が混在して収集が付かなくなっているよりはずっといいはずです。ダメなところはよくしていけばいい。けれど、互換性の名の下にダメな物を保守していくというのは、進化を阻害することになりかねない。進化という意味ではphp6なのかも知れないけど、とにかく「php4をどうするか」みたいな話が現役バリバリになってる状況をとにかく片付けないとどうにもならんだろう。

とこんなことを書いてると「お前phpの人間じゃなかったのかよ」と思われるかも知れませんが、別に「phpはダメ言語。使い物にならん」なんてことは微塵も思ってません。5.2系で真っ当な環境を整えてやれば、ツールとしてのphpは目的を達成するのにとても有効な手段だと思います。逆に、php4はツールとしても今から始めるにはよくない材料でしょう。最近になってようやくさくらインターネットがphp5標準に移行してきているようですが、ちょっと遅すぎた感があります。ここからいい流れになって来るんでしょうか…

逆に、自由が利く環境であればphpでなくてもいいというのもあります。「phpだけの人」になりたくないという思いもあって、今よちよち歩きでPerlに手を付けてます。ひたすらphpに集中していくというのも、それはそれで立派なスタンスだと思いますが、僕には向いていないようです。Perlで新しい力を身に付けて、それをいずれphpサイドに還元できたらいいなというのが今の率直な気持ちですね。

僕にとってphpはやはり「目的を達成するためのツール」という位置付けが強いです。そりゃ、4年も使ってれば愛着は沸くけど「php Love!」と胸を張って言えるほどではない。けど「phpみたいなダメ言語を使ってるPHPer(笑)」みたいな流れには口を挟みたくなる。そんな微妙な心境です。

PEARに関しても思うところはあるけど、それはまた別の話。