これから先もPHPで戦うために、なにを使い、なにを学ぶべきか - 廣川類に聞くPHP学習に大事なこと

Webアプリケーション開発言語として広く使われるPHP。黎明期から浸透していくまでの過程、そして、これから先もPHPを活用していくために必要なこと、をエキスパートの廣川類さんに聞きました。

これから先もPHPで戦うために、なにを使い、なにを学ぶべきか - 廣川類に聞くPHP学習に大事なこと

本記事は2020年3月に実施した遠隔取材をもとに構成しています。

1995年の公開以降、PHPは多くの企業、サービスで採用され、エコシステムが拡大してきました。言語の歴史に比例するように、さまざまなサービスのなかで積み重なってきたPHPのシステムを、いかにして持続/発展可能なものとするか。おそらく、多くのPHPユーザが感じる疑問をエキスパートにぶつけます。

今回お話を伺った廣川類( ひろかわ・るい )さんは、本業は制御関連のエンジニアであり、PHPへの関わりは、「あくまで個人の活動」と表現します。しかし、その活動は趣味の範囲を超え、日本PHPユーザ会の立ち上げ、さまざまな企業のPHPカウンセリングなど、PHPの文脈と動向を直視してきました。現状を肌で知るエキスパートに、これからのPHPの生存戦略を伺いました。

廣川 類さん(ひろかわ・るい)1@rui_hi

2
1996年に当時まだPHP/FIと呼ばれていたPHPに出会い、そのシンプルで高機能なところが気に入り、PHPマニュアルの翻訳などを手がける。その後、『PHP徹底攻略』(通称:マンモス本)の執筆者の1人となり、日本PHPユーザ会の立ち上げにも関わる。現在もPHPのホビーユーザとしてPHPのマルチバイト拡張mbstringの開発などに携わっている。

つぶさに見てきた、日本のPHPコミュニティの誕生と成長

──まずは廣川さんとプログラミング、そして、PHPとの出会いについて教えてください。

廣川 私はもともとがWebプログラマではなく、航空宇宙系の制御関連の開発をするエンジニアでした。

そして、最初のプログラミングとの出会いは、インターネット1996ワールドエキスポジション1の開催に伴って行われたNTTの回線のキャンペーンでした。このキャンペーンではNTTのインターネット回線を使える特典があり、今で言う食べログのような口コミ情報を扱うサーバを立ち上げたのが最初だったと思います。ただ、当時はPHPではなく、Perl CGI+Mini SQL+NCSA httpdによるWeb+DBサーバで構築しました。

その後、負荷が高くなり海外のサーバへの移行を考えるようになったのですが、当時のFreshmeat(現Freecode)という情報サイトでPHP/FI(Form Interpreter)、そして、出始めたころのMySQLの存在を知り、移行したのが、私が初めてPHPに触れたきっかけです。

──廣川さんとPHPの関わり方は、出会いから今まで、ずっと個人活動として続いているわけですね。日本では、その後、2000年に日本PHPユーザ会が立ち上がり、廣川さんご自身も発起人の一人として関われました。その当時の国内のPHP界隈の様子について教えてください。

廣川 私がPHPと出会ったころは、いくつかの大学や企業で徐々にインターネットが活用され始めた、いわば黎明期で、まだPHP(PHP/FI)に関する日本語の情報は少なかったですね。

ですから、自分の勉強と調査を兼ねて、海外のドキュメント翻訳をスタートしたのですが、せっかく訳したのだから、Webで公開したんです。こうした活動が、今にいたるまでの自分の礎になっていると感じます。PHP/FIに限らず、MySQLもほとんど情報がなかったので、同じように日本語情報を公開していきました。

──情報を独り占めしよう、とは考えなかったのですね。

廣川 私自身、大学時代から数値計算や最適化に関する分野を専攻する中でインターネットに触れる機会が多く、当時からインターネットに根付いていたフリーソフトウェアの文化には親しみがありました。ですから情報公開に抵抗はありませんでしたし、問い合わせが来たときに対応する、といった双方向のコミュニケーションにもすぐに馴染めました。

──日本のPHPコミュニティはどのように形成されていったのでしょうか。

廣川 1998~1999年ごろ日本でLinuxブームが起き、その影響からLinux以外のOSSも含めてイベントやカンファレンスが開催されるようになりました。こうした流れから、PHPに興味を持ったエンジニア・プログラマが集まり、2000年4月の日本PHPユーザ会設立の契機となり、石井達夫さんや堀田倫英さんにお会いして、マンモス本(『PHP4徹底攻略―Webとデータベースの連携プログラミング(ソフトバンククリエイティブ/2000)』の通称)の執筆へとつながっていきました。

こうして振り返ってみると、Web開発言語であるPHPは、私にとってインターネットの文化とともに成長してきたと感じますし、また、PHPコミュニティはOSSコミュニティが醸成されていく過程と重なるように思います。

自分で開発したものが世界に発信されたPHP4、利用者の意識が変わったPHP5.3/5.4

──PHPの言語の進化をつぶさに見てこられて、言語としてのPHPの印象、ターニングポイントと感じたことがあれば教えてください。

廣川 自分自身が開発に関わったという点で、最も記憶に残っているのはPHP 4のリリースと日本語対応です。PHP/FI、そしてPHP 3とリリースが続いていきいましたが、日本語対応は正式に行われていませんでした。そこで、自分で作ってみようと、jstringというPHPで日本語のようなマルチバイトを扱える機能を開発し始めました。

そして、PHP 4のリリースのタイミングになり、PHPの生みの親であるRasmus Lerdorf(3@rasmus)と連絡を取り合うようになり、jstringをPHP本体に正式にマージしてもらえることになったのです。ちなみに、jstringはJavaに同じ名称の機能があったので、PHPではmbstringと名称変更され、今に至っています。

──国内のPHPユーザにもインパクトがあったでしょうね。

廣川 自分が開発したものが、世界に広がる、発信できるというのはエンジニア冥利に尽きますね。当時を振り返ると、かなりの時間をかけてPHPの開発にコミットしていましたし、(発展途上の言語だったがゆえに)PHPの開発を純粋に楽しんでいました。

業務で関わっている制御系・航空宇宙系の開発は、時間をかけじっくり取り組むケースが多かったので、PHPやWebの世界のスピード感はまったく別物でした。この違いを経験できたことは、エンジニア / プログラマとしての自分に非常にいい影響があったように思います。

──開発とともに言語の成長をご自身の成長と照らし合わせて楽しまれていたのが伝わります。廣川さんご自身が初めてPHPにコミットしたものはどういったものですか?

廣川 本当の最初、ということであれば、PHP Manualです。今もPHP.netにあります。私がマニュアルの制作に関わったときは、A4サイズで800枚程度の情報量だったと記憶しています。今はどのぐらいでしょうか……、興味のある方はぜひ目を通してみてください。

他には、前述のmbstringは、最初期から開発にコミットしていますし、今もGitHubリポジトリのコントリビュータとして大部分に関わっています。

遅い?機能が不十分?PHPをめぐる賛否の文脈

──ところで、PHPというと他の言語との比較をされ、その賛否がいくども議論されてきた印象があります。廣川さんご自身はなにかご意見はありますか。

廣川 おっしゃるとおり、日本では、Perl / Ruby / Pythonと並んで4大LL(Lightweight Language)という視点で比較された時期もありました。また、言語としてのベンチマークが遅い時期も確かにあったので、実行速度に関しては議論を呼びやすかったのでは、と思います。

PHP4が登場したころは、とくにPHPの実行速度の遅さを指摘する声を聞いた印象があります。その後のPHP 4.3で、コア開発者であるAndrei Zmievski( 4@a )を中心に実行エンジンの改良が行われ、約30%の高速化が実現したのですが、それでも遅いという声があったのです。

そこで、Andi Gutmans(5@andigutmans)とZeev Suraski(6@zeevs)が共同で創業したZend Technologies Ltd.が、Zend Engineの改良を進め、PHP 5.1ではPHP 4に比べて50%以上高速化されています。このように、バージョンアップごとに速くなり、PHP 7では他の言語と比較しても、かなり速い部類に入ると考えています。

ただ、実行速度の優劣に関しては言語だけで結論づけるのは難しいと思います。CPUなどハードウェアに適した言語アーキテクチャであるかどうか──これも非常に重要な視点ですし、ハードウェアそれ自体も進化・変化しているので、一定条件のみで言語の処理速度を議論することは、それほど大切ではないと考えます。

また、実際のユースケースを考えると、プログラミング言語の処理速度よりも、その言語を使ったシステム全体の処理速度の方が重要です。そのためには、WebサーバやDBサーバ、さらに、その上にあるアプリケーションのチューニングなど、全体での最適化や高速化に目を向けるべきでしょう。

──機能面での議論も重ねられてきた印象があります。

廣川 PHPにはオブジェクト機能や名前空間などの現代的なプログラミング言語が備えているべき機能がサポートされていない、という類の意見をよく聞きましたが、PHP 5ではオブジェクト機能が大幅に強化されています。その後、PHP 6としてリリースされる予定だった機能が、PHP 5.3 / 5.4でバックポートの形でリリースされるなど、言語として成熟するとともに、機能的に劣っているという声を聞かなくなりました。

──PHP 5.3 / 5.4では具体的にどのような機能が追加されたのでしょうか。

廣川 PHP 5.3では、名前空間、クロージャ、オブジェクト処理およびオブジェクト指向などが実装され、PHP 5.4では、組み込みWebサーバが追加されました。ようやく、プログラミング言語として必要な要素が整ったわけです。

──バージョンが積み重なってくると、言語としては洗練されてきますが、同時にユーザにとってはレガシー化の懸念もあります。

廣川 レガシー化の懸念とは、旧バージョンの扱いのことでしょうか。確かに、長期で運用しているサイトやサービスでは、いまだにPHP 4系、5系で動いているものも多数あります。そして、いずれのバージョンもすでにサポートが終了しています。

PHPの特徴の1つに、サポートが終わると、開発側ではすべて対応しなくなる点が挙げられます。他の言語で見られるLTS(Long Term Support)の考え方はPHPにはなく、アップデートすると、古いバージョンのサポートを終えます。

ですから、ユーザ自身が責任を持って対応していかなければなりません。人それぞれではありますが、サポートという作業は、新規の開発に比べてモチベーションを上げづらいので、新しいバージョンが出た場合、アップデートしていくことも1つの考え方だと私は思っています。

それでも、たとえば、実行速度に関して言えばPHP 4よりPHP 7のほうが格段に早いにもかかわらず、アップデートできない事情があるサービスやプロダクトもあるでしょう。その場合は、プロダクトオーナーなどの責任者が早めに指針を決め、その先を考える必要があるでしょう。

PHPが求めるのは先鋭的な機能ではなく、開発者・ユーザの利便性──Rasmusの理念

──今のお話を聞いて、PHPはプログラミング言語として突き詰めるというよりは、使用される状況、また、開発を担うプログラマにとって最適な結果を提供するためのプログラミング言語として、開発、進化しているような印象を受けました。

廣川 まさにそのとおりです。PHPは開発者であるRasmusの頭の中そのものと言ってもいいかもしれませんね。Rasmusが目指したのは、ユーザにとっていかに便利であるか、その一点です。ですから、「開発しやすい」「扱いやすい」といったキーワードをもとに機能が追加されてきました。現在ではユーザが増え、大規模なソースコードを抱える言語になり、多くの開発者が関わるようになりましたが、Rasmusの思想は踏襲されています。

そして、開発当初の目的通り、PHPはWebに特化している。これもブレずに継続されてきた思想です。もっとも、この思想を大事にしてきたゆえ、Web開発以外の目的、たとえば、機械学習だったり、大規模エンタープライズシステムには向きません。PythonやJavaなど、用途ごとに適した他の言語がありますので、そちらを使用するべきでしょう。

仕組みを自分で理解する意識、そして、つねに楽しむ心、プログラマにはそれが求められる

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く