PHPの最新状況:PHP 7の時代に向けて(第六回)(廣川類氏)

PHP

廣川類

「2019年度が始まり、PHP 7.4の開発が本格的に進行中です。一方で、昨年末にサポート期限切れとなったにも関わらず、ユーザの70%が未だにPHP 5を使用し続けています。これは現在のPHPの機能・性能にユーザが満足しているという事実と、PHP 5の使い続けることのリスクが十分認識されていないという理由が大きいと考えられます。PHP7へのバージョン更新は比較的容易とされていますが、旧バージョンを使い続けるユーザーには、より魅力的で使い易いPHP 8の開発が待たれるところです。」

こんにちは、2019年も早くも3ヶ月がすぎ、2019年度が始まりました。PHPの開発は、2019年末をターゲットとするPHP 7.4の開発を本格化させています。PHP 7.4では、前回話題にした新機能が実装され、今後、その他の新機能も加わる予定です。昨年末でPHP 5はサポート期限切れを迎え、2019年1月10日にリリースされた PHP 5.6.40が最終リリース版となります。今回のコラムでは、いったんPHPの新機能の紹介を離れ、少し異なる視点でPHP7の時代について考えてみたいと思います。

PHPのバージョン

まず、W3techs.comが公開しているインターネット上でのPHPのユーザ統計を見てみましょう。PHPは、2019年4月1日現在、公開されている全Webサーバの79%で使用されています。使用されているPHPのバージョンの統計値を以下に示します。

PHP各バージョンのユーザ割合(W3techs.com, 2019年4月1日)

PHP5がサポート切れとなったにもかかわらず、約70%のユーザは未だPHP 5を使用し続けています。PHP 7のユーザは2019年12月からの4ヶ月間に約6%増加したものの、全体の約30%にとどまっています。サポート切れのソフトウエアを使用し続けることは、セキュリティ上の脆弱性をつかれるリスクを最小化する観点からは好ましくありません。にもかかわらず、旧バージョンを使用し続けるユーザの比率が70%に達する背景には何があるのでしょうか?

その理由は、大きく二種類あると筆者は考えます。まずひとつ目は、現在のPHPの機能・性能にユーザが概ね満足していることです。PHP 7はスクリプトエンジンの大幅な改良により実行速度を約2倍に高速化することに成功し、また、メモリ消費量も大幅に削減されました。この大幅な改良は、多くのPHP5ユーザにバージョンを更新する魅力を与えるものでしたが、PHP 5の既存の機能・性能に概ね満足しているユーザにバージョンを更新する作業にかかるまでのモチベーションを与えるに至ってはいないようです。

PHPの開発の歴史において、PHP 5は非常に成功したバージョンであり、Webアプリケーション用のスクリプト言語としての人気を不動にした最大の功労者です。特にPHP 5.3、5.4において本来PHP 6用に開発されていた多くの魅力的な言語機能が取り込まれたことにより、PythonやRubyなどの他の人気のあるスクリプト言語と比較してもプログラミング言語としての機能に遜色ないレベルとなりました。そして、キャッシュ(OPCache)やデバッガを内蔵するなど、PHPをより魅力的にする仕組みも多く取り入れられました。これらは、PHP 5の人気を不動のものにすることに大きく貢献し、AI関連の技術の進歩等によりPythonなどの他のスクリプト言語の人気が高まる中、前述のW3Techsの統計によればWebサーバサイド用プログラミング言語として79%のシェアを誇るなど、圧倒的な地位を維持しています。PHP 7においてPHP 5との言語仕様上の差異はほとんどなく、Python におけるバージョン2からバージョン3の更新などと比較して、バージョンの更新は比較的容易と思われますが、そのこと自体が裏を返すと、PHP 7の魅力が性能の向上のみと感じられる要因になっているのかもしれません。

二つ目は、PHP 5の使い続けることのリスクがまだ十分に認識されていないことによると思われます。PHPはオープンソースソフトウエアとしての歴史も古く、コードの多くは十分な確認が行われ、高い安全性が維持されています。しかしながら、PHPは、多くの外部ライブラリの機能を利用しており、関連するコードの量は膨大です。セキュリティの脆弱性の多くは、全体から見るとほんのわずかな綻びをつかれて生じることが常です。PHPの場合、セキュリティに関する改善は常に行われていますが、いわゆる脆弱性に関する修正をリリースする前またはリリース直後の攻撃、いわゆるゼロデイ攻撃を避けるために、特に深刻度の高いセキュリティに関する脆弱性に関する修正のコードはリリースまでの間、一部の開発者にのみ公開されてテストされ、リリースと同時に一般に公開されます。つまり、重大なセキュリティに関する脆弱性が修正されたPHPのリリース後は、既存のPHPを使用するユーザが従来のバージョンのPHPを使用し続けた場合、当該脆弱性を利用した攻撃を受けるリスクが非常に高くなると想定されます。PHP の各バージョンに関するバグ修正の提供は最大3年とされていますが、PHP 5の最終版であるPHP 5.6に関してはPHP 5のユーザ数が非常に多いことから、4年以上の長きに渡りサポートが継続されました。そして、2018年の終わりにPHP 5の公式サポートはセキュリティ修正を含め打ち切られました。実際にその直後の2019年1月10日にセキュリティ上の修正を含む5.6.40がリリースされているとはいえ、今後も修正が継続されることは保証されていません。

PHP 7へのバージョン更新は、前述のように、バージョン間の言語仕様の差異が小さいことから比較的容易と思われますが、実際にはほんの僅かな差がアプリケーションの動作不具合につながるケースもあることから、多くの既存コードを抱えるPHPユーザがバージョン更新に二の足を踏むケースもあると想定されます。

既存のコードの全てPHP 7で動作確認を行うことが短期的に難しい場合、例えば、同一サーバ上でPHP 5とPHP 7の異なるバージョンを同時に動作させ、確認が完了したものから、PHP 7上で動作させるというアプローチが考えられます。PHP 5の公式サポートが終了しても、各OSディストリビュータによりセキュリティ関連の修正パッチのバックポートが行われるケースも多く、OSのサポート期間内は実質的なサポートが継続される可能性がありますので、調べてみると良いでしょう。ただし、メジャーなOSディストリビューションも軒並みPHP 7への移行を勧めていることから、やはり、早期のバージョン更新が望まれます。

PHP の進化 と未来

PHPが今後どうなっていくのか少し考えてみたいと思います。現在、PHP 7.4の開発が本格化していますが、その後は、次のメジャー更新版であるPHP 8の開発も本格化するものと思われます。PHP 7.4の全貌は明らかになりつつありますが、今後PHPがどの方向に進んでいくかについては明確な情報はありません。PHPは、どのような方向に進むのでしょうか?

筆者がPHPを使い始めたのは、今から23年前の1996年になります。当時のPHP のバージョンは1.99というバージョン2のベータ版に相当するもので、PHP自体もその頃は、PHP/FIと呼ばれていました。筆者は、その頃、趣味で友人とWebサーバを立ち上げて口コミ情報をシェアするアプリケーションを構築していました。当時は、CGIと呼ばれていたスクリプトをPerlで構築するのが主流でした。PHPがリリースされた当初は、その軽量で動作が軽く、当時やはり黎明期にあったデータベースMySQLなどと連携してHTML埋込型で手軽にアプリケーションを記述できるところが魅力的でした。ただし、日本語の情報が皆無であったため、勉強がてらマニュアルを翻訳し、Web上で公開し始めました。その後、PHPのバージョンが3となり、スクリプト言語エンジンは、スタンダードな実装に書き直されて、安心して使うことができるようになりました。PHP 4になると、オブジェクト機能が本格的に使用できるようになり、PHP 5で更に強化されました。PHPは、その進化の過程で、一部機能の動作速度の遅さが批判されるようなことがありましたが、結果的に、そのようなフィードバックを受けて、設計の見直しが行われ、著しい高速化や機能の強化が実現されてきました。

少し昔話をしてしまいましたが、申し上げたかったのは、進化の早いインターネットの世界で20年以上にわたり、人気を保持しているには理由があるということです。その理由は、人気にあぐらをかくことなく、常に進化し続けてきたこと、そして、逆に、PHPをPHPたらしめる基本的な価値を失わなかったということだと筆者は思います。

PHPを公開するphp.netでは、PHP博物館(https://museum.php.net/)というページが公開されており、過去のバージョンのPHPが今も入手可能です。PHPバージョン1.0のアーカイブは、約26キロバイトしかありませんが、最新のPHPのバージョン7.3.4のgzipアーカイブは約19メガバイトにも達しています。世界中の多くの開発者がPHPの開発に携わり、今日のPHPを築き上げてきました。PHPはRasmus Lerdorfというデンマーク系カナダ人のプログラマが、趣味で作ったツールがそのルーツです。Rasmusは、今日、PHPの開発に関する絶対的な権力を持つ立場にはいませんが、PHPという存在についての考え方については今も大きな影響を与えています。多くのプログラミング言語の作者は、講演等において、自らが開発した言語についてプログラミング言語としての優れた部分を語ることが多いのですが、Rasmusの発言は全く異なっており、「PHPは問題を解くためのシンプルなツールにすぎない」と言い放ちます。筆者は、その考え方こそが現在のPHPが継続して使われている最大の理由の一つだと考えています。

たまたまRasmusと筆者は同じ歳なのですが、筆者が25年程前にエンジニアになったばかりの新人だった頃、会社の大先輩が語ってくれた「技術は変わるべき部分と、変わっていけない部分がある。」という言葉が今でも耳に残っています。技術は、進化しないと時代にとり残されてしまいます。このため、常に変わり続ける必要があります。しかし、その技術を特徴づける価値あるものは受け継がれるべきものです。その価値が受け継がれていく限り、PHPのコミュニティとPHP自体は発展し続けることでしょう。とはいえ、技術の進歩の過程において、Webアプリケーションの世界にも大きな変化が訪れて、PHPのシェアが他のプログラミング言語にとって変わられる時も来るかもしれません。その時がいつくるのかはよくわかりませんが、筆者は内心その時が来るのをある意味楽しみにしています。今、PHPが持っているある意普遍的な価値を超える何か新しい素晴らしい価値に出会えるのです。それは、たぶん、素晴らしい価値を人類に与えてくれる存在になるでしょう。

<< PHPの最新状況:PHP 7.4開発が本格化(廣川類氏)PHPの最新状況:PHP 7.4の開発状況(第七回)(廣川類氏) >>

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解