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

PHPUnitのアサーション、PHPフレームワークアサーション、そしてわたしのアサーション

asumikam asumikam

PHPUnitには多くの便利なアサーションが用意されていますが、
わたしたちが普段使っているフレームワークにも独自のアサーションが実装されていることをご存知でしょうか?

普段便利に使わせてもらっているアサーションの中身がどうなっているか、みたことはありますか?
「まだ、みたことない・・・!」という方、このセッションでテストの裏側にある仕組みにDeep Diveし、テストライフをさらに快適にしていきましょう!

話すコト

  • PHPUnitがどのようにアサーションの結果をOK/NGと判断しているのかを知る
  • 各フレームワークにあるいろいろなアサーションを知る
  • 自分でカスタムアサーションを作成するという選択肢を知る
3
レギュラートーク(15分)

うまくいかないスプリントレビュー、うまくいくスプリントレビュー

asumikam asumikam

私はスクラムを使って日々プロダクトを作っています。
その中で、スプリントレビューに「手応え」を感じたことがありました。
一方で、手応えがないレビューの時、自分では「うまくいっていない」と気づいていなかったことに後から気づきました。

効果的なスプリントレビューを体験したことで、
過去に「うまくいっていなかった」ことが明らかになり、改善の余地を見つけられました。

このセッションでは、経験主義に基づいて学んだ「うまくいくスプリントレビューのコツ」を具体例と共にシェアします。
また、どのロールの人でも実践できる、スプリントレビューを成功に導く方法についてお話しします。

話すコト

  • なぜスプリントレビューを「うまくいかせたい」のか?
  • 「うまくいかない」レビューとは?原因は?
  • 「うまくいく」レビューの具体例と成功のコツ
  • 各ロールごとの素敵なスプリントレビューを創るためのHOWTO
6
レギュラートーク(15分)

開発タスクを疎にする技術

asumikam asumikam

「タスクが大きすぎて進めにくい」「タスク同士が依存して足を引っ張り合う」「ああ、またコンフリクト…」
といった状況に心当たりはありませんか?
少なくとも私は、この悩みを何度も繰り返し経験してきました。

良いプロダクトを迅速に届けるため、開発タスクを効率よくmainブランチに統合していきたい。
その思いを胸に、試行錯誤しながらタスクを「疎」にするための方法を自分なりに編み出してきました。

しかし、「疎にできるけど、疎にしないほうが良いタスク」も存在することに気づいたのです。
この発表では、爆速で効率よくチーム開発をするための「タスクのちぎり方」について話します。

話すコト

  • そもそも、なぜタスクを疎にしたいのか?
  • 疎にすべき場面とそのパターン
  • 疎にしないほうが良い場面とその理由
  • リソース効率 vs フロー効率のバランス
  • タスクを疎にするテクニックN選(時間の許す限り)
3
採択
2025/02/22 16:00〜
ルーム カルテット
レギュラートーク(15分)

PHPのバージョンアップ時にも役立ったAST

matsuo_atsushi 松尾篤

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

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

この発表では、ASTを取得およびそのハッシュ値を比較する方法やハッシュ値の確認時に留意する点を解説しつつ、ASTがPHPのバージョンアップ時にも役立った事例の1つを紹介します。

4
レギュラートーク(15分)
東海勢(出身or在住)

見せてもらおうか、OpenSearchの性能とやらを!

inu_shunta いちかわしゅんた

弊社の主要な検索機能では、Laravel Eloquentを用いたRDS上の検索クエリにおいて、複数テーブルのJOINや複雑なクエリ構造が検索パフォーマンスに影響を及ぼしていました。特に、利用頻度の高いクエリがレイテンシー増加の主因となっていたため、その改善策としてOpenSearchを導入しました。

導入後、検索速度が飛躍的に向上し、レイテンシーも大幅に改善されました。
また、OpenSearchのPHP DSLライブラリを導入することで、クエリの構築をシンプルにし、保守性を高める工夫も行いました。

Laravel eloquentとの共存を図りながら、検索機能のパフォーマンス最適化を実現しました。
これらの経験を基に、検索機能改善の実例を紹介します。

このトークは、パフォーマンスに課題を抱える開発者や、検索機能の改善に興味のある方に向けた内容です。

3
採択
2025/02/22 12:05〜
ルーム カルテット
レギュラートーク(15分)
東海勢(出身or在住)

メンテが命: PHPフレームワークのコンテナ化とアップグレード戦略

inu_shunta いちかわしゅんた

サービスは生き物のようなもので、放置すれば腐ってしまいます。
適切なメンテナンスとアップグレードが必要です。
本セッションでは、古くなったPHPフレームワーク(Laravel)を再生するための具体的な戦略を解説します。

ユニットテストの導入、Laravelアプリケーションのコンテナ化によるインフラ刷新、Laravelアプリケーション/MySQLのバージョンアップなど、数々の挑戦とそれを克服した方法を紹介します。

これにより、デプロイ頻度の向上、テストコードによる仕様の明文化、システムの安定性を向上させることができました。

実際の成功事例を通じて、参加者はPHPプロジェクトの持続的な進化を支える具体的な戦略を学ぶことができます。

4
レギュラートーク(15分)
初登壇(これまでカンファレンスで登壇経験なし)

さよなら Formファサード・Htmlファサード

soh_1121_ 佐藤 壮一

Form・Html ファサードは laravelcollective/html パッケージに含まれています。
このパッケージは放棄されており、spatie/laravel-html への移行が推奨されています。
私の関わるサービスでの使用箇所は約1,700箇所…!
移行ツール「Shift」で移行しましたが一筋縄ではいかず…

今回は laravelcollective/html の Shift による移行で、苦労して得た知見をご紹介します。

■ 内容

laravelcollective/html から spatie/laravel-html への Shift による移行方法
Shift でうまくできなかったところ
移行前後の違い
■ 対象

laravelcollective/html の移行を検討している人
移行ツール Shift がどういうものか知りたい人

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

PHPでテストコードのゼロイチをやってみよう

aki_artisan あかつか

カンファレンス等では話を聞くことも多いテストコード。テストコードをかけると、それが命綱のような役割となり、安心してコードの変更を行えるようになります。

ですが、歴史の長いソフトウェアでは、様々な経緯からテスト環境が導入されていないこともあります。

本トークでは、Laravelなどのフレームワークを入れるのではなく、ゼロからテスト環境を導入する方法を解説します。

  • composerでphpunitをインストール
  • autoloadの設定
  • phpunitの設定ファイルの記述

このトークを通じて、みなさんも関わっているプロダクトで、テストコードのゼロイチに挑戦してみませんか?

話さないこと

  • 良い単体テストコードの書き方
4
採択
2025/02/22 12:25〜
ルーム カルテット
レギュラートーク(15分)

『テスト書いた方が開発が早いじゃん』を解き明かす

o0h_ きんじょうひでき

「テスト(自動化テスト)を書くのが苦痛」という人がいる一方で
「書いた方が開発が早くなる」という人もいます。なぜ?

「楽に仕事を進める」を追求したに過ぎないのです
「全部そうしよう」と思わず「楽に書けそうな所なら書く」という面もあるでしょう

肝となるのは
「必要なものを考える↔コードを書き上げる」の一連の動きの内で
何をどう切り取り、何で仕事を担い、どんな順番で実行し…の捉え方=マインドセットです
(ちょっとだけ道具の使い方も!)

プログラミングの捉え方をちょっと変えて
「テスト好きじゃない」から「書いた方が早い」への一歩を踏み出すためのトークをします

こんな人に

  • テストが苦手だ、嫌々やっている
  • テストに興味があるけど、どこから始めれば良いのか分からない・環境がない

伝えたいこと

  • テストで楽をする・早くなるってどんな感覚?
  • やりやすい所から始めよう!!
6
レギュラートーク(15分)
初登壇(これまでカンファレンスで登壇経験なし) 東海勢(出身or在住)

ガード節に頼らない!ネスト削減のマル秘テクニック

ひろふみん

可読性のためにコードのネストを浅くすることはとても良いプラクティスです。
ガード節はネストを簡単に解消できる手法として広く勧められていますが、途中リターンを多用することに問題はないのでしょうか?

このトークでは、ガード節を使うメリット・デメリットを詳しく分析し、さらに可読性を高めるために考案した新しいテクニックを、具体的な例を交えながらご紹介します。

ネストが浅くて読みやすいPHPコードの作成にきっと役立つ情報をお届けします。

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

Edit PHP files programmatically feat. AST

o0h_ きんじょうひでき

抽象構文木:ASTの名前は、PHPStanやRectorの普及もあり、少し身近な存在になってきました。

しかし「コンパイラでもない人間の我々が、なぜ喜ぶのか?」と思う人もいるはず。
名前や、チラッとだけ概念は知っている。けど、何をもたらしているのか──

そこで、ASTの概念の応用例に触れてみたら、その世界に入門しやすいのではないか!!というトークです。
「こういう事もできる(応用)」「そのために(基礎概念)」を話します。

例えばajthinking/archetypeはプログラマブルな「コード書いてくれる君」です。
ソースコード生成が「スタブの文字列置換やTwigのレンダリング」に頼らず出来るようになる!
じゃあ、その内側のどこにASTがいるんだ!

応用例から「逆に入っていく」アプローチで、ASTと少し仲良くなることを目指します。

3
採択
2025/02/22 15:40〜
ルーム シンフォニー
レギュラートーク(15分)

PHPUnitを低速化する技術

takeokunn たけてぃ

概要

PHPUnitはPHPテストフレームワークのデファクトスタンダードとして長年使われており、普段PHPを書いてる方であれば目にしたことがあるツールの1つです。
プロジェクト規模が大きくなればなるほどテスト数が増加し、PHPUnitの実行時間が増え、CI待ちがボトルネックになるといったことが多々あります。
今回はPHPUnitをあの手この手で低速化する方法をお伝えすることによって、逆説的にPHPUnitの実行速度劣化を防ぐ考え方が身につきます。

このトークでお話すること

  • PHPUnit実行速度とボトルネックの計測の仕方
  • 並列化やDB I/Oが実行速度にどれくらい寄与するか
  • etc...

ターゲット

  • PHPUnitが遅いプロジェクトを担当している方
  • 現状のPHPUnitの実行速度を速めたい方
  • PHPUnit自体の仕組みを理解したい方
4
レギュラートーク(15分)

Phpactorから学ぶLanguage Server Protocolの仕組み

takeokunn たけてぃ

概要

Language Server Protocol (LSP)は、2016年にMicrosoftが発表したJSON-RPCベースのプロトコルです。
LSPはモダンなテキストエディタなら必ずある機能(e.g. 定義ジャンプ)を提供していますが、一番の魅力は特定のテキストエディタに依存しない形での実装になっていることです。
これにより各テキストエディタでの実装の必要がなくなり、エディタ選択の自由度が飛躍的に高まりました。

PHPの言語サーバ実装はintelephenceとPhpactorがメジャーです。
本登壇ではPhpactorの実装に触れつつ活用テクニックを紹介していきます。

このトークでお話すること

  • LSPの台頭とLSP前後のテキストエディタの変化
  • プロトコル解説とLSPがサポートしている機能の紹介
  • PhpactorとPHPStan拡張などの便利機能紹介
3