PHPカンファレンス福岡2023に参加しました

PHPカンファレンス福岡2023に参加してきました。久々の開催でとても楽しみにしていた。わくわくしながら会場に向かう感覚は、音楽ライブに行くような感覚に似ていて不思議な感覚。印象に残ったことをまとめる。
印象に残ったこと
DOMのテストがどんどん書きたくなる Testing Library の世界への招待
Tesing Library - GitHubを使ったUIテストの話で、
- The more your tests resemble the way your software is used, the more confidence they can give you.
- テストがソフトウェアと似ていれば似ているほど信頼性が高い
- ユーザが可能なことだけでテストする
これらの方針で設計されたライブラリ。利用者がページの要素を見つける方法と同等の方法で、DOMをクエリしてテストする。
このとき、HTMLのアクセシビリティに基づくクエリで要素を取得する。たとえばユーザはラベルテキスト「ログインID」をみて横のテキスト入力欄にテキストを入力する。同じように、labelタグのfor要素からinput要素のvalueを取るようなAPIが準備されている。壊れにくいテストになり必然的にアクセシビリティを高められる。
このブログのCIにCypressを導入しているが、テスト用のattributeを追加してテストしている。これは、Cypressのドキュメントにベストプラクティスとして「data-*」属性を追加して、この属性に依存させることでCypressのみに依存した属性になるためよいと記述されている。
Best Practices | Cypress Document
個人開発で妥協できる状況であれば問題はないと思うが、複数人で開発している場合、「data-cy」のような属性をみて意味がなさそうなので消そうとなる恐れがある。上の「ユーザが可能なことだけでテストする」に照らし合わせると、データ属性は見えず操作できないためUIテストとしてはあまり良くないと判断できる(どちらかというと壊れやすいテストになってしまう)。
Cypress向けTesting Libraryもあるようなので、組み込んで壊れにくいCIに変えてみようと思う。この発表は聞いて良かった!!壊れにくいUIテストを意識していきたい。
発表スライド『DOMのテストがどんどん書きたくなるTesting Libraryの世界への招待』

レガシー回避のPHP開発術:保守性の高いアプリケーションを作る方法 by 富所 亮
とてもおもしろかった。特に「質とスピードは両立する。それができるチームならな!」は爆笑した。
この話を聞いて、チームの壊れやすさ・強いチームを作る難しさを改めて感じつつチームがめちゃくちゃ大切であると認識できた。
「改善したいが難しいのでまた今度」みたいな行動をとってしまう。**「改善を止めようとするなら現状維持のメリットをださないといけない」**という言葉が紹介された。読めば当たり前だと感じるが気が付けないポイントだった。バイアスがかかっていないかいろいろな視点で見たり、他の意見をきちんときくなどの工夫も必要だと思った。
職能組織や横断組織を作ってもサイロ化するリスクは常にあるため、職能に閉じずに片足を別の職能などに踏み込んでもらう・踏み込ませることも必要だというのもとても納得した。いろいろと具体的なアクションが思いついたのでとても勉強になりました。感謝。紹介されていた書籍も読みたくなった。
レガシー回避のPHP開発術/avoid_php_legacy

よいプロダクト作りのための組織育成 健全なコードは健全な組織、健全なチームから
知らない理論やキーワードがたくさん出てきて、逆にわくわくしてしまった。育成というテーマだけでいろいろな理論や手法があり、適切に利用するべきなのだとよく理解できた。
ここでも「質とスピード」の話が引用されつつ、組織の成長とチームの成果のバランスの話がとても印象的だった。これらのバランスがとれていないと健全な組織になってしまうこと、チームで偏りがあっても全体でバランスがとれていればよいというのは新しい気づきだった。
改めて思うけど、ソフトウェア開発ってめちゃくちゃ難しいんだなと思った。
まとめ
久々のオフラインイベントだったが、とても楽しめた。不満が特になく流れるようにイベントが進みあっという間に終わったのは、運営が細かなところまでしっかり配慮して行動しているからこそ流れるように進んだのだと思う。とても貴重な場でしたありがとうございました。
フリースタイルLTで時間が5分だけあいているのを見て、急遽LTを自分で差し込んでしまったため、その時間の裏で「The future of tbls and “Documentation as Code」の発表があり見られなかったのがとても残念。公開されたスライドを見つつアーカイブを楽しみに待とうと思います。
イベントに参加すると、「自分はまだまだだなー」とものすごく思いつつ「がんばるぞー」という気持ちにもさせてくれる。PHPコミュニティは知り合いも多くホームのような安心感があるのだけど、僕は現状維持していたなと感じた。このままだと良くないため、JavaやKotlinなどの自分のコンフォートゾーンの外のコミュニティに飛び込んでいこうと思う。
視聴したトーク
- 【令和最新版】開発者フレンドリーなHTTP SDK作るには by うさみけんた | fortee
- DOMのテストがどんどん書きたくなる Testing Library の世界への招待 by lacolaco | fortee
- 育成力 - エンジニアの才能を引き出す環境とチューターの立ち回り - by 岡嵜 雄平 | fortee
- 脆弱性もバグ、だからテストしよう!と唱えて8年が経ちました by cakephper市川 | fortee
- レガシー回避のPHP開発術:保守性の高いアプリケーションを作る方法 by 富所 亮 | fortee
- APIシナリオテストを書くべき10の理由 by katzumi | fortee
- 良いプロダクト作りのための組織育成 健全なコードは健全な組織、健全なチームから by zoe | fortee
- ビーチ駆動開発
- どこかで見たような余興アプリとその懺悔
- FusicホールLT
- The PHP Foundation の活動を外野から勝手に(俺は 1 円ももらってないのに)早口で大紹介する by sji | fortee
- 初心者でも使いやすい!PHPUnitアノテーション活用術〜見やすいテストコードとスムーズなテスト実行のために by 曽根友希 | fortee
- ChatGPTで簡単!余興に使えるAWSサーバーレスアプリ開発入門 by 吉野雅耶 | fortee
- Laravel ShiftでLaravelのバージョンアップしてみた話 by カンボ@沖縄 | fortee
- 月に一度の大規模リファクタリングでレガシーコードと向き合う取り組み by meihei | fortee
- 推測しないで、計測し、判断する! 〜カイゼンのためのステップ考察〜 by 大橋 佑太 | fortee
- その説明、コードコメントに書く?コミットメッセージに書く?プルリクエストに書く? by おかしょい/岡田正平 | fortee
- 「MVPから作る」ってどういうこと? by 菱田裕美 | fortee
その他スライドリンク
- 育成力 - エンジニアの才能を引き出す環境とチューターの立ち回り -
- 「MVPから作る」ってどういうこと?
- 制約の力 - 状態を限定する -
- その説明、コードコメントに書く?コミットメッセージに書く? プルリクエストに書く? - #phpconfuk 2023
- 推測しないで、計測し、判断する! 〜カイゼンのためのステップ考察〜 / phpconfuk2023
- The future of tbls and “Documentation as Code” / phpconfuk 2023
- 失敗から学ぶ 技術的負債との正しい歩き方 / learn from predecessors