岩堀 草平 長年運用されたPHPアプリケーションには、使われなくなったコード(デッドコード)が蓄積していきます。しかし実際に本番環境で使われているのか調べるのは困難です。
本セッションでは、PHPがもともと備えているトレースポイント(DTrace)の仕組みとeBPFを活用して本番環境で実際にコンパイルされたPHPファイルを記録し、デッドコードを検出する方法を自作のツールphp-dcrの実装を通して紹介します。
実装の話とデモに加えて中心となる技術であるトレースポイントやeBPFの概要を学び、PHPの世界での応用の可能性や課題についても是非触れて頂ければと思います。
梶川 琢馬 みなさん、ドメインイベントって使っていますか?
ドメインイベントは「〇〇が起きた」という事実をクラス化し、処理の流れを“出来事”をベースに組み立て直すことで、依存を一方向に整えることができます。
本トークでは実務でのリファクタリングを題材に、
の3ステップでリファクタリング前と後のコードで比較しながら順に解説します。
チームでドメインイベントをわいわい議論できるようになるきっかけを提供します!
善住直紘 declare(strict_types=1) はどこで型チェックを切り替えているのか。本セッションでは php-srcの中でもstrict_typesを扱っているZend/zend_execute.c zend_compile.cを参照し、strict_types がコンパイル時に立てるフラグと関数呼び出し時の型チェック分岐を追います。再現コードと図を用いて、TypeError が投げられる境界と暗黙変換が起きる条件を整理。strict_types の仕組みを理解し、プロジェクトでの適切な使い分け指針を持ち帰ってもらうことを目指します。
想定聴講者
型ヒントや静的解析は使っているが strict_types は雰囲気で運用している人
PHPがどうやって型を見ているか気になっている人
strict_typesの使い分け方が知りたい人
プログラミングをするパンダ ある日、父から「あるWebアプリを新しく作り替えてくれない? 」と頼まれ、私は軽い気持ちで引き受けました。元になるのは10年前に父がクラウドワークスで発注、運用してきた業務システム。貰ったコードは1ファイルにHTML・CSS・JS・PHPが混在し、GET/POSTも同じファイルで処理する「あの頃のPHP」でした。
試しにLINEで父に要望を聞いたところ「定員には認可定員と利用定員の2種類があり、どちらも施設設定で管理します」との返事。私は気づきました。この人はドメインエキスパートなんだと。
本セッションでは、このレガシーなシステムを引き継ぎ、ドメインエキスパートとの対話や既存のコードからドメインを理解し、エンティティとユースケースを抽出した上で、Slim Framework + PHP-DI +Doctrine ORMとClaude Codeでビッグリライトする取り組みを紹介します。
うさみけんた PHPは多くのプログラミングスタイルを受け入れる柔軟な言語ですが、近年さらに便利な構文が追加されています。
ところで筆者は関数プログラミングと呼ばれるスタイルのコードを好んでいますが、PHPではかなり無理があり、読みにくく書きにくい非実用的なコードとみなされがちでした。
ですがそんな時代はもう終わりました。PHP 8.x系、そしてつい最近8.5で追加された機能を活用すれば可読性を損なわない式指向コードが実現しやすくなりました。
実用とは、極端な理想と妥協の中間にあります。ポテンシャルを学ぶことによって、新機能を「使う」「使わない」という選択肢が生まれます。
このトークでは筆者がふだんどのようなことを考えながらコードを書いているかを解説しながら、いっしょにPHP式プログラミング道を究めましょう。
きんじょうひでき ユニットテストなどでPHPソフトウェアのコードカバレッジを測る際に、XdebugやPCOVといった拡張が用いられます。
皆さんは、
どうやって「アプリケーション(ユニットテスト)を実行しながら、実行された箇所の情報を収集しているのだろう」
と不思議に思ったことはありませんか?
どうしたら実行箇所の情報を把握できるのか、そして把握した情報を出力できるのか…
少なくとも、この2点は確実に押さえる必要がありそうですよね。
そうした話を、PCOVを例に取りながら覗いてみましょう。
「PHPのコアの機能のうち、何を活用しているのか」「それをどんな風に使っているのか」を中心に、
実装内容とアイデアの観点から探っていきます。
DPon TiDBはMySQL互換のNewSQLデータベースです。
NewSQLという言葉は聞いたことがあるけど、具体的な仕組みについてはよく知らないという方も多いのではないでしょうか?
本トークでは、TiDBのアーキテクチャを通じて分散システムが解決する課題と強みを解説します。
MySQL互換だからこそPHPアプリケーションからも導入しやすいTiDBを題材に、今後の技術選定の選択肢を広げるきっかけになれば幸いです。
めもり〜☆ 「PHP で mp3 プレイヤーを実装する」と聞くと、多くの人はこう思うはずです。「ああ、ブラウザで音を再生するやつね」と。
──違います。
HTMLでも JavaScript でもなく、PHP で “mp3プレイヤーそのもの” を実装するのです。
再生制御、バッファ、デコード、I/O。
「それ、PHP でやる意味ある?」と思った瞬間が、このセッションの入口です。
PHP を “Web の裏方” から引きずり出し、無理やり音を鳴らします。
長谷川智希 2025年12月にReact2Shellという脆弱性が発見されました。
これはReact.jsの脆弱性で"安全でないデシリアライゼーション"により任意コードが実行されるというものでした。
"安全でないデシリアライゼーション"は我々PHP界でもphpMyAdminやJoomla!, Drupalなど多くのOSSで脆弱性の原因になってきました。
本トークではデシリアライゼーションとは何か、そして"安全でないデシリアライゼーション"とは何か、どうしてそれが脆弱性につながるのかを解説します。
デシリアライゼーションは強力なプログラミングテクニックです。本トークを聞いた方が安心してデシリアライゼーションを使ったコードを書けるようになることを願っています。
nsfisis Xdebug は PHP の拡張で、デバッグのためのさまざまな機能を提供します。
ステップ実行からコードカバレッジ測定までできる Xdebug を使っている中で、こう思ったことはないでしょうか。
「これどうやって実現してるの?」
この発表では、Xdebug のステップ実行機能について、その内部実装を詳しく説明します。
あたかも魔法のように動作する Xdebug を、ほんの少し理解してみましょう。
※ Xdebug が持つステップ実行以外の機能については扱いません。