hnwの日記

Language Update PHP編(LLoT補足)

昨日8/27にLLoTの「Language Update」の10分枠でPHPの話をしました。発表資料は以下です。



会場にPHPの人はほとんどいない前提だったので、他の言語の人に「最近のPHPってこんな感じですよ」をお伝えするつもりで資料作成しました。言いたかったことはだいたい言えたつもりですが、補足と感想などを書いてみます。

PHP 7.0でのトピック

プレゼン資料にも書いたんですが、PHP 7についてお伝えしたかったことは、メジャーバージョンアップながら移行のハードルは低いこと、また高速化チーム(PHPNGチーム)が高速化を達成したことの意義、という2点になります。


メジャーバージョンアップといえばPerl 4→5やPython 2→3の混乱が連想されると思うんですが、それに比べるとPHP 5→7は内部構造のみの大変更であり、他の言語で言えばマイナーバージョンアップと同レベルの変更だと思う、というのは他の言語の方々にも十分伝わったのかなと思います。


また、PHP 7で高速化チームが無事高速化を達成したこと自体はPHPユーザーでなくても知っている内容だったと思うんですが、この意義は大きかったと個人的には考えています。というのは技術面よりも政治面です。


PHPは絶対的なリーダーがものごとを決めるような運営方針ではないため、これまでは横断的な変更をかけにくい雰囲気があったように思います。今回の高速化は既存コード全体に影響するようなものであり、このような大変更の前例が作れたという意味で今後に繋がるものだと感じています。

PHP 7.1でのトピック

今回発表に向けて7.1でのトピックを探したんですが、7.0に比べると劇的な成果とまでは言えないような変更が多い印象を持ちました。


たとえば、PHPプログラムの最適化処理(OPcache内の処理)にコンパイラの最適化でよく用いられるSSA静的単一代入形式)を作るような処理が入っていますが、いまのところ全然役に立っていないように見えます。7.2以降での最適化に繋がっていくことを期待したいですね。


PHP 7.1が11月か12月リリースだろう、というのは下記資料が根拠です。いまのところ順調に進んでいますが、多少の波乱は当然あるでしょう。ちょうど今beta3でBC breakがあったとかいう議論をしていたりします。

動的型付けと静的型付け

今回のイベントでは型の話題が多かったような印象を持ちました。


私のプレゼンでも紹介した通り、動的型付け言語であるPHPでもIDE型推論を利用して実行前に型エラーを検出するような仕組みが身近になってきています。PythonJavaScriptについても近いニーズがあるという印象を受けました。


一方で、SwiftやC#など昨今のモダンな静的型付け言語では単相型の型推論を取り入れているものが多くあります。静的型付けが好きな人も、自明な型を書かずに済むなら当然書きたくないわけです。


つまり、両方の陣営が近いゴールを目指しており、その共通の道具は型推論なのだと最近考えていましたが、似た認識を持った方が会場には何人もいらしたように感じました。


私個人としては、これから型推論を利用した言語がもっと身近になっていき、最終的にF#が世界制覇したら楽しいなぁと妄想しております。

感想など

会場撤収のタイミングで竹迫さんが「このイベントは全員アウェーなのが面白いんですよ」という話をされていて、なるほどなと思いました。私自身アウェーの楽しさを再認識したイベントでした。


目の前の仕事でさえ学ぶことが多すぎる中でアウェーの場に来るというのは多くの人にとってハードルの高いことだと思うんですが、特に若い人にはアウェーの場に積極的に出て行って多くを吸収してほしいと思います。


最後に、運営のみなさまお疲れさまでした。来年以降も若者を引きつけられるような、魅力あるコンテンツ作りを期待しております。