採択
レギュラートーク(20分)

我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜

shogogg 河瀨 翔吾

MVC フレームワークが普及してから約20年。Web アプリケーション開発において「層」を分けることは当たり前の「お作法」になりました。

その効果は「関心の分離」というキーワードでよく語られます。しかし、あなたの現場ではその言葉の意味が正しく理解されているでしょうか。そこで分離したい「関心」とは一体なんなのでしょうか。

意味を理解しないまま、フレームワークや流行のアーキテクチャの表層だけをなぞり、雰囲気で「層」を分けていると、次のような事態に陥ります。

  • Controller から Repository へデータを右から左へ流すだけの「土管」Service
  • DB のスキーマ変更が、なぜかフロントエンドの修正にまで波及してしまう
  • ビジネスロジックがあちこちに分散し、調査に時間がかかる

これでは「層」を分ける恩恵を受けられないどころか、コードを複雑化させ、開発速度を落とす無駄なコストが増えるだけです。「層」の分割は、その意図を正しく理解し、適切な「抽象化」によって本当の「関心の分離」を実現することで、初めてその効果を発揮します。

本セッションでは、形骸化しがちなレイヤー設計に意味を取り戻すための考え方を解説します。

こんな人に向けて話します

  • なんとなくルールに従って層を分けているけど、面倒なだけに感じている
  • 層を分ける理由をきちんと言語化し、後輩にもっと丁寧に説明したい
1
レギュラートーク(40分)

プログラミング言語と文法の関係を覗いてみよう 〜自作DSLで追いかける、ソースコードが解釈されるまで〜

o0h_ きんじょうひでき

コードを書く時に、「文法」って無視できないですよね。
巨大な存在すぎて、「何かそういうもの」「所与のものとして、そう在る」と思ってしまっているフシはありませんか?
しかし、プログラミング言語もソフトウェアです。
私たちが業務や趣味で書いているものと同様に、「仕様があり、それを実装している」に過ぎません。つまり、文法も「仕様に対する実装」と言えるのです。

「最初からある」から「そういうものに見える」のなら、視点を変えるために逆のアプローチを取るのが効くことでしょう。
自分で作るのです!文法を、実装してみましょう。

このトークでは、ドメイン固有言語(DSL)の自作を通じて、「プログラミング言語と文法の関係」に光を当てます。
最後には、文法が「そういうもの」から「仕様と実装があるだけ」と感じられるようになるでしょう。

話すこと

最終的にPHPに変換される、小さなDSLを作成します。
その過程で、「ソースコード(つまり、ただの文字列!)」→「語句に分解された集まり」→「語句同士の連なりである文(構文)」へと変換される手続きと、そこに必要な登場人物を追いかけていきましょう。
字句解析・構文解析といった概念のざっくりとした理解と、文法や言語仕様を読み解くための基礎知識を提供します。

話さないこと

字句解析・構文解析の理論や実装パターンについての網羅的な解説は行いません。「流れを体感する」ことを優先します。
(構文解析器の生成にはパーサージェネレータを利用し、実装における詳細なアルゴリズムは本トークで扱いません。)

代わりに、参考にした書籍等の紹介を発表資料と一緒に展開します。

想定するターゲット

  • 言語やパーサーを自作した経験はないが、興味はある方
  • YAML、SQL、正規表現などを日常的に使っているが、「作る側」の視点を持ったことがない方
3
レギュラートーク(20分)

あなたの Copilot を一流の PHPer に「育てる」技術 〜カスタムインストラクションの活用と実践〜

ronn_althaea 村田祐葵

概要

GitHub Copilot は優秀な相棒ですが、あなたのプロジェクトの「空気」まで読んでくれていますか?
特に長く運用されているレガシーコードや、独自のフレームワークを採用している現場では、AIが良かれと思って提案する「モダンで洗練されたコード」が、逆に修正の手間を生むノイズになることがあります。
「そこは namespace ではなく、アンダースコア区切りで……」と、AIの提案を人間が修正する作業に疲弊していないでしょうか。

本セッションのテーマは、Copilot への「教育」です。
単なるコード生成ツールとしてではなく、プロジェクトの文脈を理解した「専属の一流エンジニア」として育てるための、 Custom Instructions の活用と実践術を深掘りします。

話すこと

  • Custom Instructions について: 設定ファイルの仕様と、AIに「空気を読ませる」ための基本的な記述ルールについて解説します。
  • 独自ルールの徹底: モダンな学習データには少ないルールをどう言語化すればAIに伝わるか解説します。
  • Before/After: 同じプロンプトでもインストラクションの有無で、AIの提案コードがどう変化するのか見てみます。

ターゲット

  • AI の出力修正に時間を取られているエンジニア
  • 長期運用中のレガシーシステムや、厳格な独自規約を持つプロジェクトに携わっている方
  • チーム全体のコード品質均一化を目指す、2〜5 年目のリーダー層

曖昧な指示を排除し、意図通りに動かすプロンプトエンジニアリングの基礎から、標準規約とレガシー規約の共存テクニックまで。
明日からチームの Copilot が「新人」から「熟練の古参メンバー」へと変わる、実践的な育成技術をお持ち帰りください。

1
パンフ記事(2ページ)

「Laravelのセルフデプロイメント: クライアント向けシンプルインストーラー」

eii_tech EIITECHSOLUTIONS

Laravelアプリケーションのデプロイは、特にクライアントにDevOpsの経験がない小規模プロジェクトでは困難を伴うことがあります。
そこで、モジュール式のLivewireベースのパッケージ開発者がアプリケーションにセルフサービスインストーラーを埋め込むことを可能にする。このインストーラーにより、エンドユーザーは自分でLaravelアプリをデプロイして設定できるコマンドラインを操作したり、環境変数を手動で設定したりする必要はありません。
この講演では以下の内容を取り上げます。
特に共有サーバーでの小規模な Laravel プロジェクトによくあるデプロイメントの課題。
私たちのインストーラーはこれらの問題をどうやって解決するのでしょうかモジュラーLivewireコンポーネント。
デモ: 小さな Laravel アプリケーションを最初からデプロイします。
開発者がインストーラーをアプリに統合し、ニーズに合わせてカスタマイズする方法。
セルフサービス インストーラーを構築するための教訓とベスト プラクティス。

この講演は次のような方々に役立ちます:
Laravel プロジェクト (小規模なアプリ/Web サイト) を頻繁にクライアントに提供するフリーランサーや小規模な代理店。
自分自身またはユーザーのために展開を簡素化したい開発者。
実際のアプリケーション向けの Livewire ベースのモジュラー アーキテクチャに興味のある方。

採択
レギュラートーク(40分)

「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜

KentarouTakeda 武田 憲太郎

パフォーマンスチューニングはあらゆるWebアプリにおける重要な関心事です。クエリ最適化、計算量削減、キャッシュ活用など、その手法は多岐に渡ります。しかし、それらの多くは「特定の箇所」を速くするアプローチに留まります。

一方、Webアプリケーションには例外なく、すべてのリクエストに必ず登場する要素があります。—「接続」 です。

  • ブラウザ → CDN
  • CDN → ロードバランサ
  • ロードバランサ → Webサーバ
  • Webサーバ → アプリケーションプロキシ
  • アプリケーション → データベース / キャッシュ / ストレージ / 外部API

HTTP、TCP、Unixソケット、DB、キャッシュ… 技術は異なっても、接続は必ず発生します。接続の最適化は、特定部位ではなく「全体」を速くする改善点 となり得ます。

本トークでは、

  • エッジ最適化(CDN / Keep-Alive / 圧縮 / TLSハンドシェイク)
  • Webサーバチューニング(コネクション管理、ソケット、プロセス管理)
  • DB接続の最適化(持続接続、接続プール、TLS、パラメータ)

これら、全く別の話題に見える領域を横断し、そこに共通する 接続の基本原理 を解説します。設定例と計測手法を交えながら、点と点を結ぶ「その一瞬」を制する考え方を提示します。

局所最適化を超え、サービス全体のパフォーマンスを左右する「最後の一手」をその手中に。

想定対象者:

  • Webアプリの性能をもう一段階引き上げたい、アプリケーションエンジニア
  • アプリケーションの性能改善に取り組む、インフラエンジニア
  • 「接続」という低レイヤに入門したい、あらゆるエンジニア
10
ルーキーズLT(5分)

非エンジニアPdMがスタッフをやって分かった、エンジニアとPdMの「相互理解」を深めるPHPカンファレンスの効用

tamu67_33 Shunki Tamura

「PdMとのコミュニケーションに課題を感じる」「PdMが技術の壁を理解してくれない」と感じているエンジニアの皆さん、それは相互理解の機会不足かもしれません。本LTは、非エンジニアのPdMである私が、PHPコミュニティ(広島/香川スタッフ)での活動を通じて得た知見を共有します。PdMをPHPカンファレンスに送り込むべき明確な理由と、エンジニアの皆さんがPdMを巻き込むことで得られる3つの具体的なメリットをお話しします。プロダクト開発におけるPdMとエンジニアの連携の質を高めるヒントを持ち帰ってください。

1
採択
パンフ記事(2ページ)

Erlang VMは進化したPHPかもしれない

Comamoca_ こまもか

古典的なPHPはCGIで実行されます。CGIはリクエスト毎にメモリを破棄するモデルとなっており、リクエスト間でのメモリ空間は独立しています。しかし、パフォーマンスに難があります。

Erlang VMもまた、リクエスト毎にメモリを破棄するという点では同じアプローチを取ります。Erlang VMではprocessと呼ばれる軽量なグリーンスレッドを用いて並列分散処理を行い、リクエスト毎にprocessを割り当てて実装するのが一般的です。
PHPのCGIとメモリ管理の考え方は共通していますが、Erlang VMは軽量なprocessにより高いパフォーマンスを実現しています。

Erlang VMは優れた処理系ですが、メジャーな言語であるErlangやElixirは動的型付け言語です。一方、最近v1に到達したGleamは、静的型付けかつシンプルな構文で、ErlangとJavaScriptにコンパイルできます。

本記事ではGleamを用いてWebアプリケーションを実装し、PHPとErlang VMの類似点と相違点を実際に検証します。堅牢なメモリ管理や高度な並列処理など、Erlang VMの魅力を紹介していきます。

4
採択
レギュラートーク(20分)

夢の無限スパゲッティ製造機

o0h_ きんじょうひでき

いつでも気軽に、本格的なスパゲッティを手に入れたいと考えていませんか?
次のようなコードを、得る方法を構築しましょう。

  • 関数やメソッドを用いたコードの構造化を行わない
  • フロー制御はgoto演算子によって行われる
    • gotoでのジャンプを行う場合のみif文を用いる

あなたがいつものようにPHPで書いたコードを材料として、
まるで「レンジでチン!で食品を温める」ように、スパゲッティコードを手に入れる。
そんな「夢の無限スパゲッティ製造機」があったら、どうでしょうか?

構造も制御も低レベルな表現力しか持たない世界に転生させ、その後に再びPHPの世界に蘇らせることができれば、
PHPで作られたスパゲッティの製造が可能です!
本トークでは、ネイティブなスパゲッティを作成してみなさんにお届けします

話すこと

「PHPで書かれたコード → opcodeに変換 → 再度PHPに変換」を行い、「通常のコード」 と見比べていきます。

  1. スパゲッティコードの定義と、目指す世界の共有
    • 「スパゲッティ」の要件
    • 「夢の無限スパゲッティ製造機」とは何か
  2. opcodeの基礎的な知識と読み方
    • 文法や語彙
  3. 夢の無限スパゲッティ製造機の解説とデモ
    • 入力/出力の結果の共有
    • 実装の解説
  4. PHPで「真のスパゲッティを目指す」ことの困難性
    • "キレイなgoto" と "ワイルドなgoto"、など

話さないこと

例外処理の実現など、一部のPHPの機能については割愛します
(つまり、どんなコードにも利用できるものではなく、対応する内容には制限があります)

2
採択
パンフ記事(8ページ)

遊んで仲良くなるAST: php-parserを使ってコードを生成してみよう

o0h_ きんじょうひでき

抽象構文木: ASTについて、「名前は聞いたことがあるけど、よく知らない」「ASTを使うことで、何が手に入るのかイメージが掴めていない」なんて人も、多いのではないでしょうか。

「ASTの世界」へ入門してみませんか?
この記事では、「木としてコードを扱うこと」を体感して、読者が「ASTの面白さや可能性にワクワクした!」になることを目指します。
定義や原理の解説よりも、「手を動かしながら、自分で何かを作ってみる」に重きを置いた、ハンズオン形式のアプローチをとります。


扱う内容は、「ASTを活用して、PHPのコードを生成する」です。
PHPでASTを扱うためのライブラリである、nikic/php-parserを利用して、「木を組み上げる」と「コードが出来る!!」を体験しましょう。
終わった時には、関数やクラス定義も、ループや条件分岐も、メソッドの呼び出しも、「全ては木になるんだ!」という気になれるはずです。普段のコードも、少し違った形に見えてくるかもしれません。

具体的な内容:

  1. ごくごく簡単な「ASTとは何か」の説明
  2. nikic/php-parserを動かしてみる・遊んでみる
  3. ASTからコードを生成する
2
採択
レギュラートーク(40分)

PHP でエミュレータを自作して Ubuntu を動かそう

m3m0r7 めもり〜☆

PHP を Web アプリケーションを作るための言語の一つだと思っていませんか。
実はそれ Web アプリケーション以外の用途にも PHP を用いることができるのはご存知でしょうか。

実例として PHP で Java VM (JVM) を実装したり、RubyVM を実装したり,OS などが実装されています。

もちろん,PHP を使って "OS を動かす" エミュレータを実装することもできます。
エミュレータという言葉にピンとこない人もいるかもしれません。皆さんも一度は使ったことあるであろう QEMU や、 VirtualBox のような仕組みを PHP で実装する、というイメージを持ってもらうとわかりやすいのではないかと思います。

本セッションでは,OS の代表格の一つである Ubuntu の起動までをマイルストーンとし, PHP を用いたエミュレータの実装方法から OS を動かすのに必要な知識を解説します。

5
レギュラートーク(20分)

Google Cloud組織の移行とセキュリティ強化の挑戦

theyoshida3 the よしだ

とある事情により、Google Cloudの組織を移行することになりました。
このセッションでは、移行の背景や具体的な手順、直面した課題について詳しくお話しします。
また、移行と同時に進めたセキュリティの強化や、これまでIaC化されていなかったリソースの一部をIaC化する取り組みについてもご紹介します。
これらの経験を通じて得た知見を共有し、同様の課題に直面する可能性のある方々のお役に立てればと思います。

採択
レギュラートーク(20分)

Laravelで学ぶOAuthとOpenID Connectの基礎と実装

theyoshida3 the よしだ

OAuthやOpenID Connectは、現代のWebアプリケーションで重要な役割を果たしていますが、これらの概念はしばしば誤解されがちです。
本セッションでは、これらの技術の基礎をしっかりと理解し、Laravelでの実装を通じて実践的な知識を得ることを目指します。
・OAuthとは
・OpenID Connectとは
・SAMLとは
・Laravelでの実装例

1
採択
パンフ記事(4ページ)

パッケージマネージャNixで実現する宣言的でクリーンなPHP開発環境の構築

takeokunn たけてぃ

本文

「このプロジェクトはPHP 8.3、あっちは8.1、拡張モジュールも違う…」

複数プロジェクトを抱えるPHP開発者にとって、環境管理は悩ましい問題です。
Homebrewでバージョンを切り替えればグローバル環境が汚染され、Dockerを使えばオーバーヘッドでネイティブより動作が遅くなる。

本記事では、第三の選択肢としてパッケージマネージャ「Nix」を紹介します。

Nixは純粋関数型言語で設計されたパッケージマネージャで、「同じ入力からは常に同じ出力」という再現性を保証します。
仮想化を用いずにプロジェクト単位の完全な環境分離を実現し、ネイティブな実行速度を維持したまま、PHPバージョンや拡張モジュールをプロジェクトごとに宣言的に管理できます。

「開発環境構築のIaC(Infrastructure as Code)」を実現するNixで、チーム全員が同一環境で開発できる世界を体験してみませんか。

パンフレット記事に記載すること

  • 命令的管理(Homebrew)と宣言的管理(Nix)のアプローチの違い
  • Nix Flakesを用いた、PHPバージョン・拡張モジュールの具体的な定義手法
  • direnvとの連携による、ディレクトリ移動だけで環境が切り替わるシームレスな開発体験
  • Dockerとの比較と使い分けの指針
  • etc...
2
採択
レギュラートーク(40分)

PHPのバージョンアップ時にも役立ったAST(2026年版)

matsuo_atsushi 松尾篤

本トークはPHPカンファレンス名古屋2025で発表した「PHPのバージョンアップ時にも役立ったAST」の最新版です。

関心を持ち続けながら勉強会に参加していると、ふとしたことがきっかけでさまざまな情報がつながり、点から線そして面に変わり、勉強会で学んだ情報が業務に役立つことがあります。

勉強会でプログラムの構造をツリー状に表現したAST(抽象構文木)のハッシュ値が同じであればプログラムの変更前と変更後の間に差分がないと判断できるという発表を聞いたことがきっかけで、実際のプロダクト開発においてPHP 8.1からPHP 8.2にバージョンアップする作業の一部をスムーズに進められることに気づき、結果として大幅にテスト工数を削減できました。

このトークでは、ASTを取得およびそのハッシュ値を比較する方法やハッシュ値の確認時に留意する点を解説しつつ、ソースコードの解析や変換に活用できるASTがPHPのバージョンアップ時にも役立った事例を紹介します。さらに、業務で活用できるASTを使った影響範囲調査の応用例や、PHP 8.4からPHP 8.5にバージョンアップする際にASTが変わらないケースも今回新たに紹介します。

1
採択
レギュラートーク(20分)

「通るまでRe-run」から卒業!落ちないテストを書く勘所

asumikam asumikam

「やべっ!テスト落ちた!!一旦Rerun!!!」
──みなさん、これ、やっていませんか?(特大ブーメラン)

通ればラッキー、通らなければ…まああとで考えるか、というアクションに陥りがちです。
このような"たまに落ちる"Flaky Testを放っておくと、じわじわとテスト全体の信頼性を失っていきます。

私自身、何度も同じ轍を踏んできましたが「そもそもそのようなテストを書かないようにする」勘所を掴んできました。
このトークでは、Flaky testになりそうな臭いのするテストの勘所、そして、そもそも生まないためのテストの書き方について話します。

話すこと

  • PHPで遭遇しがちな Flaky Test の具体例と原因パターン
    • 不定順・日付またぎ・fakerの揺れ・CIとローカルの差異 など
  • Flakyにならないテスト設計の指針
  • Flaky Testを“そもそも生まない”ための開発プロセス・レビュー
6
採択
パンフ記事(4ページ)

PHPerKaigiのあるきかた

asumikam asumikam

あなたのPHPerKaigiは、今年で何回目ですか?
はじめてのドキドキ、2回目の成長した自分との再会、3回目からの“ただいま”感…。
もしかしたら、毎年皆勤賞で、すっかり“ホーム”になっている人もいるかもしれません。

私自身、PHPerKaigiだけでなく様々なカンファレンスに参加してきましたが、
いつも思うのは「最初にこれ知ってたら、もっと楽しめたのに!」という小さなヒントやコツの存在です。

そこで今回は、私が「最初に知りたかった!」と思った PHPerKaigi の楽しみ方のコツをパンフレットとしてお届けします!

こんなことを書きます!

  • ワクワク前準備
  • スポンサーブースの歩き方
  • セッション&フィードバックの楽しみ方
  • 懇親会で広がる交流のヒント
  • 「楽しかった」を広げるブログ術

もちろん、楽しみ方は人それぞれ。
この中からひとつでも「いいな」と感じるものがあれば、あなたのPHPerKaigiに少しだけ取り入れてみてください!!

7