ワークショップセッション(100分)

PSR-20 Clockを使ってみよう

77web 菱田裕美

PSR(PHP Standards Recommendations, PHP標準としての推奨)として提案されて"Accepted"受け入れられた中で最も新しいものがPSR-20 Clockです。
皆さんはコードを書くときにClockを使ったことがありますか?
Clockは日付や時刻を扱うアプリケーションを書くにはとっても便利です。
ご提供するサンプルアプリケーションを実際にリファクタしてもらいながら、Clockを使って日時を扱うアプリケーションを書く便利さを体験してもらうハンズオンです。

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

TDD、テスト以前について~リーダブルコード再考~

ザキ89

なかなか修正が捗らないレガシーなコードがどのサービスには多かれ少なかれ存在すると思います。
そうしたサービスに対して真正面からテストの導入をするにできるかというと実際の現場においては難しい面があると私は感じています。
TDDやテストファーストは、これからのサービスを長く使い続けられる環境を整えるためには素晴らしい設計思想です。
そうした思想を取り入れるにあたり、現状のコードを改善するにあたり、少なくとも1歩でも前に進めるためにできることについて話をいたします。

・日本語のコメントは優秀(しかし時に牙をむいてくる)
・図を描く(UMLであれ、ユーザーストーリーであれ)
・コードに意味のまとまりを持たせる
・ユビキタス言語で語ろう

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

実演!CSVダウンロードパフォーマンス改善

takaaki_w しみたか

本セッションでは、CSVファイルのダウンロード速度が遅すぎて切り戻しになった知見をもとに、Laravelアプリケーションのパフォーマンス改善のデモンストレーションを行います。
「頑張って作ったのに遅すぎて使ってもらえない」では悲しすぎるので、ご参考にしていただけますと幸いです。

以下のテーマに沿ってデモをしていく予定です。
・ しくじり談
・ DBからのデータ取得時に気をつけること
・ 取得したデータを加工するときに気をつけること
・ 加工したデータを出力するときに気をつけること

キーワード
・ Eloquentとクエリビルダ
・ N+1問題
・ メモリ
・ ジェネレータ

想定視聴者
パフォーマンスを意識したコードを書ける・レビューができるようになりたい方

4
レギュラートーク(25分)

PHPUnitを低速化する技術

takeokunn たけてぃ

概要

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

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

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

ターゲット

  • PHPUnitが遅いプロジェクトを担当している方
  • 現状のPHPUnitの実行速度を速めたい方
  • PHPUnit自体の仕組みを理解したい方
2
LT(5分)

不要コードを消す技術

77web 菱田裕美

あなたのプロジェクトの不要コード、消せてますか?
ある程度の期間、保守しながら運用を重ねていると不要になるコードが出てきます。不要コードをいつまでも残していると、コードベースが時とともに肥大化したり、アタックの糸口になったり危険がいっぱいです。

  • どこからもリンクされてないページ
  • どこからも呼び出されていないメソッド、関数
  • どこからも参照されていないクラス、定数
  • フロントエンドやクライアントアプリから呼ばれなくなったAPIエンドポイント
  • APIドキュメントに載っておらず誰も呼び出していないserver to server API

これらの不要になったコードをどうやって見つけて、削除していますか?
使われていないコードを見つけ、消したいコードが確実にどこからも使われていないことを確認して、安全に削除するテクニックについてライトニングにお話しします。

6
レギュラートーク(50分)

APIドキュメントとコードの2重管理から開放するeg-r2のご紹介

katzchum katzumi

RESTful APIの仕様を記述するためのフォーマットとしてOpenAPIは、多くの企業やプロジェクトで採用されており、エコシステムも充実しています。しかし、OpenAPIでAPIドキュメントをまとめる際には、エコシステムが充実しすぎていて、どのように書くべきか悩むことがあります。

  • OpenAPIのフォーマットをサポートしたエディタを使う?
  • APIドキュメントからコードを生成する?
  • 逆にコードからAPIドキュメントを生成する?

など。
これらの悩みの本質は、継続的なドキュメントのメンテナンスをどうするかという点にあります。言い換えると、APIドキュメントとコードの乖離を如何に防ぐかという問題です。
この問題を解決する、ライブラリeg-r2を紹介します。
eg-r2は、APIドキュメントとコードの乖離を防ぐための新しいアプローチを提供し、従来の自動化の問題を改善しています。

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

さよなら 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 がどういうものか知りたい人
レギュラートーク(25分)

「常に最新版のPHPでテストされている」を実現する持続可能な自動テスト戦略

NakMeKtt 仲見川

近頃ではCI上でPHPUnit等を用いたテストが自動的に実行される環境も多くなっているかと思います。
同時に、PHPやLaravelなどフレームワークの開発も盛んに行われており、従来のLTS版で3〜5年使うというサイクルから最新バージョンへの迅速な追従が求められるようになってきました。

CI環境でPHPの最新バージョンリリースを自動検知し、自プロジェクト用のDockerイメージのビルドからテスト実行までを自動化していきます。

バージョンアップに向けた準備を自動で進める事でバージョンアップのハードルを下げましょう。

技術スタック

  • Docker
  • GitHub Actions
  • Google Cloud Artifact Registry

こんな方にお勧め

  • PHPのバージョンアップに課題を感じている方
  • 新しいPHPバージョンでのテストを効率的にしたい方
4
レギュラートーク(25分)

仕事を終わらせる技術

onigra_ onigra

仕事は油断すると、いつまでもそこに残り続け、意義が忘れ去られ、誰がボールを持っているのか、何をもって完了とするのかが時々わからなくなります。

あなたのチームのタスクボードに、何日も動いてないチケットはありませんか?
そのチケットはヌルッと翌週に持ち越され、それに誰も疑問を抱かない状態が続いていませんか?
スプリントの期間内に終わらないと、もっと早く気づけた可能性はありませんか?

仕事は終わらせる意思を持たないと終わりません。
本トークでは、私がソフトウェア開発に携わる中で得た、仕事を終わらせるために必要な考え方や、対策についてお話します。

話すこと

  • 仕事を終わらせるパワーについて
  • 仕事を終わらせるための基本的な考え方
  • 仕事が終わらない兆候を察知するコツ
  • 察知した際に取れるアクション

話さないこと

  • PHPに関する話
2
レギュラートーク(25分)

1年目の私に伝えたい!テストコードを怖がらなくなるためのヒント

push_gawa プッシュ

テストコードを書くのって、最初はハードルが高いですよね?
私も最初はまったく書けずに悩みました。しかし、今では少しずつ書けるようになり、テストのタスクを自ら進んで取りに行くまでになりました。

この発表では、PHPUnitを初めて触れた時の挫折から、業務を通じて学んだこと、そしてどのように成長していったかをジュニアエンジニアの視点でお話しします。また、テストを書くことが私の開発プロセスにどのような変化をもたらしたのかについても共有します。

話すこと:

  • 初めてテストコードを書いた際の失敗と学び
  • テストを書くために必要な考え方や技術を習得したプロセス
  • 業務経験から得れることができたこと
  • テストを書くことで開発がどのように変化したか

対象者:

  • これから自動テストを学ぶ方
  • テストを書くことに苦手意識を持っている方
6
LT(5分)

PhpStormくん推しのわたしがPhpStormくんのかわいいさについて超語ります!!

kotomin_m ことみん

あれ気付いちゃいましたか?
PHPerの皆さんがとっても仲良しのIDE、PhpStormくんのかわいさ(便利さ)に。

あ、まだ気づいてない(知らない)んですね!
じゃあこのLTを聞いてPhpStormくんを布教されてください!!
わたしの推しのPhpStormくんの超かわいいところ(超便利な機能)を時間が許す限り詰め込んで紹介します!!

例えば、私の推しポイントはこんな感じだよ!!

  • コード書いててヤバそうなところあったら教えてくれるとこ超優しい🫶
  • 一発でメソッド抽出したり、簡単にリファクタリングが出来るところ超かわいい🫶
  • ファイルの外部で定義されている PHP クラスを参照すると自動で保管してくれて超カッコいい🫶

このLTで新たなPhpStormくんの推しポイントに気がつくきっかけになれば嬉しいです!
かわいいのはアイコンのカラーだけじゃないんだからねっ!!><

9
LT(5分)

リモートネイティブが伝えるテキストコミュニケーションの極意

kotomin_m ことみん

リモートワークが日常となった現代、テキストコミュニケーションの重要性に気づいている人はどれほどいるでしょうか?
新卒入社からずっとリモート下で働くリモートネイティブとして、私が学んだテキストコミュニケーションの重要さや、明日からすぐ使えるTipsをお伝えします!

見どころ

「先輩にどう質問する?」「ビジネス側のやり取りはどう進める?」などシーンに応じて、伝わりにくい文章の例をどう改善するか解説!
絵文字「👍」や感嘆符「!」など細かな表現まで、日々のテキストコミュニケーションで意識しているポイントをたくさん解説!

このLTが参考になる人

  • 社会人経験が浅い新卒エンジニア
  • 長文を送って「何言いたいか分からない」「もう少し短くして」と言われたことがある人
  • 日々のコミュニケーションで周りの人にもっと意識して欲しいんだよな〜と思っている人
8
LT(5分)

エラー発生時に冷静に対処している先輩は何を考えているのか

kotomin_m ことみん

不具合や障害発生時にSlackなどでエラー通知を受け取ることはありますよね。
そのとき、即座に何をすべきか具体的な対応方法をイメージ出来ますか?
エラー発生時の対応は、迅速かつ効率的でなければ、小さな問題が大きな障害に発展することも……!!

そこで、私がエラー通知を受け取ったときの初動〜対応完了までに「何を考えて」「どのように対応しているのか」をお伝えします!
このLTを聞けば、「エラー通知来ないでほしい」と願っている皆さんも、通知が来ても慌てることなく、冷静に対応できるようになっているはずです!

このLTを聞いて欲しい人

  • 「エラー通知が来たら何をしますか?」に即回答出来ない人
  • エラー通知は先輩がなんとかしてくれると思っている人
  • 新卒PHPer、新卒PHPerがチームに加わった先輩エンジニア
7
レギュラートーク(25分)

安心安全にPHP/Laravelをバージョンアップしたい人必見!静的解析ツールを活用しよう!

kotomin_m ことみん

静的解析ツールは「ここが良くないから、こういうふうに直すといいよ」と教えてくれる便利ツールです。
開発環境やCIで導入している方も多いのではないでしょうか?

私が開発するプロダクトにも導入されていましたが、PHPのバージョンアップに取り組んで初めて「静的解析を導入するとってこんなに嬉しいのか!」と感動しました。

このトークでは、初心者〜中級者向けに、安心安全なバージョンアップという観点に絞って、静的解析のスゴいところや使いどころを紹介します!
これからバージョンアップをする人はもちろん、コードの品質を高めたい方にとっても役立つ内容です!

話すこと

  • 静的解析ツールの紹介(PHPStan、PHPCS、PHPMD)
  • 静的解析ツールをCIに組み込む重要性
  • バージョンアップするときのメリット
  • よくあるエラーとその対処法
9
LT(5分)

テストやOSS開発に役立つSetup PHP Action

matsuo_atsushi 松尾篤

テストに必要なPHP環境を設定できるGitHub ActionsのアクションであるSetup PHP Actionは、PHPの各バージョンに対応しているだけでなく、さまざまな拡張モジュールやツールを活用することができます。さらに、マルチプラットフォームに対応しており、LinuxだけでなくWindowsやmacOS上で手軽にテストを実行させることもできます。このLTでは、テストやOSSのコントリビュートにも役立つ、Setup PHP Actionの使い方を解説します。

3
LT(5分)

VarDumperの中身を追いかけてみる

9rokirishima くろきり

LaravelやSymfonyで開発を行う際、デバッグ時にdd()やddd()を使います。
様々なオブジェクトをいれても表示してくれるし、ブラウザアクセスやコマンドなど実行形式に応じて表示もよしなに変えてくれるなんで便利ですよね!
ddそのものは各FW側のヘルパ関数として作られていますが、中身を見ると共通してSymfonyComponentであるVarDumper::dumpが呼ばれています。
このトークでは各FWで使われているsymfony/var-dumperライブラリの中身がどのような作りになっているかを追いかけます。

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

Laravelのログの仕組みを理解する

9rokirishima くろきり

私たち開発者にとってログは非常に重要です。
開発時のデバッグやローンチ後の障害解析など、ログを出力していることで救われたシーンは多かれ少なかれあるのではないでしょうか?

そんな私たちを助けてくれるログですが、Laravelでは様々な設定やカスタマイズが可能です。
しかしどのような設定ができるのか理解するところまで手が回らず、デフォルトのまま運用してそのままという悲しいシーンを見ることも多々あります。

このトークでは実際にログ出力する際にLaravelのLogManagerがどのような処理を行なってログを出力するのか、各設定の詳細、Laravel10より追加されているLaravelPailを用いたログの限定出力のやり方等をお話ししますので、今後のログ運用の助けになれば幸いです!

2
LT(5分)

PSRの公式ページの説明を読みながらインターフェースの実装例を見てみよう

ryo23526217 高谷 遼

PSRはPHP Standards Recommendationsの略でコーディングスタイルやオートローディングの規格、インターフェースなどのPHPに関する勧告を出しています。
PSRは必ず勧告に従わなければいけないなどの強制力はありませんが昨今ではPHPのフレームワークやライブラリでPSRで策定されたインターフェースが数多く取り入れられていてこのインターフェースに倣ってメソッドを呼んでいる方も多いのではないでしょうか。

HTTPに関するインターフェースは多数策定されていますが、その中のどれか一つを選んで公式の説明と共にそのインターフェースを実装しているライブラリの実装例を見ながら解説して理解を深めていきたいと思います。

LT(5分)

スクラッチ開発のススメ

ryo23526217 高谷 遼

ここで言うスクラッチ開発はフレームワーク(&ライブラリ)を使わずにシステムを開発する事を指す事にします。

フレームワークはセキュリティやセッション管理などなど色々な事をよしなにこなしてくれたり、細かい実装は隠蔽されてインターフェースの使い方さえ分かれば誰にでも一定のレベルで使える開発生産性をあげてくれる素晴らしい道具です。
ですが素のPHPだけでシステムを開発する事でPHPそのものやフレームワークを使った開発もより理解が深まりエンジニアとしてのレベルもアップすると思います。

今回はスクラッチ開発でWEBシステムを開発する事によってどのような学びがあるかを話します。

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

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

inu_shunta いちかわしゅんた

Laravel eloquentを使ったRDS上での検索クエリは、テーブル間のJOINやクエリの複雑さが検索パフォーマンスに悪影響を与えていました。特に、利用頻度の高いクエリがレイテンシー低下の主因となり、その改善を目指してOpenSearchを導入しました。

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

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

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