採択
2026/04/11 10:20〜
かま
レギュラーセッション

Deep Dive into Xdebug

nsfisis nsfisis

Xdebug は PHP の拡張で、デバッグのためのさまざまな機能を提供します。
ステップ実行からコードカバレッジ測定までできる Xdebug を使っている中で、こう思ったことはないでしょうか。
「これどうやって実現してるの?」
この発表では、Xdebug のステップ実行機能について、その内部実装を詳しく説明します。
あたかも魔法のように動作する Xdebug を、ほんの少し理解してみましょう。

※ Xdebug が持つステップ実行以外の機能については扱いません。

2
採択
2026/04/11 10:20〜
ぼこ
レギュラーセッション

PCOVから学ぶコードカバレッジ

o0h_ きんじょうひでき

ユニットテストなどでPHPソフトウェアのコードカバレッジを測る際に、XdebugやPCOVといった拡張が用いられます。

皆さんは、
どうやって「アプリケーション(ユニットテスト)を実行しながら、実行された箇所の情報を収集しているのだろう」
と不思議に思ったことはありませんか?
どうしたら実行箇所の情報を把握できるのか、そして把握した情報を出力できるのか…
少なくとも、この2点は確実に押さえる必要がありそうですよね。

そうした話を、PCOVを例に取りながら覗いてみましょう。
「PHPのコアの機能のうち、何を活用しているのか」「それをどんな風に使っているのか」を中心に、
実装内容とアイデアの観点から探っていきます。

2
採択
2026/04/11 10:20〜
あじ
レギュラーセッション

strict_typesを雰囲気で終わらせない:PHPの型変換とTypeErrorの境界

zumi_engineer 善住直紘

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の使い分け方が知りたい人

4
採択
2026/04/11 10:55〜
かま
レギュラーセッション

Webアプリケーションエンジニアにも知ってほしい オブザーバビリティ の本質

Fendo181 Futoshi Endo

「障害が起きたらログを見る」、「メトリクスを眺めて原因を探す」
果たしてそういった活動を日頃から意識するのが オブザーバビリティ でしょうか?

オブザーバビリティはSREやインフラエンジニアだけのものではありません。
Webアプリケーションの設計・実装段階から オブザーバビリティ を意識することで、障害調査が速くなったり、チームの運用負荷が下がる、といった効果を得ることができます。
本セッションでは、アプリケーションエンジニア、特にバックエンドエンジニアに向けて
オブザーバビリティの本質を実際の現場の経験を元にご紹介します。

2
採択
2026/04/11 10:55〜
ぼこ
レギュラーセッション

本番環境でPHPコードに触れずに「使われていないコード」を調べるにはどうしたらよいか?

egmc 岩堀 草平

概要

長年運用されたPHPアプリケーションには、使われなくなったコード(デッドコード)が蓄積していきます。しかし実際に本番環境で使われているのか調べるのは困難です。

本セッションでは、PHPがもともと備えているトレースポイント(DTrace)の仕組みとeBPFを活用して本番環境で実際にコンパイルされたPHPファイルを記録し、デッドコードを検出する方法を自作のツールphp-dcrの実装を通して紹介します。

実装の話とデモに加えて中心となる技術であるトレースポイントやeBPFの概要を学び、PHPの世界での応用の可能性や課題についても是非触れて頂ければと思います。

聞いた人が得られるもの

  • トレースがどのように動作するか、ツール実装を通して特性や利点、難しさ、現実的な利用方法について知る
  • eBPF技術の概要とPHPにおける使い所のヒント
4
採択
2026/04/11 10:55〜
あじ
レギュラーセッション

TiDBのアーキテクチャから学ぶ分散システム入門 〜MySQL互換のNewSQLは何を解決するのか〜

DPontaro DPon

TiDBはMySQL互換のNewSQLデータベースです。
NewSQLという言葉は聞いたことがあるけど、具体的な仕組みについてはよく知らないという方も多いのではないでしょうか?

本トークでは、TiDBのアーキテクチャを通じて分散システムが解決する課題と強みを解説します。
MySQL互換だからこそPHPアプリケーションからも導入しやすいTiDBを題材に、今後の技術選定の選択肢を広げるきっかけになれば幸いです。

ターゲット

  • NewSQLや分散データベースに興味がある方
  • MySQLのスケーリングに課題を感じている方

お話すること

  • NewSQLとは何か、RDBMSとの違い
  • TiDBのアーキテクチャ概要(TiDB / TiKV / PD)
  • 分散システムがもたらす強みとユースケース
3
採択
2026/04/11 13:30〜
かま
レギュラーセッション

デシリアライゼーションを理解する

tomzoh 長谷川智希

2025年12月にReact2Shellという脆弱性が発見されました。
これはReact.jsの脆弱性で"安全でないデシリアライゼーション"により任意コードが実行されるというものでした。

"安全でないデシリアライゼーション"は我々PHP界でもphpMyAdminやJoomla!, Drupalなど多くのOSSで脆弱性の原因になってきました。

本トークではデシリアライゼーションとは何か、そして"安全でないデシリアライゼーション"とは何か、どうしてそれが脆弱性につながるのかを解説します。

デシリアライゼーションは強力なプログラミングテクニックです。本トークを聞いた方が安心してデシリアライゼーションを使ったコードを書けるようになることを願っています。

4
採択
2026/04/11 13:30〜
ぼこ
レギュラーセッション

PHP で mp3 プレイヤーを実装しよう

m3m0r7 めもり〜☆

「PHP で mp3 プレイヤーを実装する」と聞くと、多くの人はこう思うはずです。「ああ、ブラウザで音を再生するやつね」と。
──違います。
HTMLでも JavaScript でもなく、PHP で “mp3プレイヤーそのもの” を実装するのです。
再生制御、バッファ、デコード、I/O。
「それ、PHP でやる意味ある?」と思った瞬間が、このセッションの入口です。
PHP を “Web の裏方” から引きずり出し、無理やり音を鳴らします。

3
採択
2026/04/11 13:30〜
あじ
レギュラーセッション

PHP式プログラミング道

tadsan うさみけんた

PHPは多くのプログラミングスタイルを受け入れる柔軟な言語ですが、近年さらに便利な構文が追加されています。

ところで筆者は関数プログラミングと呼ばれるスタイルのコードを好んでいますが、PHPではかなり無理があり、読みにくく書きにくい非実用的なコードとみなされがちでした。

ですがそんな時代はもう終わりました。PHP 8.x系、そしてつい最近8.5で追加された機能を活用すれば可読性を損なわない式指向コードが実現しやすくなりました。

実用とは、極端な理想と妥協の中間にあります。ポテンシャルを学ぶことによって、新機能を「使う」「使わない」という選択肢が生まれます。

このトークでは筆者がふだんどのようなことを考えながらコードを書いているかを解説しながら、いっしょにPHP式プログラミング道を究めましょう。

2
採択
2026/04/11 14:45〜
かま
レギュラーセッション

レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜

Panda_Program プログラミングをするパンダ

ある日、父から「あるWebアプリを新しく作り替えてくれない? 」と頼まれ、私は軽い気持ちで引き受けました。元になるのは10年前に父がクラウドワークスで発注、運用してきた業務システム。貰ったコードは1ファイルにHTML・CSS・JS・PHPが混在し、GET/POSTも同じファイルで処理する「あの頃のPHP」でした。

試しにLINEで父に要望を聞いたところ「定員には認可定員と利用定員の2種類があり、どちらも施設設定で管理します」との返事。私は気づきました。この人はドメインエキスパートなんだと。

本セッションでは、このレガシーなシステムを引き継ぎ、ドメインエキスパートとの対話や既存のコードからドメインを理解し、エンティティとユースケースを抽出した上で、Slim Framework + PHP-DI +Doctrine ORMとClaude Codeでビッグリライトする取り組みを紹介します。

3
採択
2026/04/11 14:45〜
ぼこ
レギュラーセッション

ドメインイベントでビジネスロジックを解きほぐす

kajitack 梶川 琢馬

みなさん、ドメインイベントって使っていますか?

ドメインイベントは「〇〇が起きた」という事実をクラス化し、処理の流れを“出来事”をベースに組み立て直すことで、依存を一方向に整えることができます。

本トークでは実務でのリファクタリングを題材に、

  • 従来のメソッド分割との違いや限界を体感
  • 同期イベント導入
  • 非同期化

の3ステップでリファクタリング前と後のコードで比較しながら順に解説します。
チームでドメインイベントをわいわい議論できるようになるきっかけを提供します!

2
採択
2026/04/11 14:45〜
あじ
レギュラーセッション

"45分→20秒" フレームワークの「恩恵」と「制約」を見極めたバッチ処理の高速化

kazuya_um_k_ umekikazuya

約4万件の日次データ同期に45分を要していた処理を、インフラ増強なしで20秒に短縮した事例です。
課題は、10年運用を見据えた保守性の維持(Drupalというフレームワーク依存)と、ボトルネックとなる「N+1」「S3逐次読み込み」の解消の両立でした。
私はフレームワークを「乗りこなす」でもなく「捨てる」でもなく、「使い所」を鋭く選定する戦略を取りました。

  1. 分離: 複雑な永続化はフレームワークに任せ、重い計算・探索処理のみ「素のPHP配列」で行い計算量をO(n)へ圧縮。
  2. 構造: Entityをメモリに乗せず、検索用ハッシュマップを構築しメモリ効率を最大化。

「全部フレームワーク」か「全部オレオレ」かの二元論ではない、運用コストとパフォーマンスのバランスを最適化する技術選定の判断基準をお話します。

3
採択
2026/04/11 16:00〜
かま
LT

PHPUnitの「Depends」を使うと次のテストに返り値を渡せるの、なんで?読むぞ!

asumikam asumikam

PHPUnitで書くテストケースは、基本的に返り値を持ちません。
普段は「返り値は void」として扱い、return しても無視されます。

でも #[Depends('...')] を付けた時には、あら不思議、依存元の返り値が依存先の引数として使えるようになります。
手で書き方を覚えてしまえばなんとなくは理解できるけど「どこで誰が拾って、どうやって次に渡してるの?」は意外と曖昧になりがちです。

このLTでは「おまじない」で片付けず、実際の実装まで踏み込んでいきます。
「使えるから使う」ではなく、「どう動いているかを知った上で使う」ための Depends の話をします!

話すこと

  • そもそも Depends ってどんな機能?
  • Depends がどのような実装になっているか
  • Depends の使いどころ
2
採択
2026/04/11 16:05〜
かま
LT

PHPUnitのテストフックを使ってテストにかかる時間の計測をしよう

aki_artisan あき

CIのテストに時間がかかって困る…
時間がかかっていそうなテストの修正や、XDebug無効化などの対策は試したが思ったように短くならない

そんな経験はないでしょうか?

闇雲にテストを修正するのはもう終わりです!

PHPUnitのフック機能を使って、個別のテストにかかっている時間を計測し、それに基づいた改善でテスト時間を約30パーセント削減した事例をお話します。

テストも「推測するな、計測せよ」で改善しましょう

4
採択
2026/04/11 16:10〜
かま
LT

個人的に嬉しかったpnpmの新機能・3選

matsuo_atsushi 松尾篤

最近アップデートの勢いが増していて、フロントエンドのパッケージ管理ツールとして定着してきているpnpm。
npmからpnpmに移行してみて、pnpm v10系のアップデートで「これは良い!」と感じた3つの機能を紹介します。

本LTでは、主に下記の方を対象に、今日からプロジェクトの安全性と開発体験を少し良くできる便利機能を紹介します。

  • PHPだけでなくフロントエンドにも携わるフルスタック寄りの方
  • npmもしくはYarnから乗り換えようか迷っている方
  • pnpmを使っているが最近のアップデートを追えていない方

pnpmを何となく使っている方にも、これから導入したい方にも役立つ内容です。

4
採択
2026/04/11 16:15〜
かま
LT

2026年春から始めるOpenTelemetry

sogaoh sogaoh

巷で噂される OpenTelemetry、PHP 8 以降でも、PHP 7 以前でも、思い切って始められる地盤が整備されてきているので、Step-by-Step で Metrics や Trace といった観測情報を可視化するまでを簡単にご紹介します。

  • ローカルでアプリケーションを OpenTelemetry Collector と並べて動かす
  • ローカルで 採取できた Metrics や Trace を 監視サーバーに送信する
  • ローカル環境をクラウド環境に置き換えて同様の観測データ採取を実現する
  • Processor の設定を調整して最適な情報に絞り込む
  • Trace ID で Log とも紐付くようにして何が起きてたか可視化しやすくする

こんな感じで、みんなで Observability をやっていきましょう、というトークです。

4
採択
2026/04/11 16:20〜
かま
LT

PHPでGitを実装してみる

thirdlf1 さどるふ

TypeScriptでGitを再実装する機会があり、その内部構造の美しさに感動しました。ふと、これってPHPでも実装できるんじゃないかと思い調べてみると、CLIツールを作ることができる symfony/console と呼ばれるものがあることを知りました。じゃあ作ってみるしかないか...

本LTでは、PHPを使ってGitのコア機能を実装するプロセスを紹介し、Gitの内部構造がいかにシンプルで洗練されているかを共有します。

このLTで得られること

  • Gitの内部構造に関する知識
  • symfony/console を使ったCLIツール開発知識
2
採択
2026/04/11 16:30〜
かま
LT

5分で挑戦!laravel newからデプロイまで

avosalmon 濱崎竜太

Laravelアプリケーションを本番環境にデプロイするには、nginxやphp-fpmの設定、データベース、ロードバランサー、ドメインの設定など、様々な工程が必要です。
さらに、コンテナ化しようと思うと、Dockerfileを書いたり、ECSやkubernetesなどのオーケストレーションツールを使う必要があり、なかなか大変です。

俺はただアプリを開発してデプロイしたいだけなのに、何でこんなに大変なんだ!

Laravel Cloudを使えば、複雑な設定なしに、Laravelアプリケーションを簡単にデプロイし、趣味アプリから本格的なサービスまで運用できる環境を手軽に構築できます。

このセッションでは、 laravel new で新規Laravelアプリケーションを作成し、デプロイして公開するまでを5分でやってみます。
本当にできるのか?できるはず!試してみよう!

2
採択
2026/04/11 16:35〜
かま
LT

画像内の"写ってはいけないもの"を弾きたい

oh_minisera minisera

業務でよくある画像のアップロード機能。
ファイル形式やサイズのバリデーションはきっとやっていると思います。

では、画像の「中身」は見ていますか?もしユーザーがクレジットカードや免許証、マイナンバーが写った画像をアップロードしてしまったら?

「文字を読み取ってチェックする?OCRを使う?」
「でも自由に撮影された画像だと精度が出なくて…」
「そもそも文字が書かれていない場合どうするか」

そこで、AWS Rekognitionの物体認識で「写ってはいけないものが写っているか」を検出するアプローチに切り替えました。
OCRから物体認識への切り替え、信頼度スコアとの戦いについてお話しします。

2
採択
2026/04/11 16:40〜
かま
LT

プロダクトを触って語って理解する、チーム横断バグバッシュのすすめ

asagayanaoki 髙橋直規

バグバッシュ(Bug Bash)は、役割を問わずメンバーが短時間にプロダクトを集中的に触り、バグや違和感を洗い出すイベントです。
機能テストがAIや自動化で強化される今こそ、人間が作った機能を自ら触る機会が減り、チームのプロダクトに対する理解を意図的に増やすことが重要になってきていると感じています。
バグバッシュは役割横断でプロダクトを触りながら対話することで、バグを探すだけでなく仕様意図やUXの理解をすり合わせていけるイベントです。
私たちは2週に1度のプロダクト共有の場に合わせ、多様なステークホルダーに集まってもらいバグバッシュを開催しています。
チーム開発文化とプロダクト理解を同時に育て、チームがプロダクトを自分たちのものとして扱っていくためのイベントを紹介します。

4