PHPerKaigi 2022 トーク一覧

採択 スポンサーセッション 2022/04/11 15:30〜 Track A スポンサーセッション(20分)

ネクストエンジンの裏側 〜 "秘伝のタレ"とどう向き合っているのか

takamasa uno

弊社のプロダクトの1つ「NEXT ENGINE」。10年以上運営しているので、冗長なコード・誰が管理しているのかわからない箇所など、いわゆる"秘伝のタレ"と呼ばれているものが数多くあります。
そこで現在弊社ではこれらに対してどう向き合っているのかご紹介いたします。

採択 スポンサーセッション 2022/04/11 15:30〜 Track B スポンサーセッション(20分)

PHPとゆかいな「型」たち

株式会社ユニラボ システム部 石揚 千洋

PHPは動的型付け言語で型推論してくれますが、きちんと「型」があります。
昔のPHPでの開発は「型」をあまり意識せずプログラムすることが多かったのですが、
最近では保守性や堅牢性を重視するために、この点を意識して作ることが多くなっています。
今回のセッションでは、PHPの「型」の種類や使い方、メリットデメリットや実践について、わかりやすくお話しします。

9
採択 2022/04/11 16:05〜 Track B レギュラートーク(40分)

PSR-7とPSR-15によるWebアプリケーション実装パターン

tadsan うさみけんた tadsan

PSR-7がPHPにおけるHTTPの標準的なインターフェイスとして採択されて久しく、それに対応するHTTPハンドラ/ミドルウェアの仕様であるPSR-15を使えば特定のフレームワークに依存せずWebアプリケーションを実装できます。ピクシブ百科事典はPSR-7/PSR-18ベースのWebアプリケーションで実装されており、このトークではその経験を踏まえたアプリケーション実装パターンについて紹介します。

この発表ではPSRで学ぶHTTP Webアプリケーションの実践などで説明しているHTTPとPSR-7の関係について知っていることを前提に、よりアプリケーション実装やユニットテストなどの実践にフォーカスして説明します。

採択 2022/04/11 16:10〜 Track A レギュラートーク(40分)

PHPerKaigi2022全トーク見た人による、30分で全トーク見た気になれる(?)まとめ感想動画

uzulla uzulla uzulla

PHPerKaigi2022は事前録画方式でした。それら動画を全チェックするパーソンによる、独断と偏見と主観によってまとめられた全トークの感想についてつらつらと語る動画です。

全部のトークを見きれないよ…という人、ぜひこのトークで全トークをキャッチアップし、タイムシフト再生など後日視聴の参考にしてください!

※動画内でも語っていますが、深夜のホテルで疲れたそして謎のテンションで一気に作成していますので、一部不明瞭、読み上げのミスがあります。ご容赦ください :bow: :bow: :bow:

4
採択 2022/04/11 17:00〜 Track A LT(5分)

PHPコンテナのマルチステージビルドとキャッシュ戦略

na_it_o くすのき na_it_o

さくさく開発を進めるにあたってコンテナイメージのビルドには時間をかけたくありません。
typoをなおしただけなのにvendorのインストールを待っている時間はじれったいです。

キャッシュを使って時間短縮しつつ、完成物は小さくまとめる方法を考えます。
時間があれば、継続的アップデートやLambdaで動かすPHPコンテナへの適用についても触れます。

採択 2022/04/11 17:05〜 Track A LT(5分)

気づいた時にリファクタしよう!Laravelのデータベースクエリを最適化するTips

AkitoTsukahara AkitoTsukahara AkitoTsukahara

みなさんはパフォーマンス改善のためにアプリケーションの最適化に取り組んだことがありますでしょうか?
何もデータベース構造を再構築したりと大規模な改修することだけが最適化ではありません。機能実装のついでに関連処理をリファクタリングしてあげるだけでも十分な最適化になります。

このトークでは気づいた時にちょっとリファクタできる程度のデータベースクエリの最適化Tipsを解説いたします。
5分間で可能な限り詰め込んでお届けします!

こんな方におすすめ

  • 業務でLaravelを利用されている方
  • 日頃からパフォーマンスを意識した実装をしたい人
採択 2022/04/11 17:10〜 Track A LT(5分)

レガシーなPHPで、無理やりsetAccessibleする方法

巻嶋 雄大

レガシーバージョンのPHPから、最新バージョンのPHPへ移行したい方へ

PHP5.3.2より前のバージョンのPHPだと、setAccesibleが使えません。
そのため、private, protectedなメソッド、プロパティをテストしたいときは、本体をpublicにするしかありませんでした。

「setAccesibleを使いたいからPHPのバージョンアップをしたい」でも「PHPのバージョンアップをするためにはsetAccesbleを使ってユニットテストを書かないと行けない」というジレンマにずっと苦しんでおりました。

しかし、今回runkitを使うことで、PHP5.3.2より前のバージョンのPHPでも、非公開なメソッドのテストをすることができるようになる方法を考案しました!

これを導入すれば、テストコードの実装がどんどん進みますよ!

4
採択 2022/04/11 17:15〜 Track A LT(5分)

PHPの緩やかな比較の実態

fyui_001 ゆい fyui_001

みなさんよくご存知の通り、PHPには等価演算子が2つあります。
「==」と「===」です。
前者は緩やかな比較、後者は厳密な比較が行われます。
PHPやJavaScriptに馴染みのある方ならよくご存知だと思います。

言語問わずよく使う演算子の1つである等価演算子ですが、実際の言語仕様は知っていても
内部の実装は知らないなんてことはよくあると思います。

今回はみんな嫌いな緩やかな比較の実装がどこにあるのか、そしてどんな実装がされているのかをお話しようと思います。

採択 2022/04/11 17:20〜 Track A LT(5分)

【Laravel】サクッとN + 1問題を見つけて倒しチャオ!

820zacky つざき 820zacky

N + 1問題とは、ループ処理の中で都度SQLを実行してしまうことで必要以上にSQLが発行されてしまい処理が遅くなってしまう問題です。
N + 1問題が存在していても、ユーザーに影響のない程度の処理時間なら改修する必要はありません。
しかしながら、データ量が増えたりページへのアクセスが増えることで後から問題になってしまうこともあります。
今回は、そんなN + 1問題をサクッと検出して、問題が発生する前にN + 1問題を撲滅する方法をご紹介します。

採択 2022/04/11 17:45〜 Track A LT(5分)

Attributesを使ったメタプログラミング入門!

okashoi おかしょい / 岡田 正平 okashoi

PHP8.0から追加された機能、Attributes。
これを使ったメタプログラミングの例として、クラスのプロパティにAttributesを付与することで

・データベース(PDO)から取得したデータをクラスのインスタンスに変換する
・JSON文字列をクラスのインスタンスに変換する(あるいはその逆)

といった処理が自動で出来上がるプログラムの解説をします。

採択 2022/04/11 17:50〜 Track A LT(5分)

どんとこい、PhpStorm 〜Why don't you do IDE's best!〜

YKanoh65 加納悠史 YKanoh65

PhpStorm 使っていますか?
ご存知の通り、PhpStorm は、開発を効率的に進めるための機能がたくさん搭載されており、PhpStorm を使いこなして開発を進めている人の作業を見ると、素早いコーディングに驚かされると共に、自分も同じように PhpStorm を使い倒したいと憧れます。
しかし、一方でいざテクニックを覚えようとしても、何から覚えていけばいいかとっかかりがわからず、結局自身の知っている範囲でのショートカットやテクニックのみを利用してしまうといったことはないでしょうか?
このセッションでは日常の業務で使えそうで、手をつけやすい PhpStorm のテクニックを段階ごとにまるっと解説し、少しずつ PhpStorm エキスパートに近づくことを目指します。

採択 2022/04/11 17:55〜 Track A LT(5分)

GitHub Actions使っていますか?では、cs2prも一緒にいかがですか?

o0h_ きんじょうひでき o0h_

Pull Request(PR)ベースでCIを回している時に、「ここのコードがおかしいよ!」と分かりやすく指摘が入るのは、飛躍的に開発者体験をよくしますよね。
cs2prは、そんな良い体験をサクッと提供してくれるツールです。
GitHub Checks APIを用いて、PRの該当箇所上に指摘内容を表示してくれます。
(Reviewdogなどを利用している方にはイメージしやすいかも知れません。)

PHPCS、PHP-CS-Fixer、PHPStan、Psalm 辺りにはもちろん標準で対応しています!
ちょっと手間を加えれば、PHPUnitでも同様に「結果をPR上に出す」ことが可能になります。

どんな事をしてくれるのか?どうやって使うのか?を紹介します!

採択 2022/04/11 18:00〜 Track A LT(5分)

テストコードの DRY と DAMP

_heartyfluid 加賀田 裕介 _heartyfluid

コーディングの中でいわゆる「共通化」について考えるとき、プロダクトコードとテストコードではやや違う観点が必要になるようです。テストコードを書き始めて間もない現場には「プロダクトコードは書き慣れているがテストコードには不慣れ」なメンバーが多く、レビュー時などにこの勘所をうまく説明できず困ることが時折ありました。

最近、DRY (Don't Repeat Yourself) 原則と対になる DAMP (Descriptive and Meaningful Phrases) 原則という概念に触れたことで、この状況を腑分けし言語化できるようになってきました。DRY と DAMP について最近考えていることをお話ししたいと思います。

採択 2022/04/11 18:05〜 Track A LT(5分)

PHPでWebサーバーを作って高速化に挑戦する!

hanhan1978 富所 亮 hanhan1978

高速化が進み、JITコンパイラも導入されたPHPですが、残念ながら高速なスループットを求められる現場においては他のコンパイル型言語が選ばれることが多いようです。
最近では、ISUCONにPHPで挑戦するものも少なくなりました。しかし、だからこそ!PHPでウェブサーバーを書いて、色んな言語に速度で挑戦してみましょう!

14