レポート

PHPの生みの親,ラスマス・ラードフ氏インタビュー

この記事を読むのに必要な時間:およそ 15.5 分

PHP7で自分の書いたコードが全部動かなくなるということにはならない

―――― なるほど,ありがとうございます。基調講演ではPHP7について話していただきました。私たち開発者が注目すべき点はたくさんあると思いますが,最も重要な点を一つ挙げるとすれば?

ラスマス:PHP5や6,あるいは5.5や5.6から7への移行は大きな作業ではありません。たぶんPHP5.2から5.3になったときのほうが違いは大きかったですよ。

―――― 確かに。

ラスマス:しかし,新しいメジャーバージョンだけに皆さん不安なのでしょう。自分の書いたコードが全部動かなくなるのではないか,修正に大変な手間がかかるのではないか,と。ですが,そういうことにはなりません。皆さんに理解してほしい一番重要な点を一つ挙げるとすれば,PHPで書かれたコードにとっては,どちらかというとマイナーアップグレードだということです。

まあ,そのコードが相当古くてPHP4準拠だったりしたらさすがに問題ですが,だとしたらPHP5に移行する時点でとっくに支障が出ているでしょう。その場合,問題はPHP7には関係ありません。いまだにPHP4に依存しているという事実が原因です。それなりにモダンなPHP5コードで,拡張モジュールも使っていないなら,アップグレードは楽々です。基調講演で質問された人のように,独自の拡張モジュールを使っていれば,たしかにそれを書き直す作業は必要になりますね。しかしそういうケースはごくわずかでしょう。独自の拡張モジュールを使っているところはほとんどありません。

―――― ええ,ありがたいことに。ラスマスさんが以前におっしゃったことの中で,個人的に感銘を受けた言葉があるんです。「いま私たちが知っているPHPは,私が開発したのではありません。100人と言わずとも,何十人もが開発してきたものです。私は最初のPHP開発者にすぎません」

ラスマス:ああ。

―――― 合ってます?

ラスマス:言いました,言いました。

―――― とても感銘を受けました。

ラスマス:でも事実ですよ。PHPに私が書いたコードが何行残っているか数えてみれば,私がもう主要なコントリビューターでないことは明らかです。私が書いたままのコードは年々減ってきています。いつかはゼロになればいいなと思います。そのうち,そういう日も来るでしょう。もちろんバグ修正はたくさんしましたが,バグ修正はコードを書いたうちに入りません。

―――― まるで引退しようとしているようにも聞こえますが……。

ラスマス:そうですね,いずれはこの仕事から身を引くつもりです。私より腕が良くて,若くて,情熱もあって,もっと時間を持てあましている人々がいますからね。私も22歳で独身だった頃なら,一日に16時間,18時間もひたすら仕事に打ち込めたでしょう。実際私がPHPのコードを書き上げたのも22歳のときでした。今はもう22歳の若手が何人も出てきました。たとえばニキータ・ポポフとか……いや,彼はもっと若いか。しかし必要なのは熱意ですから。そういう,私よりずっと優れた頭脳と多くの時間を注ぎ込める人々がいるわけです。

だからあちこち出かけていって,PHP開発に若い開発者たちをもっと呼び込めたらいいなと思います。私には息子と家庭があります。仕事の心配もしなければなりません。プログラミング以外にやらねばならないことがたくさんあります。それでPHP開発の主要な部分からは身を引いているのです。実際,今は主要な部分にはもう関わっていません。それ以外の部分でもいずれ後進に道を譲れればと思っています。

―――― そういうことが起きているのはPHPだけでしょうか,それとも……。

ラスマス:他ではあまりないことかもしれませんね。大きなオープンプロジェクトのほとんどには,誰かしら非常に熱心な中心人物がいて,その人が大半のコードを書いているものです。とはいえ,リーナス・トーバルズはもうそれほどコードを書いてはいませんね。最近ではおおむね,調整役を務めたり,パッチが悪影響を及ぼさないようにチェックしたりといった,すべてがスムーズに動くようにするのが役割のようです。グイド・ヴァンロッサムや他の人については,今どれぐらい実際にコーディングをやっているのかは知りませんが。グイドはまだ結構やっていそうだな。しかし,まあ,早々に大部分を他人に任せてしまったという点で,私は珍しいほうかもしれません。

―――― 世代交代はコミュニティの活動レベルを保つことにもつながりますね。PHPコミュニティは非常にうまく機能していると思います。

ラスマス:まったくです。

―――― 保守はされていないが,持続可能ではある,というか……。

画像

PHPは垂直方向に見れば整合性がある

ラスマス:たぶん,そうなるのが必然だったのでしょう。PHPは一人で保守するには大きくなりすぎました。もし私がコントロールを維持するために,パッチはすべて自分を通さないと出せないようにしていたら,とうていやっていけなかったでしょう。そもそも私は面倒くさがり屋ですし,PHPはサポートする範囲が広すぎます。私は20種類ものデータベースをそれぞれ熟知しているわけではありませんから。たとえば,Oracleのエンジニアがパッチをサブミットして,Oracleの何とかかんとかのために,これを変更したいと言ったとします。それをどうすべきか私には判断できません。適用したほうがいいかもしれないが,そうでないかもしれない。Oracleのエンジニアは修正する必要があると言っている。PHPの多くの部分は,何人もが日夜取り組んで作りあげたものです。

私が一人で作るよりずっとよくできているコンポーネントにあれこれ手出しをしてボトルネックを作るのは,合理的だとは思いません。PHPとは実のところ,個別に開発されたパーツの寄せ集めなのです。整合性がないように見えるのは,それぞれ独立したチームが開発しているからで,Oracleに関することはOracleエンジニアたちがやっているのです。MySQL拡張モジュールはMySQLの人々が作りました。必ずしも互いに話し合う必要はないのです。たとえば,PHPにはPDOがありますが,これはあまり優れた抽象化レイヤではありません。多少の抽象化は試みましたが,本気でOracleやMySQLを使いたい人はMySQLiやOCIなどのネイティブインターフェイスを使うでしょう。どちらもそのデータベースを熟知して毎日使っている人々が書いたものです。だから整合性はなくても,どのモジュールもそれぞれ非常によくできているのです。

モジュール間での共通性には欠けるかもしれませんが,OCI拡張モジュールもMySQL拡張モジュールも,下で動いているC APIにほぼ1対1で対応している点において整合性があるといえます。MySQLドキュメントのC APIに関する部分を見てみれば,PHP開発者にとってはなじみ深く感じられるはずです。どの低レベル関数もPHP側の何かと対応しているからです。だからPHPは垂直方向に見れば整合性はあるのですが,多くの人から始終「PHPはまったく整合性がない」と言われます。整合性は確かにあるのです。ただ,人々が思っているような水平方向にはないというだけです。垂直方向に見れば,完璧な整合性があります。

―――― それはすごい。

ラスマス:たとえば文字列関数。UNIXコマンドラインでmanしてstrchrの項を見てみると,UNIXとCとではstrchr関数の引数の順序も書式もまったく同一なことが分かります。どちらも同じライブラリをベースにしているのですね。水平方向に見れば両者に整合性はありませんが――おそらくあのライブラリ群を作った人たちは互いにあまり話し合わなかったのでしょう。

私たちがPHPの整合性のなさを直さないと言ってよく非難する人がいますが,PHPはそもそもそれが問題になるようなものではないのです。PHPは結局,ライブラリやその他基盤となっているテクノロジーへのショートカットにすぎません。それなのに,どうして誰もがPHPレベルでの整合性を求めるのか,私には分かりません。整合性をとるのはフレームワークの役割です。フレームワークは問題を解決するための全体的なアプローチを定める場所ですから。PHPはその下のレベルにあって,ただ低レベルにあるライブラリとか関数とかへのアクセスを提供するだけの存在です。こう言っても多くの人は同意してくれないんですが,PHPはそういうふうに開発されたものですから。

PHPはハンマーのような単純な道具

―――― PHPにとって,この20年で最も印象的だったことは何でしょう?

ラスマス:最も印象深かったのは,人々がPHPでプロジェクトを作り始めたことだと思います。PHPはツールです。ハンマーのようなものです。何の変哲もない道具だけれど,それを使って作られたものは人々の暮らしを変えてきました。昨夜も話しましたが,スリランカのプロジェクトでSahanaという災害時情報共有システムがあります。そういうインフラが被災地に整っていない場合でも,このパッケージをロールアウトすることで,外国からの支援,救援活動拠点,シェルター,その他もろもろを管理する即席インフラを展開することができます。実際,これで多くの人命が救われました。Sahanaのようなプロジェクトが生まれたのはとても感慨深いことです。もっと大規模な,たとえばFacebook,Yahoo!,Wikipediaなど私たちの生活を確実に変えたものも,みんなPHPで書かれたのです。少なくとも最初はね。

ですから私にとって最も印象的だったのは,自分が作ったそのツール,そのハンマーが,結果的に社会を世界規模で造り替えることになったという事実です。これ以上印象深いことがあるでしょうか。社会を造り替えたのはハンマーを作った男ではなく,それでものを作った人々です。ハンマーを使った人々です。

私を称賛するのはダ・ヴィンチの絵筆を作った職人をほめたたえるようなものです。それが誰だったかなんて誰も知りませんし,知ろうとも思わないでしょう。しょせんは絵筆です。知るべきは,それで絵を描いたのがどういう人物だったかです。その絵こそが世界を変えたんですから。だから私に感想を聞くというのは,ダ・ヴィンチの絵筆を作った職人にインタビューするようなものです。私は絵筆を作りました。それをダ・ヴィンチに渡しました。ダ・ヴィンチはすばらしい絵を描きました。どうして私に話を聞きたがるんですか?と。

―――― 偉大なのはダ・ヴィンチのほうだ,ということですか。

ラスマス:ええ。だって事実ですよ。ハンマーはハンマーです。別に面白くはない。面白いところなんてなんにもない。だから,世界を変えたことについてどう思いますか,などと聞かれるとどうにも困ってしまいます。いったい何の話だろう,あれが世界を変えたわけじゃないのに,あれはただのハンマーなのに,と。

―――― そのハンマーはよく売れましたよね。今では80%の人が使っているわけで。

ラスマス:そもそも単純な道具ですからね。どこをどうやっても失敗しようがない。たまたま一番大きいハンマーだったというのはあるかもしれませんが……。

―――― いずれにせよハンマーは必要だったわけですよね。しかし結果的にインターネットの8割,9割であなたのハンマーが使われている。その人気の秘密は何でしょう?

ラスマス:人々がそれですばらしいものを作ったからでしょう。WordPressとか,Drupalとか,Facebookとかを。

―――― その人たちはなぜPHPというハンマーを選んだのでしょう?

ラスマス:使いやすいからです。始めるのが比較的簡単だから。

―――― それだけですか?

ラスマス:ええ。たとえば,あなたがマーク・ザッカーバーグは非常に優れたプログラマーだと尊敬していたとして,Facebookが世界的なアプリになったのは彼が世界最高のプログラマーだからだと思いますか? 思わないでしょう。おそらく本人に聞いても同じ答えが返ってくるのではないでしょうか。面識がないので断言はできませんが,マーク自身,自分を特に優秀なプログラマーだとは考えていないと思います。むしろ,市場を見つけて人や物を動かすビジネスの才能のほうに自覚があるのではないでしょうか。成功するビジネスを築く鍵は,優れたアイデアをタイミング良く思いつくこと,多くの幸運に恵まれること,そして自分が扱える道具があることです。コンピュータサイエンスの博士号を持っているかどうかは関係ありません。

優れたアイデアを思いついた人は,それを実現するツールを探し,世界に送り出そうとします。たいていの場合,そのためにはPHPが最も近道です。こういうものが作りたい。なんにもないけど,どうしたらいいだろう。よし,とりあえずPHPで作ろう,となるわけです。PHPはほとんどどんな人でも,そこそこ賢いサルでも,何かを動かせる程度までは理解できます。セキュリティが完璧でないかもしれないし,スケールできないかもしれないし,処理量が一日5リクエストを超えたとたんに落ちるかもしれない。それでも,とりあえず動くことが分かればイテレートしていけます。

最初のページを立ち上げてみるまで一年半かかるというようでは,機会を失ってしまいます。一年ではなく,3日でそこまでたどり着けるツールが必要なのです。どうせたいていの場合,最初に試作した3つか4つは没にすることになるんですから。やってみないと分からないのです。コードが悪いのではなくアプローチが間違っていたのか,そのサイトを誰もそういうふうに使いたいと思っていたのか,アイデアが間違っていたのか。だから速くイテレートできることが必要なのです。

それに,始めたばかりの頃は手伝ってくれる人を見つけるのも大変なことが多い。いきなりプロのプログラマーに話を持ちかけても「ばかげたアイデアだ,時間の無駄につきあう気はない」と言われるのがおちです。最低限そのアイデアが実現できることを信じてもらえるだけのものを何とか作りあげる必要がある。

そこで単純なハンマー,コンピュータサイエンスの博士号を持っていなくても分かる道具の出番なのです。

―――― この20年で数多くのテクノロジーやツールが流行しましたが,PHPは今もその地位を保ち続けていますね。

ラスマス:いちばん簡単ですからね。

―――― なるほど。

ラスマス:むろん,コンピュータギークの間では異論もあるでしょう。PHPは醜悪だとか,整合性がないとか,だから使いづらい,とかね。使いづらいと思うのは,彼らが期待するものと違うからです。

しかし専門知識があまりない者にとっては別に使いづらくはありません。英語のようなものです。言語としてはひどいものですが,誰でも多少は知っています。どこでも使われているからです。テレビ番組でも映画でも,いたるところで話されています。この世界に生きていて英語を一言も知らずにいるほうが難しい。上手には話せないがすこしは分かる,という程度には簡単になれる。現在のPHPとはそういうものです。

―――― 問題は整合性ではないのですね。

コメント

コメントの記入