弊社で毎月開催しPHPエンジニアの間で好評いただいているPHPエンジニアのための勉強会『PHP TechCafe』。2021年7月のイベントでは社外でご活躍されているPHPエンジニアにもご参加いただいて「PHPerの今とその先」について語り合いました。今回はその内容についてレポートします。
PHPerの今とその先
以下のShowNoteをベースに、様々な切り口でPHPの情報をピックアップしながらPHPエンジニアの開発の現場のこれまでとこれからについてディスカッションしました。
PHPの基本知識
まずはPHPとはどんな言語なのかを改めておさらいしました。
PHPとは実行時にコンパイルされる動的型付け言語で、WEB開発に適した言語です。
最も有名なCMSである WordPress が利用できたり、Laravel 、Symfony 、 CakePHP などの強力なフレームワークが豊富で、学習コストが低く自由に開発できる、HTMLに直接書き込めるなどがPHPの主な特徴です。
手軽に開発できてHTMLに直接書き込めるのは賛否両論あって、最近ではテンプレートエンジンを使うことも多いですが、Smarty が出てきたあたりではテンプレートエンジンのテンプレートエンジンができてしまうなど複雑な面もあったという話題もありました。とはいえ、手軽に扱えて「何か書いたら動いた」と言えるのがPHPの特徴だよね、という話では多くの参加者が頷いていました。
同じように手軽さのある言語でもC#やJavaなどは中間ファイルを作らなければいけない一方、PHPはオンタイムでコンパイルされるため環境構築を行うのが手軽という意見も話題になりました。「極端な話、デプロイされたファイルを直接手を加えて動かすことができる」、「それを堅牢性と言えるかどうかは価値観によるかもしれないですね」という話でした。
PHPの歴史
次に、公式サイトに掲載されている情報を参考にPHPの歴史を振り返りながら議論してみました。
1990年代の黎明期
PHPerにとって黎明期で特に熱い話題は、初期のパフォーマンス改善です。現在のPHP言語の前世代であるPHP/FIのパフォーマンス不足を感じたAndiとZeevはPHPの生みの親であるRasmusを巻き込んでPHPを書き直す議論がネット上で沸き起こりました。
この頃を知る参加者は、「当時流行していたホームページや掲示板作成サービスで無料でPHPが使えるようになった」、「この頃がPHPに触れた最初だった」、「この頃からPHPを使った個人サイトの台頭が始まった」と語りました。
2000年代以降の機能強化
2000年代からWebアプリを作るための基礎的な機能が揃ってきてPHP 5.0でZend Engin 2.0となり現在のベースとなっています。現在はPHP 8.0がリリース、8.1が開発中です。また、この間に最低限の環境として、XAMPPなどのこれがあれば動くよねというツール、オンラインツール、Dockerが揃ってきました。
ここでは、「今のPHPerはPHPの開発を始めるにあたってどんな環境を使うのだろう?」という議論が白熱しました。まずチャットからは「MAMP、XAMPPから入った」という回答がありました。「DockerはLinuxコマンドを覚えてからでないとハードルが高いかも?」という意見もありましたが、既にDockerを使っているという回答も多くありました。Dockerを使ってPHPの開発を始めるPHPerも増えてきているようです。
「PHPが動作する環境の知識もしっかり抑えたいならXAMPP環境を作るところも学んだほうが良いのでは」という意見もありましたが、「環境のをことを気にすると雑念が入り、その雑念が環境を壊す」ので、「まずPHPのプログラミングを覚えることに集中するならDockerで環境を構築したほうが良い」、「ローコード・ノーコードの動きもあるので時代の流れだろう」といった意見があがりました。
PHPエンジニアの人口/人気/キャリア
全世界で使用されているWEBサービスのうち 79%がPHP製と言われています 。これは世にあるWEBサービスの4割がWordPressであり、それがPHPのシェアを押し上げているようです。このためPHPの求人数も多く1位となっています。PHPを採用しているサービスは海外ではFacebook、Wikipedia、Slackなど、国内ではぐるなび、GMOなどがあります。
言語別の求人数ではPHPが1位
ここでは言語別の求人数の話題で盛り上がりました。PHPが1位ということに対しては、参加したPHPerからも「意外だ」という感想があがりました。「JavaやGoなどが思ったほど多くない」、「日本で人気のあるRubyも思ったほど多くない」、「Pythonは昨今の機械学習系の盛り上がりで求人が伸びてきているのだろう」といった意見が出ました。
このテーマだけでも話題は尽きない様子でしたが、「PHPはソーシャルゲームのバックエンドなどでも使わている事例がある」、「裾野が広く、PHPを抑えておけば10年20年は食いっぱぐれない」、「PHPがわかるからWordPressがわかるわけではないので2つを抑えておいたほうが良い」という、PHPerのイベントらしいまとめでこの話題を締めくくりました。
PHPバージョン
次にPHPの各バージョンで強化されてきた機能をざっと追いかけてみました。
- PHP/FI:Cookie、DB連携
- 3.0:名称を「PHP hypertext processor」に変更
- 4.0:Zend Engine、WEBサーバサポート拡張HTTPセッション
- 5.0:Zend Engine 2、XMLなどに対応
- 5.1:パフォーマンス改善、日付処理の書き換え
- 5.2:Zend Engine用のメモリマネージャー(このあたりからモダン化が進む)
- 5.5:finery、拡張によるオペコードキャッシング
- 6.0:開発中止(UTF16サポートしようとしてメモリ使用量が増えすぎて廃止)
- 7.0以降:Zend Engine 3、処理速度向上、末尾カンマを許容、classのプロパティで型宣言など型の定義が厳格化されていく
PHP5がひとつの到達点
ある程度の規模のWebアプリを作る機能がPHP5あたりで揃いました。参加者からは「このあたりからPHPの開発案件が増えた」という意見が出ました。現在、古いバージョンのPHPのシステムを抱えて困っているケースは、聞くとだいたいPHP5系で、おそらくこの頃に量産されたシステムがバージョンアップできずに困っているのだろうとのことでした。
PHP7以降は言語機能が拡張され続ける
PHP7以降になると、使ったことのない機能も多いという話題になりました。使ったことがない機能の代表例として「宇宙船演算子ってなんだっけ?」「たしかに使ったことない」という意見が出ました。 PHP/FIの頃は簡易なツールだったものが、Webアプリつくるために拡張され続けたのがPHP5の頃で、PHP7の頃になると「コミュニティの中でこういうのがあったら便利、他の言語のこういう機能が便利というものが追加されているのだろう」と語ってこのテーマを締めくくりました。
※補足:宇宙演算子はPHP7で追加された <=>
で2つの式の大小関係をチェックする比較演算子です。
IDE
IDEはVSCode、Atom、PhpStormなどが紹介されました。このテーマも話題にするとキリがありませんが、時間の関係もあって今回は紹介のみでした。
フレームワーク
フレームワークについては直近ではLaravel一強というのが参加者の総意でした。PHP言語の足りない機能も補ってくれており、当面はLaravelを選ぶことが多いであろうという印象です。参加者の中ではSymfonyを使っているPHPerがLaravelの次に多いようでした。
また、Zend Frameworkについては2019年でプロジェクトを終了し、現在は後継としてLaminasというプロジェクトが立ち上がっています。PHP言語を支えてきたZeevとAndiが立ち上げたZend Frameworkの後継だけに、今後の動向に注目したいという意見がありました。
フレームワークについてもこのテーマだけで論争になるようなテーマなのでまた別の機会に取り上げましょうということになりました。
フロントエンドとPHP
一昔前ではサーバーサイドで処理を行い、ブラウザが表示するHTMLを出力するまでをPHPで実装し、JavaScriptは一部のUIにのみ使われるケースがほとんどでしたが、最近ではPHPはAPIだけを処理し、UIなどはVue.js やReact.js を使用していることが増えています。LaravelにおいてもBladeをテンプレートエンジンとするだけでなく、BladeをベースとしたSPA(Single Page Application)を実現するLivewireや、Vue.jsやReact.js で実装するInertiaなどのライブラリが公式に実装されています。
ただし、今後は全部がSPAになるかというとそうではなく、SPAは開発コストが割高になりがちなので、素早くWebアプリを作るには従来型の開発も残り続けるだろうとのことでした。とはいえ、もともとはHTMLに直書きしていたPHP言語が、フロントエンドとバックエンドを分離可能にし、サーバサイドがPHPのメイン領域になろうとしているのがPHPの現状であるというのが参加者からの意見でした。
PHPの強み・弱み
これまで見てきたように、PHPはバージョンアップを重ねるにしたがって動作が早くなり、他の言語に引けを取らずソフトウエア開発の現場で戦える言語になりました。また、手軽で扱いやすいというのも大きなメリットです。
PHPは遅いのか?
「PHPは遅い」という意見も根強くありますが、最近のバージョンでは他の言語に負けない速さになってきています。ここでは、そもそも開発の現場で何が遅いのか?、何に速さを求めるか?を考えるべきという議論で盛り上がりました。「設計時点で速さを意識した設計ができているのか?」、「そもそもWebに速さを求めるものなのか?速さが重要ならもっと別の技術もあるのでは?」、「I/Oなどがボトルネックになることも多く、PHPの速さを求めるよりもSQLをチューニングしたほうが遥かに効果がある」といった意見が出ました。PHPの領域だけで速度の問題を捉えるのではなく扱うサービス全体でボトルネックに目を向ければPHPの処理速度が問題になるケースはあまり無いのではないかというのが参加したPHPerから出た意見でした。
コミュニティ
最後にPHPer向けのコミュニティについて取り上げました。
このほか、PHP Matsuri というコミュニティが過去に存在したという情報が参加者から共有されました。24時間夜通しでハッカソンする硬派なイベントでしたが、2013年を最後に休止しているようです。
PHPカンファレンスのコミュニティの特徴として、どこかが取りまとめて各地方に巡業しているのではなく、各地それぞれに独立したコミュニティが立ち上がって運営しているということが話題に上がりました。全体でとりまとめていないため、各コミュニティが他のコミュニティーに呼びかけてイベントの日程などを調整しているようです。
PHP TechCafeについて
最後に、弊社の社員が運営しているPHP TechCafeでは「エンジニア同士の学び・情報共有の場をつくり、エキスパートまでの自己成長を支援する」コミュニティを目指して毎月開催しています。興味を持たれましたら、以下のConnpassのページから次回のイベントにご参加ください。参加いただき、メール会員登録された方には過去のPHP TechCafeの動画も共有しており、今回の記事となったイベントも全編視聴いただけます。多くのPHPerの皆さんのご参加をお待ちしています。
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
https://career-recruit.rakus.co.jp/career_engineer/カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
forms.gleイベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください! rakus.connpass.com