https://a.storyblok.com/f/270183/1368x665/bab3dd656c/php-legacy_2024-new.png

2024年、PHPはレガシーになる

最終更新日 November 19, 2024

所要時間:1 分

Vonageでは仕事柄、出張が多い。様々な立場の開発者と話をしますが、最もよく聞かれる質問のひとつはこうです:なぜまだPHPをやっているのですか?この質問のバリエーションとして、「PHPはダメなんじゃないの?2010年かもしれない。忘れた。私が理解できない理由で、オンライン・フォーラム内でこのようなことが再び頻発しているため、より多くの「PHPはひどい」というコメントが飛び出してきている。

この現象の原因は?なぜPHPは「悪い」のか?

部族

私は、ほとんどの開発者は遊牧民として出発し、最終的に「自分の部族を見つける」人たちだと考えている。結局のところ、技術者コミュニティとは本質的にそういうものなのだ。最初の仕事を得ることは別として)仕事を始める難しさの一つは、受け入れられるか、どの部族を故郷と呼ぶかを選ぶことだ。受け入れられることが難しく感じる人もいる。そこで、新卒者やブートキャンプの参加者に共通の話題やユーモアを提供することができる。

この点で、「PHPは悪い」というジョークはよく知られている。 何年も前に書かれた、膨大でとりとめのないブログ記事について書かれた膨大でとりとめのないブログ記事でしょう。そんなことはどうでもいい。 このSlack Engineeringからの投稿のように、どんなアプリケーションでも微妙なニュアンスを説明するような反論があることは問題ではない。のように、どんなアプリケーションでもどんなプログラミング言語でも悪く書くことができるというニュアンスを説明する反論の投稿が出ていることは問題ではない。Slackは元々、以下のような言語でプラットフォームを構築していることを指摘する人もいるだろう。 Hackでプラットフォームを構築したことや、その後追加された新しいサービスの多くがGoやNodeで作られていることを指摘する人もいるだろう。

だから、舞台はまだ決まっている。

自己増殖する神話

実際、PHPはあまりにひどいので、あるオペレーティングシステムは、PHPに同梱されているバージョンを使おうとすると、次のような警告を出すことにした:

警告:PHPは推奨されていません

PHPに同梱されていたバージョンがすでに古いものであったという事実にかかわらず、人々は、オペレーティングシステムに同梱されていたレガシーバージョンのPHPについて警告する意図があったと説明し、この表現を擁護した。 オペレーティングシステムに同梱されていたPHPのレガシーバージョンについて警告する意図があったと説明して、この表現を擁護している。

Python 2.7でも同じことができましたが、エラーメッセージに"Python 2.7 は推奨されません。"と警告ラベルなしで表示されていました。このエラーメッセージはそうではありません。

それを面白いと思う人もいるかもしれないが、私はオペレーティング・システムがどのプログラミング言語を使うべきかを教えてくれることにユーモアを感じない。これはPHPが悪いということの自己増殖であり、なぜこのナッジ、ナッジ・ウィンクがOKなのかの理由だ。

では、PHPが悪いはずなのに、なぜまだPHPの話をしているのだろうか?

必要は発明の母

まさに進化のパターンをたどったプログラミング言語がもうひとつあり、それがJavaScriptだ。JavaScriptは 事実上 エンジンを内蔵したブラウザで動作する事実上の言語であったため、JavaScriptには 基本的な始まりから 基本的な始まりから進化しなければならなかった。

同様に、WordPressやDrupalのようなPHPで書かれたバックエンドであるコンテンツ管理システムの台頭のため:PHPは は進化しなければならなかった。.ラスマス・レンドルフ(Rasmus Lerdorf)が自分のスクリプト用にC言語をハックしていたのが、ウェブ用に設計された本格的な一般プログラミング言語へと進化するのは、偶然に起こることではありません。ZendはZend Engineを開発し、オラクルやIBMといった当時の主要ベンダーからパートナーシップを獲得した。

こういうことが起こるのは 人々が使うからJavaScriptとECMAScriptの関係やエコシステムのツールが常に進化しているのと同じように。

この進化は、まさに なぜなら5.0での完全なオブジェクト指向クラスシステムへの移行、 5.4でのtrait、5.6でのジェネレータの導入、PHP7でのエンジンの再構築、 場合によっては100%の性能向上、8.0でのJITコンパイラ、8.1での ネイティブenumの導入など、PHPが広く使われていなければ、このようなことは 起こらなかったでしょう。例えば、Perlのライフサイクルは、急速に進化することはなかった。 というのも、人々はPerlを使わなくなったからだ。.では、今日私たちが目にしているこの進化の実際の結果はどのようなものだろうか?

神話その1:PHPはスケールしない。

それをFathom Analyticsに言ってみてください。 Laravelでアプリケーションを書き直しでアプリケーションを書き直し、毎秒数百万のリクエストに対応している。

はっきりさせておこう: どんなマイクロサービスや分散システムでも、設計が悪ければ効果的にスケールしない。.

Fathomのケースは、Laravelから提供されるツールの武器があれば、Laravelのスペース内で、非常に効果的にこれを行うことができることを示しています。上記のブログポストでジャックが言及しているように、他の言語を使用しているプログラマーからの批判は、ベンチマークがそう言っているからPHPはスケールできないというものです。

しかし、大規模なアプリケーションを構築する場合、毎分100万リクエストを処理する必要があるのだろうか?おそらく必要ないだろう。しかし、Nodeでは非同期なので、確かに速くていいでしょう?おそらくね。気にしますか?今の段階ではありえない。

神話その2:PHPは遅い

よくある批判は、PHPはシングルスレッドであるため、並行作業や水平スケールのワークロードを作成するために新しいプロセスを生成しなければならないというものです。しかし PHP-JITはPHP8.0で導入されました。でPHP-JITが導入されましたが、これはPHPの進化の主要な課題であるスピードを実現するための変化の始まりにすぎませんでした。私がOpenSwoole(当時はSwoole)に出会ったのは、2014年のことだった。 を紹介された。を紹介され、シングルスレッド問題の拡張ワークアラウンドを目にした。PHP8.1のネイティブFibersの登場は、コルーチン/非同期PHPの実現を意味した。A ベンチマークの良い例がここにある。を参照されたい。 いくつかのオプションPHP開発者が光速でアプリケーションを書けるようになったということです。

ファイバー・コルーチン

リアクトPHPamphpは、ノンブロッキング非同期PHPのためにファイバーを使用する2つの例です。 は新しいものでもありません。.これらは、Nodeのイベントループのように効果的に実行されます。どのような速度が得られるか確認したい場合は、こちらを参照してください、 ReactPHPのコアチームの一人であるCees-Jan Kiewietの例です。.ネタバレ: 速いです。

新しいランタイム

だから、我々はカウントしていない ロードランナーオープンスウールはカウントしていない。しかし、「必要は発明の母」と言ったのを覚えているだろうか?新しいPHPアプリケーションサーバー、FrankenPHPが発表されたのだ。

なぜFrankenPHPと呼ばれるのか?なぜなら、PHPを進化させる必要性から、新しいランタイムはGoでコード化され、Roadrunnerと似ているからです。 Caddyウェブサーバー.意味があるのだろうか?おそらく奇妙に見えるだろう。速いですか?はい。囲碁であることを気にしますか?そうでないことを祈る。 以下は、Laravel OctaneでFrankenPHPが使われている例だ。.ネタバレ:速い。

FrankenPHPはどこから来たのか?

画像出典:FrankenPHP https://frankenphp.dev/

FrankenPHPの開発者は ケヴィン・ダングラス.興味深いのは、Kévinは のコアメンバーであることです。のコアメンバーであることです。 symfony は彼の仕事を後援することで、事実上、新しいより高速な PHP ランタイムの作成を後援していると主張できます.

ケヴィンの仕事をチェックする理由はもうひとつある。 APIプラットフォーム.

APIプラットフォームとは何か?

画像引用元:API Platform https://api-platform.com/

ああ、そうですか。PHPはレガシーなので、REST/graphQLウェブAPIを迅速に開発するためだけに設計された特注のバックエンド・フレームワークを使うことができる。 REST/graphQLウェブAPIの迅速な開発のためだけに設計された特注のバックエンドフレームワークを使うことができる。.このフレームワークはSymfony またはAPI レスポンスの標準の選択、OpenAPI または SwaggerUI による自動ドキュメント処理、自動テストツール、パフォーマンス/キャッシュ処理などの機能があります。WebAPIをプロトタイピングからプロダクションへ?

ネタバレ》 速い。

コミュニティノートますます大きく

Photo Credit: DrupalCon Barcelona 2023 出席者

https://events.drupal.org/barcelona2024

開発者から毎年よく言われるのは、PHPの使用率(したがってPHPの開発率)は年々縮小しているということだ。これは毎年 StackOverflow の開発者アンケート.私は、ウェブの70%(またはその前後)がPHPであるというよく言われる数字は、WordPressのせいだということを知っておくことが重要だと思う。そう、PHPなのだが、WordPressの製品としての成功がこの数字をそうさせているのだ。CMSフレームワークや、ContentfulやStrapiのようなCMS SaaSクラウド製品の利用が増えれば増えるほど、この数字は時間とともに下がっていくだろう。

では、PHPの利用は衰退しているのだろうか?数値的にはそうだが、ユーザーがWordPressから移行しているため、PHPのコミュニティはまだ信じられないほど強力だ。PHPの3つの主要なフレームワークの使用率は増加しており、新しいプロジェクトが開発されていることを意味する。 DrupalConは、世界中で年に数回開催されるカンファレンスで、1回あたり平均約3000人が参加する。 SymfonyConララコンも世界中で年に数回開催され、平均参加者数は1000-3000人です。これは、衰退していく言語を示しているのではありません。成長しているのだ。

人々は気づき始めているのだろうか?

人は、模倣は最高のお世辞だと言う。この哲学を念頭に置くと、Laravelのフルスタック開発へのアプローチ(元々はRailsをベースにしている)が、PHP以外のフレームワークを生み出したことは注目に値する。 を生み出している。.出会い AdonisJSLaravelベースのNodeフレームワークです。物足りないですか?それなら WaspこちらもLaravelベースのNodeフレームワークです。どうですか? GoravelをベースにしたGoフレームワークだ。

Laravelのデベロッパーエクスペリエンスに対する特別なアプローチが、開発者の忠実な支持を得ている。実際、技術インフルエンサーの ThePrimeagenはアーロン・フランシスのビデオに眉をひそめた。 PHP Doesn't Suck Anymoreに眉をひそめ、それをチェックした。 結果は、予想外の支持だった。. 今年のLaraconUSでの彼のキーノートLaravelが5,800万ドルのベンチャーキャピタルを調達したと発表した瞬間まで。あなたは、PHPは滅びつつあると思いながら、この記事を読んだかもしれない。

フレームワークの話はいいことだが、誰が PHP言語を進化させるのは?

PHP財団

もしあなたがPHP開発者でないなら、この記事で興味を持ってもらえたかもしれない。PHPは何年もの間、2人だけでメンテナンスされていました、 ニキータ・ポポフドミトリー・ストゴフJetBrainsのスポンサーを通じて ジェットブレインズおよび ゼンドのスポンサーシップを得た。リリース・マネージャーからのサポートは数え切れないほどあったが、それでも2人の開発者が機能のために多くの仕事をこなしていることに変わりはない。2022年、 PHPファウンデーションが設立され、現在はPHPのベテランとAutomattic、Zend、Private Packagist、JetBrains、Tideways、PerforceとSymfonyの代表からなる理事会がある。

財団は10人のエンジニア(フルタイムもいればパートタイムもいる)に給与を支払っている。このようなオープンなガバナンスは非常に珍しい。慈悲深い終身独裁者「あるいは 商業的支援.この旅は、彼らなしでは続けることができない。 https://thephp.foundation/sponsor/をご覧ください。

結論

なぜインターネットの隅々で "lolphp "が復活しているのかわからないが、率直に言って、私は心配しているわけではない。しかし、おそらく15年前にその言語を書いた人のものであろう、何かが悪いというセリフをオウム返しに言うことは、開発者の能力を多少制限することになるとは思う。PHPは現代的で、15年前とはまったく違って見えるし、盛んなコミュニティとツールシステムがある。例えば PsalmPHPPHPStanやPHPStanのような静的解析ツールは、まさに一流のツールです。世の中で最も大きな技術的影響力を持つ人たちの何人かが、それを試してみたいと思っているのなら、あなたもやってみてはどうだろう?Vonageの通信を試すには、まず Vonage PHP SDK私がコアメンテナです。助けが必要ですか?私たちのコミュニティ コミュニティSlackまたは X.ガイダンスが必要ですか? 私との短いセッションを予約することができます。

シェア:

https://a.storyblok.com/f/270183/400x385/12b3020c69/james-seconde.png
James SecondeシニアPHPデベロッパー

スタンダップ・コメディーの学位論文を持つ俳優の訓練を受け、ミートアップ・シーンを経てPHP開発に携わるようになった。技術について話したり書いたり、レコード・コレクションから変わったレコードを再生したり買ったりしています。