LT(5分)

なんとかパターンわかんないよー ~でもそろそろ勉強しなきゃなお話~

wp_daisuke だいすけ

「Circuit Breaker」
「BFF」
「Active Record」……
エンジニア界隈に飛び交う横文字や「〇〇パターン」という言葉に、苦手意識を持っていませんか?
「言葉を知らなくてもコードは書ける」「難しい言葉を使うとマウントだと思われる」と、あえて用語を避けてきた方も多いかもしれません 。
しかし、AIによるコーディング支援が当たり前になった今、これらの「技術用語」は、AIに対する「高圧縮で高精度なプロンプト」として極めて重要な役割を果たします。

本LTでは、教科書から入る退屈な学習法ではなく、AIを使って「今書いている自分のコード」から技術用語を学ぶ、実践的なアプローチを紹介します。
開発をもっと楽しく、創造的にするための新しい学習スタイルを提案します 。

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

「プロンプト一発ドカン!」は諦めた。大規模SaaSの複雑な設定提案をLLMで実用化するための、構造化出力と泥臭い評価基盤

「顧客の業務フローをヒアリングし、その業務に必要なデータベース構築を自動化する」

夢のようなLLMアプリケーション開発に挑んだ私たちが直面したのは、「LLMは所詮トランスフォーマーであり、論理計算機ではない」という現実でした。
本トークでは、その限界を踏まえたうえで実用的にLLMを使いこなすための設計戦略についてお話します。

私が開発に関わる製品は、ユーザーがDBにテーブルやフィールドを自由に作成できる特殊なPHP製の大規模SaaSであり、構築される定義には厳密な整合性が求められます。
顧客へのヒアリング(自然言語・曖昧)から、この柔軟かつ厳密なDB構成(構造化データ)を導き出すため、私たちは「プロンプト一発ドカン!」で解決することを諦めました。

本トークでは、PHP製SaaSにPython製のLLM機能を統合したアーキテクチャの全貌と、実用レベルの精度を出すために繰り返した「泥臭い試行錯誤」を共有します。

  • PHP × Python連携:OpenAIライブラリのないPHP環境から、Python側で構造化出力(Structured Output)させ、PHPでDB構築するための入力データを生成する構成
  • 「感覚」で修正しない:プロンプトのTry&Errorを高速化し、デグレを確実に検知するために自作した「評価ツール」の重要性
  • LLMに任せない勇気:「形式的な処理」は徹底してロジックに戻し、LLMには得意なことだけをさせる責務の分離

「チャットボットを作ってみた」の先にある、複雑な要件を伴うシステム開発におけるLLM活用の勘所をお話しします。

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

PHPerKaigi コードバトルを支える技術

nsfisis nsfisis

コードゴルフというコーディング競技があります。
コードゴルフとは、問題に対してコードを提出し、テストが通ったコードのうち最も短いコードを書いた人が勝利するというものです。

PHPerKaigi 2024 ではコードゴルフコンテストを、PHPerKaigi 2025、2026 では、コードゴルフを元にしたコードバトルという企画を実施しました。

こういったシステムを安易に実装すると、サーバ上で任意のコードを実行することになり、深刻な脆弱性を作り込んでしまいます。

このセッションでは、これらの企画の技術面・運営面での裏側を話します。

話すこと

  • コードゴルフ・コードバトルとは
  • 投稿されたコードを安全に動かすために
    • Docker による隔離
    • WebAssembly による隔離
  • ルールとその変遷
  • 問題の難易度調整
  • 今年または去年の問題と解答の紹介
    • コードゴルフのテクニック紹介が趣旨ではないため、それぞれの問題に対する詳細な解説はおこないません。
5
レギュラートーク(20分)

Inertia.jsでどこまでシームレスにSPAが作れるのか、検証してみた

ito_kohhh いとこー

Inertia.jsはLaravelとモダンフロントエンド(React, Vue.js)をシームレスに繋ぐアダプターです。
Laravelから見るとbladeテンプレートを利用するのとほとんど同じ書きっぷりでReactと連携することができます。
バージョンが2.0に上がってからはprefetchや無限スクロール、遅延ロードなどもサポートされ、より利便性が向上してきています。
この登壇ではInertia.jsの基本的な使い方を説明しつつ、どんなところが便利なのか
どういうふうに使うとより便利なのかについて、紹介していきます。

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

TiDBがどれだけMySQL互換を保っているのか!?既存のLaravelアプリケーションで徹底検証

DPontaro DPon

概要

TiDB は「NewSQL」と呼ばれる分散データベースで、
MySQL 互換のプロトコルを持ちながら水平スケールできるなんだかすごいやつです。

さてMySQL互換というからには、さぞ移行もしやすいことでしょう!
MySQLを利用している既存のLaravelのアプリケーションをローカル環境でTiDBに切り替えてみて、果たしてどこまで動くのか?
実際に切り替えてみてからの躓きからTiDBとMySQLの違いを掘り下げ、完全に理解していきましょう!

ターゲット

  • TiDB に興味はあるけど触ったことがない方
  • RDBMS以外のDBも学んでみたい方
  • DBが好きな方

お話すること

  • TiDBの簡単な概要、特徴
  • TiDBのローカル環境の構築方法
  • Laravel アプリケーションを接続してみて実際に詰まったポイント
  • MySQLとの挙動の違いとその理由
5
レギュラートーク(40分)

FrankenPHPで実現する、PHPのリアルタイムWeb通信の新アーキテクチャ

ma_me ma@me

本トークはPHPカンファレンス福岡2025で発表した「Node.jsに頼らずにFrankenPHPでリアルタイムWeb通信を実現する
」(30分)をベースに、動作デモの充実させ、Socket通信やプロセス分離の説明を厚くアップデートしたものです。

概要

従来のPHP環境は1リクエスト1プロセスのモデルであり、長時間接続を維持するソケット通信とは相性が悪く、
リアルタイム通知を実装する場合、Node.js等を組み合わせた複雑なインフラ構成は悩みの種でした。
しかしFrankenPHPの登場で取れる選択肢が増えてきました。
この課題を解決するためにMercureが内蔵されており、PHPスタック内でシンプルかつ高速なリアルタイム通信を実現しています。
本セッションでは実際に動作するアプリケーションの動作デモを交えながら、Socket通信の様子やプロセス分離の様子を可視化し、解説します。

話すこと

  • FrankenPHP (Mercure) を使った実装デモと、PHPスタックのみで完結するメリット
  • PHPにおける常時接続の難しさと、ポーリング等の従来構成の限界
  • Server-Sent Events(SSE) と WebSocketのソケット通信の基礎と違い
  • 通信方向の違いによる技術選定のポイント
  • PHPランタイムと通信プロセスのプロセス分離

話さないこと

  • Mercure(Hub)の技術詳細
  • スケーラビリティ、耐障害性等の非機能要件
4
レギュラートーク(40分)

PHP8.5におけるパイプ演算子導入の影響とマルチパラダイムへの未来

ma_me ma@me

概要

PHP8以降、match式の登場に代表される関数型言語の取り込みが進み、マルチパラダイムへと進化してきています。
さらにパイプ演算子の導入により、コーディング体験が大きく変わる局面に来ています。
一時変数の命名に掛かるコストや、多用による可読性の低下によるメンテナンス難易度の上昇、
array_mapに代表される配列操作の深いネストや、Collectionでの型情報がないメソッドチェーンに苦労された方も多いでしょう。
本セッションではパイプ演算子を中心にこのような問題を解決し、
より宣言的でわかりやすいコードを書くための手助けをしつつ、マルチパラダイムに向かうPHPについてお話しします。
オブジェクト指向設計に関数型言語の要素が加わることで、どのように設計の幅が広がり、どのようにコードが変化するのか。
そしてそれらにパイプ演算子がどう関わるのかを、具体的なコード例を交えて解説します。

話すこと

  • パイプ演算子の基礎と仕様。従来の記述(ネスト・一時変数)との比較
  • パイプ演算子がもたらす可読性と型安全性のメリット
  • Enum・match式・パイプ演算子を組み合わせた宣言的なコードの実装例
  • RFCも含めた、PHPのマルチパラダイムなコード設計

話さないこと

  • パイプ演算子の内部実装
  • 厳密な関数型プログラミング理論
  • 他の言語との詳細な機能比較
1
LT(5分)

PHPUnitの進化から、最近のPHPの進化をおさらい!

o0h_ きんじょうひでき

「PHPUnitの機能強化と改善の様子を眺めてることで、PHPの進化の軌跡を感じ取ってみよう!」というLTです。

最近のPHPUnitは、(大体)年次でメジャーバージョンアップを行っています。
そして、最近のPHPも年次でマイナー/メジャーバージョンアップを行っています。

PHPUnitを見ていると「より良いテストを、より誰が使っても誤用されずに書けるように」と進化しているような意思が感じられ、
またPHPも「よりエレガントなコードを、安全に書けるように」と進化しているようなエネルギーを感じます。

そんな訳で、PHPUnitには、PHPの「新機能への対応」「新機能の利用」を積極的に取り入れているな!!と感心させられる場面がしばしば。
例えば、少し前に入った「ネイティブのEnumが使えるようになったので、 assertEqualsでEnum同士の比較を通せるようにする」なんて機能追加は分かりやすいでしょう。

数多くの進化を遂げてきたPHP。
PHPユーザーのためのPHP製ツールであるPHPUnitの進化から、PHPのパワーを発見しましょう。

▼ このLTで得られるもの

  • 「PHPUnit、そんな風に進化していっているんだね!」という喜び
  • 「お、新しいバージョンでは、そんなものも対応していたのか」という発見
  • 「新しいバージョン良さそう〜上げて行こうな!」というモチベーション
3
ルーキーズLT(5分)

Laravel10→11へアップデートしようとしたら何のエラーも出ずに死んだ話

ito_kohhh いとこー

皆さんはLaravelのアップデートを定期的に行っていますか?

私たちのチームは段階的にLaravelのアップデートを行い、最終的に9から12まで上げることに成功しました。
その過程の中、10→11の段階でアップデートしようとしてみたところ
composer updateの実行で何のエラーログもなく実行エラーとなってしまいました。

最初は原因が分からず困惑しましたが、なんとか解決し
その過程でLaravelが起動される時の流れをいい感じに学ぶことになりました。
今回はLTでその流れをご紹介したいと思います。

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

テストの2面性と4つの象限

55_ymzn やまずん

「テスト」という言葉は、文脈によって全く異なる意味を持ちます。
例えば、プログラマーとQAが「テスト」について話すとき、よく認識のズレを感じることがあります。
不思議ですよね。

それは、テストには「開発手法(設計)」としての側面と、「品質保証」としての側面の二面性があるからです。
この違いを理解せず、開発手法としてのテスト(TDDなど)だけで「品質は保証された」と判断してしまうことは危険です。
それと同時に、品質保証の側面だけから開発手法としてのテストを語ることも、また危険です。

本セッションでは、テストを「事実から学習し、意思決定するためのフィードバックループ」と捉えます。
そして、アジャイルテストの4象限を用いて、その役割の多様性を整理します

チームを支援するテスト

テストから得られた情報によって、チームを導き、支援するような役割を表すのがこの側面です。

製品を批評するテスト

一方で、作り手が考える「あるべき姿」とはまた違った視点から、批判的に評価し、チームの自信とステークホルダーへの説明責任を果たす役割を持つのがこの側面です。

ビジネス面と技術面

上記の左右の軸に加え、それが「ビジネス(ユーザー)視点」なのか「技術(内部品質)視点」なのかでマッピングすることで、テストの目的はより鮮明になります。

テストの二面性を知り、アジャイルテストの4象限を使うことで、漫然とテストをしていたことに気づくかもしれません。
これらは「誰のために、どんなことをするのか」に気づくことができる強力なツールです。

テストの二面性と4象限へのマッピングを使って、チームで納得のいくコミュニケーションを行うためのヒントをお話しします。

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

「バグ」を「チャンス」に変える技術

55_ymzn やまずん

「バグ」という言葉を聞くと、ネガティブな気持ちになるプログラマーは少なくありません。
多くの人にとって、バグ報告は「自分のミスへの指摘」のように感じられ、決して気持ちの良いものではないでしょう。
その結果、バグ報告を躊躇したり、見なかったことにしてしまう心理が働くことも理解できます。

しかし、1人のテストエンジニアとして一貫して思うのは、バグは誰かの「罪」ではなく、単なる「事実(期待結果との差異)」です。
この事実と正しく向き合うための技術こそが「バグ管理」だと考えています。
そして、それを運用するのは感情を持った人間です。

本セッションでは、バグ管理を「(意図的でないにせよ)開発者を責める場」から「チームが前進する場」へと変革した実践事例をお話しします。

バグ管理の本質は「事実」の管理

バグとは「現実で起こっている問題」であり、リスク管理の対象として適切に管理すべき対象です。
バグを全て修正するのではなく、限られたリソースの中で建設的に対処することが必要です。

「バグ」ではなく「チャンス」と呼ぶ

「期待と違う挙動」は、実はプロダクトを良くする機会であることに気づきました。
呼び方を変えるだけで、バグ起票や対処のハードルが下がった事例を紹介します。

重大度を「妖怪」で定義する

重大度という、そのバグが持つ悪い結果を予知するステータスがあります。
これは一般的に「Critical/Major」などの言葉がありますが、私がいたチームでは「座敷童(軽微)」「鬼(重大)」「八岐大蛇(致命的)」と定義しました。
これにより「今週は鬼を退治しよう!」とチームの会話がポジティブに変わりました。

バグ管理は重要です。一方で、嫌な気持ちを放置するのも違います。
バグ管理をハックして、毎日の開発を楽しくしませんか?

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

テスト計画とは「納得感」を作ることだ

55_ymzn やまずん

「全数テストは不可能」というソフトウェアテストの原則があります。
ごく単純なソフトウェアを除けば、すべてのバグを見つけることは不可能です。
では、私たちは不完全さを理由に、テストという活動やその責務を放棄してよいのでしょうか?

私はそうではないと考えます。
無限のテストに立ち向かうためには、「どこまでやれば我々の責務を果たしたと言えるか」を定義し、チームで納得する必要があります。
私はそれを「テスト計画」によって示せると考えています。

多くの現場において、テスト計画は「スケジュール調整」「テンプレートを埋める作業」と誤解されていますが、それは本質ではありません。
本来のテスト計画とは、ソフトウェア開発におけるコンテキストを深く理解し、「テストすべきもの」と同時に「テストしないもの」を定義します。
そして、「我々はこれでリリースできる」と納得することです。

本セッションでは、QAエンジニアである私の視点から、テンプレ埋め作業ではない、「テスト計画」という活動を構成するプラクティスを一部紹介します。

「コンテキスト」を集める

「テストはコンテキスト次第」という原則があります。
「なぜ作るのか」「誰が使うのか」、そして「制約」そういった情報を集め、整理することがテスト計画の第一歩となります。

「作ってはいけないもの」を見つける

我々は「作るべきもの」に集中することが多いです。
一方テストでは、「作ってはいけないもの」ということも考える必要があります。
プロダクトリスクと言いますが、これを批判的な問いによって見つけていきます。

完璧なソフトウェアが存在しないように、完璧なテストも存在しません。
しかし、我々はプロとして、「これなら大丈夫」と胸を張って顧客に届ける必要があります。

その方法のひとつとしての「テスト計画」について語りたいと思います。

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

Official PHP SDK for MCPって何?どう動くの?読んでみました! 〜FWとして読み解くMCP SDK〜

o0h_ きんじょうひでき

"Official PHP SDK for MCP"、mcp/sdkというライブラリがあります。
これを使うと、簡単にPHPアプリケーションを「MCPサーバー」化できます。

例えばToolsを提供するなら、「jsonを返すPHPのメソッドに、「Tools」用のattributeを付けて、 Mcp\Server クラスを run() する」で、もうAIエージェントから使えます!
あまりに簡単。魔法のようですよね。

これは、一種のフレームワーク(FW)としての開発体験を提供していると言えます。
すなわち、

  • 開発者は、自分の必要なロジック(アプリケーション機能)にだけに関心を払えば良い
    • それより下の、「クライアントとのやり取り作法」については、全てカプセル化
  • 「実装した機能」の検出と呼び出し = ルーティングを一式備えて、正式で唯一のエントリーポイントを提供する
  • この2点により、「制御の逆転」を実現する

というものです。
──さて、phper的には「どうやって、”足場”と”アプリケーション機能"の分離を行っているのか」「MCPならではの特殊な事情を繋ぎ込んでいるのか」が気になりませんか?
なぜ、こんな少ない労力で「すぐ動く」のでしょうか。

そんな訳で、「MCPそのもの・便利な使い方」はさておき、「FWとしてのmcp/sdkはどう設計され、機能を実現しているのか?」を読み解こう!というトークです。

このトークでは、次のような知識と知恵を提供します。

  • 「FW」とは何を指しているのか、目的と要件
  • mcp/sdkの「制御の逆転」と手続きの隠蔽、MCP的な事情をクリアするための実装
  • 現代PHPのエコシステムに則った拡張性の実現(PSR関連)
3
レギュラートーク(40分)

AI 時代だからこそ抑えたい「価値のある」ユニットテストを書く技術

shogogg 河瀨 翔吾

テストコード、書いていますか?

今日において、自動ユニットテストを整備することが開発生産性の向上に寄与することはもはや疑う余地がありません。また AI の活用により、テストコードを書くコストは従来に比べて大幅に減っています。

しかし「テストコードの書き方や導入方法がわからない」「テストコードがあるだけで満足してしまい十分にその効果を発揮されていない」「テストコードが負債化し開発の足枷になっている」などの課題に直面している方も多いのではないでしょうか。

AI がコードを書く時代になっても……いや、むしろ AI がコードを書く時代だからこそ「価値のある」ユニットテストについて一緒に考えてみませんか?

お話しすること

  • AI 時代における自動ユニットテストの価値とは
  • 価値のあるテストコードを書くための基本的な考え方
  • よくあるアンチパターンと処方箋・テクニック
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 ベースのモジュラー アーキテクチャに興味のある方。

ルーキーズLT(5分)

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

tamu67_33 Shunki Tamura

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

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

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

theyoshida3 the よしだ

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