PHP Conference Japan 2020
採択
2020/12/12 16:40〜
Track5 (PHP8 Special)
Long session (60 mins)

PHP 8 で Web 以外の世界の扉を叩く

sji_ch sji sji_ch

「○○言語は汎用プログラミング言語だけど、PHP は Web 特化で Web 以外には不向き」

もう長いこと、PHP はこのような評価を与えられ続けてきました。
そしてそれは今や過去の話になろうとしています。

PHP は "PHP: Hypertext Preprocessor" の略[1]ですが、この 25 年間で Web は高度化し、複雑化し、それに伴い Web サイトを作るための言語にも、いっそう複雑な機能が要求されるようになってきました。

昨年リリースされた PHP 7.4 には Preloading や FFI など、多くの機能が導入されています。

そして今年の PHP 8 では、満を持して JIT コンパイラ が導入されます。
典型的な PHP アプリケーションは I/O バウンド(DB バウンド)です。JIT はそのような既存のアプリケーションのためというより、これまで PHP が使われてこなかった、また使えると思われてもこなかったような、新たな領域への扉を開くものとして、FFI や Preloading との組み合わせを念頭に提案されたものです[2][3]。

一方、世間の CPU は着実に多コアの時代へと進んできました。今の時代にある程度 CPU を使うアプリケーションを作るというのは、JIT を使うというだけの話では済まず、何らかの並列処理機構を用いてこの多コアの CPU とも向き合う必要があります。

このトークではそんな新時代における PHP を使って、

  • FFI でシステムコールを呼び出して外部プロセスのメモリをのぞき見したり
  • ローカルマシンで動作する(非 Web の) GUI ライブラリを利用してデータを可視化したり
  • ext-parallel によりプログラムをマルチスレッド動作させたり
  • スレッド間の通信処理に非同期処理を用いたり
  • スレッドの動作を効率化するため preloading を活用したり
  • JIT によりそのようなプログラム全体の動作を高速化したり

するという、これまでとは一味違った PHP の利用方法への挑戦を紹介するとともに、そこで得られた知見、現状の制限についてをお話します。

[1] https://www.php.net/manual/en/intro-whatis.php
[2] https://wiki.php.net/rfc/jit
[3] https://externals.io/message/102415#102415

Track ID: Track5-5
Discord Channel: #track5-5-php8-non-web