PHPerKaigi2025(1日目)オンライン視聴の感想

## はじめに
今年もPHPerKaigiの時期になりました。
オンライン視聴するライトユーザーですが、毎年楽しみにしております。
2025年のPHPerKaigiはオンライン視聴できたので、レポートしていこうと思います。

## 対象者
この記事は下記のような人を対象にしています。

- PHPerKaigi2025に参加したいが出来なかった方
- アーカイブ動画を見たいが、どれから見るか迷ってる方

:::note warn
・あくまで個人のメモのため、実際の内容と異なる場合があります
・興味のある部分のみメモしており、網羅的でない点、ご了承ください
:::

## [安全に倒し切るリリースをするために：15年来レガシーシステムのフルリプレイス挑戦記 by さくらい](https://fortee.jp/phperkaigi-2025/proposal/ec424260-60aa-40d3-bcc3-d7b4562b4b47)
- チームオリジナルの検証手法「ペンギンテスト」
    - ユーザー影響なしで本番でテストする方法
    - 旧ロジックと新ロジックを同時実行
    - 結果を比較して、差分が出たらログ出力
    - 結果は旧ロジックを必ず採用(=ユーザー影響がない)
    - 新ロジックはFATALが発生してもログ出力のみで握りつぶす(=サービスを止めない)
    - 2倍処理するので、CPUやメモリに負荷がかかる→実施率・稼働時間を限定する
- シャドーテスト
- カナリアリリース
- ダークローンチ
- フォールトマスキング

## [生成AIと読み解くLaravelの進化史：コミットメッセージからの洞察 by 坂尻 愛明](https://fortee.jp/phperkaigi-2025/proposal/66c4fd58-999f-41b7-993a-cc5633cece0e)
- GeminiとChatGPTを利用
- 2.0~ IoCコンテナ、Facade、Blade
- 3.0~ Artisanコマンド
- 4.0~ Composer
- 5.0~ ミドルウェア、フォームリクエスト

## [PHPStan七転八倒 by うさみけんた](https://fortee.jp/phperkaigi-2025/proposal/33f7eb3f-6320-4167-9623-b38602e4b334)
- PHPStan自体もPHPで書かれている
- 技術力アップのためにOSSライブラリのソースコード読んでみるのもありだと感じた


## [私の愛したLaravel 〜レールを越えたその先へ〜 by 武田 憲太郎](https://fortee.jp/phperkaigi-2025/proposal/3ff0f775-9601-4bf6-a1cf-9911b11787b3)
- 「Laravelらしいコードを書くために、フレームワークを拡張する」という発想が新鮮

## [大規模ふるさと納税サイトをPHP8化した時の苦労話 by 瀬尾 一矢](https://fortee.jp/phperkaigi-2025/proposal/6b95c65f-fca6-4c8d-925a-a018231e07e4)
- 弊社の発表。瀬尾さんお疲れ様でした。
- 自社プロジェクトが外部発表されるのを聞く体験が初めてだったので刺激的でした！

## [移行できそうでやりきれなかった 10年超えのシステムを葬るための戦略 by ryu](https://fortee.jp/phperkaigi-2025/proposal/0b6a029d-27d6-49c7-965e-beef885c0294)
- システムが複雑化していく過程の説明がリアルでした
- 結局、気合と対話か...
- 最悪、画面ごとにI/Oがわかっていれば、既存コードを理解しなくても良い？
- デバッグ環境(OpenTelemetryとJaeger)

## [プロダクトコードとOSSに学ぶ例外処理の選択肢 — キャッチするのか、投げっぱなしにするのか by asumikam](https://fortee.jp/phperkaigi-2025/proposal/982d13a2-7840-4c9b-9ad9-3bade3e25606)
- OSSを読み解いて勉強する手法が秀逸
- 技術的例外：技術者がなげるものではない（投げっぱなしでOK）
- ビジネス例外：try-catchでキャッチする
- 例：Guzzle
    - curl_exec()より前の例外：LogicExceptio→投げっぱなし
    - curl_exec()より後の例外：RuntimeException
        - 想定内：catchする
        - 想定外：投げっぱなし
- 例：Slim
    - RuntimeException
        - 投げっぱなしにしても、フレームワークが最終的にcatchしてくれる
        - 無駄にcatchする必要はなく、フレームワークに任せるのも良い
- 例：PHPUnit
    - assertionの結果＝ビジネス例外(想定内の失敗)と扱っている

## [ソフトウェア開発におけるインターフェイスという考え方 by 小山健一郎](https://fortee.jp/phperkaigi-2025/proposal/69a88fbb-8796-4574-98af-f79e1ab3bca2)
- インターフェースは体験に通じる(わかりやすい、使いやすい)
- インターフェースは契約
    - PHPとGoでは使い方が真逆
- インターフェースには相互作用がある(あれば使われてしまう)

## [リファクタリングでもPHPStan！？ Rectorと組み合わせてかっこいいリファクタリングしようぜ！ by まるすけ](https://fortee.jp/phperkaigi-2025/proposal/210076ce-b2ca-472d-a412-c74b7bdb3285)
- Rector：独自のルールに基づいてリファクタしてくれる
- PHPStanをコード上で利用可能にする

## [英語文法から学ぶ、クリーンな設計の秘訣 by NobleNomad](https://fortee.jp/phperkaigi-2025/proposal/b9e7bee5-795f-45f2-b147-b1ea79b5677b)
- SVO・SVOCなど基礎的な英語文法がどのようにコード設計に応用できるか
- Class名：S（凝集性が高まり、保守性が高まる）
- function名：V（関心の分離）
- 引数名：O
- 目から鱗の概念、超絶わかりやすくて感動

## [バックエンドエンジニアによるフロントエンドテスト拡充の具体的手法 by きのすけ](https://fortee.jp/phperkaigi-2025/proposal/45edfee0-50d6-4f79-b93b-d3b444e4c795)
- vitestとtesting-library
- Cursor(生成AI支援コードエディタ)
    - テストコードの生成
    - コードレビュー
    - 最後に人間のレビュー

## おわりに
カンファレンスは楽しい！
また来年も参加しようっと。



## 参考記事
[PHPerKaigi2025](https://phperkaigi.jp/2025/)