今回,取材させていただいたのは(株)ビート・クラフトの小山哲志さんとヤフー(株)の荻原一平さん。お二人ともPHPユーザ会でご活躍です。さらに今回は,「見学」ということで,アシアル(株)の亀本大地さん,グリー(株)のエンジニア一井崇さんもご同席。PHPユーザの方々に囲まれて,弾さん危うし?!
プロフィール
弾:まず,ご職業は?
荻原:ヤフー(株)でWebエンジニアをしていて,Yahoo!ウォレットっていう動画などの有料コンテンツを売ってる仕組みがあるんですけど,そこのフロントエンドを中心に,PHPなどで開発しています。
小山:ビート・クラフトって会社にいるんですが,私の仕事は受託開発なんで,いろんなお客さんから案件がきてPHPやほかの言語で開発してます。
弾:補足しますと,僕のブログにバナーがいっぱい入っていて,このバナーを集めてくるのはAMNという会社(注1)がやっているんですけど,そこの広告を置くエンジンを作ってらっしゃるのが小山さん。
- 注1)
PHPの言語設計
弾:(編集部の用意した)質問リストにはPHPがdisられてるという話題も入っているんですけども,PHPは言語の中でデータ構造持ってるわけじゃないですか。あのarray( )の仕様(注2)って何?
小山:ここら(コミュニティなど)の人は結構嫌がってて,パッチ(注3)が出たんだけど,(開発者メーリングリストでは)もう喧々諤々…。
弾:PerlなりRubyなりPythonなりっていう言語がいっぱい出てるわけですよね。PHPはそれ見ながら開発が進んできたはずですよね。
小山:見ながらっていうよりも…。でもPerlの影響はもちろんすごくでかいですよね。関山さんのarrayパッチに関するPHP-DEV MLの議論を見てて思ったんですけど,議論は保守的な方向に流れるんですよ。リーダーが1人いるわけじゃなく,みんなでゆるーく合議して決まっていくので,いやだって言う人が3人くらいいると,それで議論が止まっちゃうんですね。
弾:じゃあ審美眼のある人がいないんだ,今。
小山:昔からそうだったと思いますね。とか言いながら結構ドラスティックな言語仕様の変更とかも入っちゃって,その辺はよくわからない。
弾:(それぞれが)つながってないような印象を受けるんですけども。
小山:個々のパートによります。すごく互換性を考慮してやってるとこもあるし,でもあるときわけのわかんないのがパーッと入っちゃうのもたまにあるんですよ。まあ外から見てると統制は取れてない。
- 注2)
たいていの言語は配列を [1, 2] などと記述できるのに対し,PHPは array(1, 2) とわざわざ“array”を書かなければいけない。
- 注3)
PHPの開発メーリングリストにおいて日本人コミッタの関山隆介氏が送った,配列定義を[1, 2]などと記述可能にするパッチ。関山さんのブログは「讃容日記」。
PHPはDSL?
弾:やるならたとえばRuby 1.8と1.9とか,あるいはさらにPerl 5と6くらいドラスティックにしてほしいんですよね。Webページ埋め込み型の言語は膨大な需要があるっていうのはPHPが証明したわけじゃないですか。それはほんとすごいことだと思うんですよね。だったら悪い習慣まで新しいユーザに押し付ける必要ねえじゃんと。僕はそれが一番言いたい。
高橋征義さんの2年前のYAPCでやったプレゼン(注4)があるんですけども,Babel-17っていう,宇宙人の兵器でかつ言語,これを覚えると頭がよくなるというSFものがあって。ものすごいストーリーをはしょって言うとそうなっちゃうんですけども,高橋さんはRubyistですからRubyがそれなんだというんですが,PHPって,これ言うと怒られるかもしれないけど「逆Babel-17」じゃないかと(笑)。使うとなんかあほになってくって感じがするんだよね(笑)。
小山:たぶんね,そういう部分もあると思う。Rubyはまつもとさん(注5)の思想なりなんかがきっちり入ってて。
弾:そう,主義を押し付けてるわけで。
小山:アレに慣れるとまつもとさん的なプログラムの考え方を受け入れるんですね,それですごい効率的になるんですけども,たぶんPHPってそれを求めていなくて,悪い言い方をすれば,あほでも使える言語を極めようとしてるんだと思うんですよね。今PHPを使ってる人にとってはあの仕様がすべてなんですよ。それを変えるということは,逆にわかりにくい。たぶん求めるもののレイヤが違うんですよね。
弾:だとしたら,いろいろやりすぎてない?っていうのがもう一つあって,PHPは当初はDomain Specific Language(DSL)だったわけですよね。HTMLに埋め込んだらそれがそのまま動きますってのがPHPの一番のレゾンデトール(存在理由)じゃないですか。DSLって,複雑でないってのも重要な案件としてあると思うんですよ。自分が得意な部分は徹底的にやるけれども,不得意な部分は「私はこれが不得意です」ってわかるようになってたほうがいいと思うんですよ。いい例がRegex。Regular Expression(正規表現)。これもDSLじゃないですか。PHPだと関数は際限なく増えてく。あれなんとかならないすかねえ。
小山:ならないと思うよ。
弾:それはPerlのuseのほうがいいなあと。どのレイヤで覚えるのかっていうのがあるんですよね。
- 注4)
「The first postmodern computer language vs the first babel-17 computer language: Ruby」
- 注5)
Ruby開発者のまつもとゆきひろさん。

