恵新宸(ホイ・シンチェン)は、中国国内で最も影響力のあるPHP技術専門家であり、PHP開発グループの中核メンバー、PECL開発者、Zend社の社外顧問です。彼はかつてYahoo!、Baiduに勤務し、現在は新浪微博(Sina Weibo)のプラットフォームおよびデータ部門の総合アーキテクト兼チーフPHP顧問を務めています。恵新宸はPHP NGの中核開発者であり、PHP 5.4、5.5の主要開発者でもあります。PECL開発者としてYaf、Yar、Yac、Taintなどの優れたオープンソース作品をコントリビュートし、同時にAPC、Opcache、Msgpackなどのプロジェクトのメンテナーでもあります。

ネットでPHPチュートリアルを探す初心者からPHP開発グループの中核メンバーになるまで、恵新宸はその全過程がまるで「モンスターを倒してレベルアップする」ようなものだと感じています。Javaと同じくブルーカラー言語とも呼ばれるPHPは、彼の目にはまさに多くのプログラマーを育成できるゆりかごであり、誰もがプログラミングできる時代になれば、必ずや技術進歩を推進できる優れた人材がより多く生まれるでしょう。

質問:どのようにしてプログラミングに興味を持ち始めたのですか?

私が初めて「プログラミング」をしたのは、確か小覇王学習機の上だったと思います。その後、大学ではコンピュータを専攻しました。大学院のときは学校のキャンパス情報化建設を担当し、能動的にも受動的にも多くのWeb開発業務を行いました。当時の学校の多くの二次部門のウェブサイトやキャンパスBBSの保守なども含みます。考えてみると、これといってプログラミングが好きになったという出来事やきっかけがあったわけでもありません。ごく自然にこの業界に入ったという感じで、嫌だと思ったこともなく、そのまま続けてきました。

質問:どのようにしてPHPが好きになったのですか?また、どのようにしてPHP開発グループの中核メンバーになったのですか?

当時、大学院生のときにウェブサイトを作る必要があり、まったく分からない状態だったのでネットで検索しました。ちょうどPHPのチュートリアルを一つ見つけ、簡単なウェブサイトの作り方が説明されていました。それで試しにその通りに作ってみたところ、インストール、デプロイ(当時は集中型のデプロイツールはありませんでしたが、LAMPのデプロイ方法を教えるチュートリアルもたくさんありました)、コード作成、テストがどれもとても便利で、構文もC言語に似ていて、多くのAPI名もlibc APIと同じでした。こうしてPHPとの切っても切れない縁が始まりました。

確か2011年のことだったと思いますが、そのときBaiduのためにAp(Yafの前身プロジェクト)を開発しました。当時Baidu社内での利用状況は良かったので、PECLにコントリビュートしたいと思い、いくつか修正した後、Yaf(Yet another framework。この名前には少し自嘲的な意味もあります。PHPのフレームワークが非常に多いからです)と改名し、PHPのメーリングリストにメールを送りました。英語が苦手だったので、過程はかなり曲折がありました。幸い、当時Pierre Joyeがとても助けてくれ、YafをPECLに入れることができました。

また、Yafを提出する前から、実はずっとPHPのソースコードを研究していました。そのため、数多くのBugとFixも提出していました。例えば、ある日のお昼にRasmus(PHPの父)がIRCでバグを見つけたと言っていたのを覚えていますが、私はおよそ5分後にはFixを出しました。

徐々に一部の人々と親しくなり、皆の信頼を得た後、私は申請を出しました。その後、PHPコアコードへのコミット権限を獲得し、PHPの直接開発やバグ修正に参加し、開発グループの一員となりました。

コアと言えば、それはゆっくりと積み重ねてきたものであり、実は相互信頼のプロセスでもあります。あなたの仕事が皆に認められれば、皆はあなたの意見を尊重します。私は徐々にDmitry Stogovと親しくなり、Zendの中核部分のコミット権限を得て、多くのコアバグの修正や新機能をコミットしました。その後、Zendの外部顧問となり、ゆっくりとCore Developerになりました。

まるでモンスターを倒してレベルアップするような感じがしますよね。

質問:どのようなきっかけでYafを開発したのですか?当時、BaiduはYafの開発をどのように支援したのですか?

Yafより前から、フレームワークを使うか使わないかについて、実は古典的な議論がずっとありました。それは「フレームワークを使うと性能が低下するが、使わないと開発効率が低下する」というものです。

当時、Baidu社内には多くのフレームワークがあり、オープンソースのYii、ZFなどもあれば、あるチームが独自に書いたものもありました。すると問題が一つあります。それは、クラスライブラリや一部の周辺インフラを相互に連携できないことです。

もう一つの原因は、多くのフレームワーク作者がフレームワークを公開した後、様々な人々がフレームワークに様々な修正を加えることが分かることです。その結果、時間が経つと、一つのフレームワークを公開しても様々な変種になってしまい、その後の統一的なアップグレードも不可能になります。

そこで、私はPHP拡張機能を使ってフレームワークを実装し、これらの問題を解決しようと決めました。もちろん、この拡張機能を書く前は実はあまり自信がなく、拡張機能を採用することでどれだけの性能向上が得られるのか分かりませんでした。幸い、最終的な結果はとても良いものでした。

質問:なぜC言語でYafを書くことにしたのですか?

PHPはC言語で書かれているため、その拡張機能もC言語で書かれています。そこで、YafもC言語で書くことにしました。

質問:なぜBaiduを辞めて、新浪微博に来たのですか?

これには実は多くの理由があります。例えば、当時BaiduではT7でしたが、業務に関する仕事への関与が減り、自分にはやることがそれほど多くないように感じ、少し虚しく過ごしている気がしました。

また、当時私はBaiduの商業検索部門にいて、アクセス量の多いシステムに直接関わっていなかったため、大きなプラットフォームでさらに鍛えたいと思っていました。そして微博はまさにそういったプラットフォームでした。

微博に来てから、確かにこれまで遭遇したことのない多くの挑戦に触れ、自分の知識をより大きな舞台で発揮できると感じています。

質問:現在は新浪微博で具体的にどのような仕事を担当していますか?

現在私は微博の技術部門に所属し、基礎サービスグループを率いています。私たちの主な仕事も段階的に分かれており、最初の2年間の主な仕事は微博のLAMPの性能最適化でした。各種の基盤フレームワーク、ツール開発、環境最適化、規範制定なども含みます。

この2年間で、微博のLAMPアーキテクチャは安定してきており、全体の性能も数倍向上しました。また、自社独自の高性能LAMP総合ソリューションも持っています。そのため、LAMP最適化の作業は少し減りました。現在は主にインフラストラクチャの研究開発に注力しており、例えばキャッシュ中間層、トランスコードサービス、コミュニケーションプラットフォームなどです。

質問:PHP7(PHPNG)は、新浪微博プラットフォームがPHPを使用する際のニーズや痛点(ペインポイント)を重要なフィードバックとして考慮しましたか?

もちろんあります。私が開発グループに加わって以来、他の多くのメンバーと似たような議論をしてきました。私は性能が非常に重要だと考えていますが、ある人は新機能が非常に重要だと考えています。そして、新機能が性能に影響を与える場合には、私たちは衝突します。

私は性能向上に非常にこだわっています。これが、後にDmitry Stogovと多く協力するようになった理由でもあります。彼も特に性能を重視していたからです。

そして私が性能を気にする主な理由は、1%の性能向上が微博のような中国国内最大のLNMPプラットフォームにもたらす価値を、非常に現実的に実感しているからです。現在、微博の全体性能は2年前と比べて大幅に向上していますが、開発効率に影響を与えない場合、さらなる向上は言語や環境の性能向上に依存せざるを得ないと認識しています。そのため、この部分が微博のPHPに対するニーズなのです。

PHP7はWordPress上で5.6と比較して、100%以上の実際の性能向上(QPS)があります。来年、PHP7がリリースされた後、微博の全体的なLAMPプラットフォームの各種業務でも100%の性能向上が得られると信じています。

質問:PHP7(PHPNG)の開発プロセスはどのようなものでしたか?他の開発グループメンバーとはどのように協力したのですか?

PHPNGは当時、秘密のプロジェクトでした。最初の参加者はDmitryと私だけでした。覚えているのは、今年の春先のことです。当時私たちが進めていたPHP5ベースのJITプロジェクトは、効果が思わしくなかったため中断され、皆かなり落ち込んでいました。

Dmitryは、ZVALを再設計してサイズを圧縮し、メモリ使用量を減らすというアイデアがあると言いました。それから私たち二人で話し合いました。実際、私たちは毎日さまざまなアイデアが浮かぶので、当時はただ「うん、このアイデアはうまくいくかもしれない」と思っただけでした。しかし、まだそれほど自信はありませんでした。

当時の主な考えは、早く動作するプロトタイプを作って効果をテストすることでした。この過程では、主にアイデアを話し合い、その後それぞれが担当する部分を実装し、そしてマージしました。

協力の主なツールはやはりSkypeでした。ただし、彼はサンクトペテルブルクにいて、私たちとは時差があるため、メールでの交流も利用し、GitHubでコードをレビューしていました。

その後、プロジェクトがある程度結論が見えたとき、私たちは「ねえ、このアイデアはいいぞ、効果があった」と気づきました。そして公開しました。その後は通常の皆での協力モードになり、アイデアがあればRPCを提出し、Patchを提出し、投票し、皆でレビューし、そしてマージしました。

質問:PHP7はこれまでにどのような機能が追加または削除されたのですか?リリース前に、さらにどのように性能を向上させる予定ですか?

たくさんあります。PHPNGというブランチが主に性能向上を提供する以外に、AST(抽象構文木)のサポート、Uniform Variable syntax、64bits length string supports、いくつかの新しいシンタックスシュガー、そして最近のNative TLSなどがあります。

PHP7は2015年10月に正式リリースされます。それまでに、私たちにはまだ試したいアイデアがいくつかあります。例えば、zend_arrayを使ってHashtableを直接置き換えること。例えば、指定した関数を再分割してソートし、iTLB missを減らすこと。例えば、JITの最適化手法の一部(型推論)をPHPに導入し、いくつかの型専用のOPCodeHandlerと組み合わせて高速化すること。さらに、コードとデータの局所性を高めてCache missを減らすことなどです。

もちろん、私たちには並行して進めているJITプロジェクトがもう一つあります。ただし、このプロジェクトがPHP7のリリース時に準備が整っているかどうか、私はとても心配しています。

質問:PHPの新バージョンはPHP6を飛ばして直接PHP7にアップグレードするのですか?なぜですか?

この主な理由は、かつてPHPにPHP6という開発バージョンがありましたが、後にそのバージョンは失敗し、リリースされませんでした。そのため、今回のバージョンはPHP7になるはずです。

問:Facebookが公開した言語HackとPHPはどのような関係ですか?Hackの目的はPHPを置き換えることですか?この2つの言語を比較すると、それぞれどのような利点がありますか?

特に大きな関係はありません。Hack is not PHP。置き換えるというなら、彼ら(Facebook)にはそういう考えがあるかもしれませんね。ただ、それはコミュニティが受け入れるかどうか次第でしょう。

Hackについてはあまり詳しくないので、具体的に評価するのは難しいです。

問:PHPは学習しやすく敷居が低いため、プログラミングに向いていない人まで入ってきてしまうという意見がありますが、この見方をどう思いますか?

この見方にはまったく賛成できません。私も大学卒業時に開発の仕事をいくつか探し、何社か面接を受けましたが、すべて断られました。当時面接してくれた人たちの目には、私もプログラミングに向いていない人間に映っていたのかもしれませんね。

しかしPHPは敷居が低いおかげで、自分の「プログラミング」の成果をすぐに確認でき、初心者に対して正のフィードバックという動機付けの効果をもたらし、興味がある人をより興味を持たせることができます。そしてプログラミングをする人が増えれば増えるほど、達人や技術進歩に貢献する人が生まれる確率も高くなります。

さらに、未来のプログラミング言語は必ず使いやすさの方向に発展し、プログラミングの敷居をさらに下げるでしょう。いつか誰もがプログラミングできるようになるかもしれませんよ!

問:一人前のPHPエンジニアの知識構造はどのようなものですか?

以前「PHPエンジニアは何でも屋だ」という言葉を聞いたことがあります。実はこの言葉はPHPエンジニアだけでなく、すべてのエンジニアに当てはまると思います。

知識構造は非常に広くないといけません。Web開発に関わる技術ポイントは比較的多く、HTML、CSS、JS、SQLのほかにも、Nginx、Linux、MySQLの設定・保守・トラブルシューティングでよく使う方法も少しは理解しておくべきです。

問:技術能力以外に、面接のときにはどんなことを重視しますか?

思考の明晰さ、コミュニケーション、話し方を特に重視します。要するに、将来一緒に働くときに支障があるかどうか、そして成長の可能性が大きいかどうかです。

問:かつてphpe.netの管理人だった陳伯楽さんは今、男性用靴下を売っています。あなたの将来の予定はどうですか?ずっとコーダーであり続けますか?

実は私はとても怠け者で、先のことを深く考えることはありません。「今日ある酒は今日飲む」というタイプです。だから将来についても実ははっきりとは分かりません。ただ、今はまだプログラミングが好きで、自分の仕事を通じてみんなの役に立ち、コミュニティから称賛を得られればいいと思っています。それがとても良いと思うので、これからも続けていきます。

出典:http://www.ituring.com.cn/article/142454