しがないプログラマの雑記帳

冴えないおじさんの、備忘録な雑記

PHP Conference Japan 2025 に参加してきました

2025/6/28 に開催された PHP Conference Japan 2025 に参加してきました。
この記事では、会場の様子や感想などについて記載します。

聴講したセッション

今回の PHP Conference Japan 2025 では、以下のトークを聴講しました。

純粋 vs 副作用 〜 PHPはなぜ難しいのか?

概要

私達が学校で学ぶような数学的な関数は、計算結果が常に同じになります。
PHP における関数には、同じ引数を渡すと結果が常に同じになる (冪等性) ものと、副作用を及ぼすものがあります。

副作用には、関数の返却値が呼び出すごとに常に一定とは限らないもの、変数やファイルなどの外部に影響をおよぼすものなどがあります。
一方、冪等性をもち、副作用をもたない関数を 純粋関数 といいます。

現実のソフトウェア開発において、ユニットテストが簡単にかけない原因として、 テスト対象の機能で副作用のある関数が存在する ことが挙げられます。
副作用のある関数が存在することで、 実行結果を予想しづらく なり、テストを書くことが難しくなります。

DI などで副作用のある部分を切り離し、副作用のある関数を mock などで差し替えることでテストしやすくなります。
副作用を持つ関数などの制御が難しいものは、制御できるようにブレークダウンすることが重要です。
そして、制御しやすい基本単位が純粋関数です。

感想

現実のソフトウェア開発において、ユニットテストが実装しづらい理由と、その解決方法についても話されていた点がとても良いと思いました。
特にユニットテストの実装などの経験が浅い人にとっては、現実のソフトウェア開発においてユニットテストを書くのが難しい原因が分かるきっかけになるのが良いと感じました。

PHPStan でそれぞれの PHP の標準関数が純粋関数であるか判定する機能や、 PHPDoc の @pure タグで純粋関数としてみなす機能があることは初めて知りました。
特に、 @pure がついた関数で副作用がある場合に警告が出るのはすごいと思いました。

低レイヤを知りたいPHPerのためのCコンパイラ作成入門 完全版

概要

セッションの冒頭では C コンパイラの仕組みや機械語の概要を説明されていました。
そのあと、 PHP で C コンパイラを実装する初歩の段階として、終了コードを指定するアセンブリ言語のプログラムを生成する実装例が挙げられていました。

初歩の段階では、プログラムの文字列を先頭から順に処理する方法が紹介されていましたが、カッコなどの優先順位などの扱いが困難です。
そこで、 字句解析構文解析コード生成 について説明されていました。
それぞれの処理順序は次の通りです。

  1. 字句解析で C プログラムのソースコードトークン単位に分割
  2. 字句解析で分割されたトークンを構文解析器で抽象構文木 (Abstract Syntax Tree) に変換
  3. 抽象構文木アセンブリ言語に変換

感想

個人的に、今回の PHP カンファレンス Japan で最も気になっていたセッションが聞けて満足しました。
PHP で C コンパイラを作るという試みはとても興味深いものでした。
原理的には可能とはいえ、完全に C の言語仕様を網羅したコンパイラの実装への道のりはかなり長いのだなと、あらためて感じました。

字句解析や構文解析の基礎知識は有していましたが、アセンブリ言語は触ったことがないので、学びの導入のきっかけとして良いなと感じました。
また、発表の内容自体が、大学の講義で学ぶプログラミング言語論の内容に含まれているので、情報系の学生にとても参考になりそうだと思いました。

スポンサーブースの様子

今回はスポンサーとして参加したので、そこそこの時間をスポンサーブースで過ごしました。
まだ慣れていないということもあって、ブースでの説明がうまくできないので、次はある程度まとめておきたいなと思いました。

国内の PHP 系のカンファレンスで最大規模ということもあって、やはりスポンサーの数も多く、賑わっている感じが良いなと思いました。

全体を通しての感想

今回は聞くトークを予め絞って決めていたので、スポンサーブースにいる時間とトークを聞きに行く時間をいい感じに取れたかなと思います。
懇親会も含めて、充実した一日が過ごせました。

クロージングの宣伝タイムで、 PHP カンファレンス関西 2025 の宣伝をさせていただきました。
あの広い会場で初めて話しましたが、とても緊張して、声も思ったほど出ませんでした。
広いステージで声をちゃんと届くように話せるスピーカーの凄さを、身を持って実感しました。

最後に

昨年の開催から半年という短い期間の中で、無事に開催されたのも、運営スタッフの皆様のおかげです。
この場を借りてお礼申し上げます。
本当にお疲れ様でした。