現代のコンピュータはハードウェアから私たちプログラマが書くプログラムの動作までの間が多くのレイヤーに分けられて動作しています。
レイヤーは自分より下を抽象化し、下のレイヤーを詳しく理解しなくても多くの場合プログラマはプログラムを書けます。
一方、プログラムが期待した様に動作しない時には下のレイヤーの動作の理解が問題の解決の助けになることもあります。
このトークでは私たちが愛するPHPをスタート地点にして、「VMって何?」「 PHPやJavaとC言語の根本的な違い」など、コンピュータプログラムがどの様に動作するのかを解説します。
コンピュータのレイヤー構造を理解すると、いままでは見えていなかった角度からプログラミングを楽しめるようになります。
このトークを通じて、低レイヤーが好きになったり、いろいろなレイヤーで面白いことをしたりする方が増えることを期待しています!
PHPアプリケーション開発では主にPHPUnitを使い、ユニットテストを書いていると思います。
PHPUnitは個々のクラスやメソッドをテストするのが得意なツールですが、実際のユーザがブラウザを通して体験するJSやCSSまで含めたレンダリング結果や、複数のページ遷移を伴う複雑なフローへのテストは苦手です。
こんな時にPlaywrightを使うとフロントエンドのテストが効率的にできます。実際にブラウザを動かしてテストを行うツールであり、ユニットテストが苦手としている領域をカバーすることができます。
一方でPHPUnitと比べ実行速度は遅く、メンテナンスのコストも高くなる傾向があります。
本トークではPlaywrightでできることを紹介しつつ、PHPUnitとPlaywrightの特性に沿ってテストをかき分けることでテスト時間を短縮し、より安心してリリースできる環境作りを紹介します。
コードゴルフという競技をご存知でしょうか?
与えられたお題に対して、どれだけ“短く”コードを書けるかを競うもので、今年3月のPHPerKaigi 2025では「PHPerコードバトル」として開催され、大いに盛り上がりました。
コードゴルフでは、可読性や保守性は重視されず、むしろ犠牲にしてでも短く書くことが求められます。
一見実務とは無縁に思えるかもしれませんが、実はこの競技、PHPの文法や関数についての深い知識が求められるため、楽しんでいるうちに言語仕様に詳しくなってしまうという学習効果もあるのです。
このセッションでは、コードゴルフで実際に使われるトリッキーなテクニックと、それを支えるPHPの言語仕様や関数の挙動について解説します。
例えば、PHPの文と式の違い、普段あまり使わないマイナーな関数の仕様など、ちょっとした遊びからPHPの理解が深まる世界をご紹介します!
デシジョンテーブル(決定表)といえばテスト設計の手法として知られていますが、PHPでの実装パターンとしても非常に強力です!
複雑な条件分岐をif文の入れ子で書くと保守性が低下しますが、決定表を使えば条件と結果の組み合わせを表形式で美しく整理できます。
登壇者は実際の業務で、条件の組み合わせが数千パターンにも及ぶ大規模な決定表を実装してきました。
この経験から得たノウハウと実践的なテクニックをご紹介します。
明日のプロジェクトですぐに活用できる実装パターンをお伝えします。
難解なビジネスロジックをクリアに表現できるPHPのデシジョンテーブル実装に、ぜひチャレンジしてみましょう!
MySQL9でのベクトルカラム/ベクトル検索サポートは、PHPアプリケーションにおけるAI活用や類似性検索を大きく変える可能性を秘めています。
プロポーザル提出時は、AWSのRDSで取り扱い可能なバージョンは、8系が最新ですが、特にAWS (RDS/Aurora) 環境での利用が現実味を帯びる中、そのインパクトは計り知れません。
本セッションは、ミドルレベルのPHPエンジニアを対象に、この「ベクトルカラム」導入に焦点を絞ります。ベクトルデータの基本的な概念から、MySQL9で予想されるベクトル型・専用インデックス・検索関数の概要、そしてPHPからこれらをどう扱うか、パフォーマンス考慮点、AWS環境特有の設定や制約についてを説明します。推薦システム、画像検索、セマンティック検索といった機能の実装がどう変化するのか?何を学び、どう備えるべきか? 未来のキラー機能開発に向けた勘所をお伝えします。
PHPのsocket拡張を利用するとsocketプログラミングができ、通信プロトコルもPHPで実装できます。
さらに、RAW socketという機能を使うとOSが管理しているTCP/IPプロトコルもPHPで実装可能です。
今回のセッションでは、
プロトコルは仕様が決まっていて、その仕様を見てひたすら実装し、最終的にはサーバやクライアントと通信できるようになります。この通信できた時の喜びは非常に大きく、かつ大変勉強になります。通信できるまでの過程も含めて楽しさが伝えられたらと思います。
PHPを社会人になって初めて触りました。またLaravelというフレームワークを知りました。そして新卒だった自分はアプリの初期開発でフレームワークの自由さに魅了され、振り回され、恥の多いコードを書きました。その後、過去の自分が未来の自分を苦しめ、改善を決意し、小さく小さくコツコツと改善を進めました。
本セッションでは自分がどんな恥の多いコードを書いてきたのか、どうやってコード的な側面、非コード的な側面からシステムを改善していけるかを実体験をもとにご紹介していきます。
セッションを聞いた方が「自分と似た経験をしないための知識」、「しくじりを自分の成長に変えていける引き出し」を得られたら幸いです。
話すこと(変更の可能性あり)
・ 設計を知らないで実装をするとこんなことしちゃう
・ 自分が行った小さな改善作業(技術側面、非技術側面)
副作用が絡み合うロジックを触るたび「どこで何が起きるか分からない」――そんな不安をドメインイベントで断ち切ります!
ドメインイベントは「〇〇が起きた」という事実をクラス化し、処理の流れを“出来事”をベースに組み立て直すことで、依存を一方向に整えることができます。
本トークでは実務でのリファクタリングを題材に、
の3ステップでリファクタリング前と後のコードで比較しながら順に解説します。
チームでドメインイベントをわいわい議論できるようになるきっかけを提供します!
PHPStanがどのように解析を行っているのか、型を決定しているのかを普段意識することはほとんど無いと思います。
しかし、仕組みを理解することで活用の幅がもっと広がり、そしてかっこよくなれます!
そこで本トークでは、PHPStanへのコントリビュートを通して、更にPHPStanに詳しくなった経験についてお話します。
話す内容
「とりあえず動くPHP」から一歩進みたい初学者へ向けて、PHP 8の文法と型の表現力を通じて、読みやすく・壊れにくいコードの設計を学ぶセッションです。
match 式や readonly プロパティ、union types、named arguments などの機能が、静的解析ツール(PHPStan, Psalm)と組み合わせてどのように活きるのかを具体的なコード例で解説します。
「型を書くだけで、こんなにミスに気づけるのか」「PHPでも設計って考えられるんだ」と実感できる内容を目指します。
文法の表面的な知識だけでなく、現場でコードを書く上で意識したい“意図を型で伝える”視点を手に入れましょう。
平均80点ぐらい取れるAWS構成とその使い所と細かいハマりポイントを紹介します