RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

PHPerKaigi 2024【参加レポート】

はじめに

メールディーラー開発課のyamamuuuです。

2024/03/7(木) ~ 03/9(土)の3日間に渡ってPHPerKaigi 2024が開催されました。
今回もオンライン・オフライン両方のハイブリッド開催でした。

phperkaigi.jp

ラクスはシルバースポンサーとして協賛し、3名が登壇した他、数名のメンバーが参加しました。
今回はラクスからの登壇者本人と参加者によるレポートを紹介させていただきます。

参加レポート

php-src debug マニュアル

report by id:dd_fortran
おのぽんさん(@onopon_engineer)による発表です

speakerdeck.com

PHP本体のソースコードであるphp-srcのデバッグ方法について話されていました。
PHPデバッグ環境の構築は少しハードルがありますが丁寧に解説されていたので、試したことがない人でも参考になると思います。
デバッグした内容がechoだったこともあり、Opcodeの話をされており少し初学者には難しい内容だったかと思いました。
デバッグしたことがある人がさらに1歩理解を進めようと思っている方にはおすすめです! もし、初めてデバッグしてみようと考えている方はvar_dumpなどの標準関数で試してみるのがよいと思います。

10年モノのレガシーPHPアプリケーションを移植しきるまでの泥臭くも長い軌跡

report by : id:rakuinoue
toshimaruさん(@toshimaru_e)による発表です

speakerdeck.com

レガシーなPHPアプリケーションをRailsアプリへ移植を進めていく中での課題や解決方法、実際に行われた事などをお話されていました。
レガシーなアプリケーションの技術的負債をどのように解消するかの方法はいくつかありますが、 それぞれの手法について課題やメリットなどを整理し、フィットする手法を見定め実践されたことが説明されていたので、非常に参考になりました。
各チームともいろいろな調整や決定事項をさだめて移植を完了させていくステップはリーダー的ポジションの人などには有益なお話だったと思います。

ウキウキ手作りミニマリストPHP

report by : id:hirobex
uzullaさん(@uzulla)による発表です

speakerdeck.com

PHPを自分でビルドしたことがある人は少ないのではないでしょうか?
Dockerやapt-get、brewでインストールする人が多いと思います。
そんな人こそ、このトークを見て自前でビルドしたPHPと、自動でインストールされるPHPに、どのように違いがあるのか知ってみましょう!

Laravel OpenAPIによる "辛くない" スキーマ駆動開発

report by id:takaram
武田 憲太郎さん (@KentarouTakeda)による発表です。

speakerdeck.com

WebアプリのフロントエンドをReactなどで作ることが一般的になり、バックエンドでAPIを作るケースは増えていると思います。この場合、フロントエンドとバックエンドのエンジニア間でAPIの仕様を定めて開発を行う必要がありますが、Excelで作ったような従来の仕様書を使う開発では様々な課題があります。

そこで、APIの仕様を記述するフォーマットであるOpenAPI、およびOpenAPIの周辺ツールを上手く利用することで、スピードと品質を両立した開発を行うことができる、ということを紹介してくださいました。

ちょうど個人的にOpenAPIが気になっていたので、ぜひ活用してみたいと思えるセッションでした! 余談ですが、「"仕様"という抽象に実装を依存させる」ことを依存関係逆転の原則になぞらえて説明されていたのが分かりやすく目から鱗でした。

こんな静的解析導入は負けフラグ

report by : id:hirobex
うさみけんた さん(@tadsan)による発表です

fortee.jp

PHPStanを導入するにあたり、どのようなバッドノウハウがあるかを教えていただけるトークです。
実際にPHPStanを導入している人や、これからPHPStanを導入しようと考えている人にオススメです!

帰ってきた「完成度低いの歓迎LT大会」(PHPerKaigi出張版)

report by id:dd_fortran
すぎやまさん (@oogFranz) による発表です

note.com

サイボウズのGaroon開発チームでは「完成度低いの歓迎LT大会」を開催しているといった内容で、実際に3人の方がLTで登壇されていました。
登壇のハードルを下げるために実施しており、登壇経験が少ないメンバーでも参加しやすい取り組みいいなと思いました。 弊社でもビアバッシュが定期的に開催されていますが、発表のクオリティが高くて発表しづらいといった声もあるので導入してみたいと思いました!

WebAssembly を理解する 〜VM の作成を通して〜

report by id:dd_fortran
nsfisisさん(@nsfisis)による発表です

blog.nsfisis.dev

WebAssembly(Wasm)を実行するVMPHP で作成され、その作成方法の概略についての内容でした。
Wasmに興味がある方(特にPHPerでもある方)にはとても興味深い内容でした。
どのように処理を作っていけばいいかやWasmの仕様書の読み進め方などについて話されており、とても参考になりました。
私も時間を作ってWasmを触ってみようと思いました!

PHPでサーバーモデルについて考えた話

report by : id:hirobex
sadnessOjisanさん(@sadnessOjisan)による発表です

speakerdeck.com

当初とは若干トークタイトルが変わっており「サーバーとは何かを理解して、コンテナ1つで実行しよう」というタイトルになっています。
皆さんが本番環境でPHPを”動かす"ときって、どうしていますか?
基本的には、ApacheやNginx経由でPHPファイルを呼び出していると思います。
ビルトインサーバーという手もありますが、本番環境では推奨されていません。
最近ではDockerを利用することも多いと思いますが、PHPApacheが入ったDockerコンテナは、1プロセス1コンテナの原則を破っています。
なぜPHPがこのような動かし方になっているのか、どうすれば理想のDockerを作れるのか。
その答えが、このトークにあります。

PHP8の機能を使って堅牢にコードを書く

report by id:dd_fortran
Endo Futoshi さん(@Fendo181)による発表です

speakerdeck.com

PHP8以降の新機能を使って、堅牢なコードを書くためのテクニックを話されていました。
読み取り専用クラス(Readonly Classes)や 列挙型(enum)を使って、コードを堅牢にする方法を紹介していました。
PHP8以降の新機能を利用したことがない方でも理解しやすい内容だったので初学者にもおすすめです!

「わたしたちのコード」を安定させるためにフレームワークとの距離を保つ

report by id:takaram
大橋 佑太さん (@blue_goheimochi) による発表です。

speakerdeck.com

Laravelなどのフレームワークには、多くの便利な機能が用意されていて、それらを使いこなすことで迅速な実装が可能になります。
しかし、依存しすぎてしまうとフレームワーク側の仕様変更の影響をもろに受けてしまい、対応が辛くなるという諸刃の剣でもあります。

そのため、自分の実装するビジネスロジックフレームワークを利用するロジックとを分離し、「フレームワークと適切な距離を保つ」ことが大事であると説明されていました。

処理を分けていたことで実際にメリットがあったという実例も紹介されており、今後のクラス設計などで意識したいと感じることができました。

PHP 8.3で追加されたjson_validate()を徹底的に深掘りしてみよう

report by id:dd_fortran
柚口 ましろうさん(@yu_mashirou)による発表です

speakerdeck.com

PHP8.3で追加されたjson_validate()について、その使い方や実装の仕組みについて解説されていました。 json_decode()があるから不要なのでは?と思っている方はぜひ見てみてください。

B+木入門:PHPで理解するデータベースインデックスの仕組み

report by : Y-Kanoh
富所亮 さん(hanhan1978)による発表です

speakerdeck.com

普段は自分の業務周辺知識に関する発表をを中心に聴いて回るのですが、今回はまったく知らない領域の発表も聴いてみようと思い参加しました。

名前ぐらいしか聞いたことがないものですが、そもそも"データ構造"であることから、どのようにデータが追加され追われていくのかまで優しく説明されていました。 すごくわかりやすい解説で、知識の世界を広げることができました。

PHP 本体のバグを見つけたら適切に報告しよう

report by id:dd_fortran
工藤 剛さん(@zeriyoshi)による発表です

speakerdeck.com

PHPでバグを見つけたときに詳細なログやスタックトレースを出力する方法を紹介していました。
PHP本体の詳細なログを出力する方法は知らなかったのでとても参考になりました。
バグを見つけた際には詳細なログを出せるように試しておこうと思いました。

Webアプリケーションの効率を再定義するBEAR.Sundayの分散キャッシングフレームワーク

report by : id:hirobex
郡山 昭仁さん(@koriym)による発表です

speakerdeck.com

そもそもキャッシュとは何なのか。
なぜキャッシュを利用するのか。
キャッシュの難しさとは何なのか。
理想のキャッシュとは?
を語った上で、BEAR.Sundayなら達成できます。 という、キャッシュについての広い勉強ができるトークでした。 このトーク中に話されていた「不易流行」 「流行」だけを積み上げても、いつか時代とともに使えなくなる日が来る。 そのときにまた「流行」で作り直してもタイマーが0になるだけ。 「不易」つまり、変わらないものを積み上げることで、時代を超えて変わらない価値を届けられる。 という言葉に胸を打たれました。

キャッシュと向き合う、キャッシュと共に生きる

report by id:takaram
曽根 壮大さん (@soudai1025)による発表です

speakerdeck.com

Web開発でキャッシュの利用を検討する上での注意点に関するお話でした。

「キャッシュは麻薬(=劇的な効果があるが一度使うと止めづらく、運用も難しくなる)」であるため、使う前に本当に必要か注意深く検討する必要がある、ということが繰り返し説明されています。

検討の上で必要と判断したら、キャッシュの更新・生存期間のアルゴリズムを決める必要がありますが、それらの各種アルゴリズムについても説明がありました。
キャッシュのアルゴリズムにどんなものがあるのか、私は全然認識できていなかったので、今後のキャッシュ検討のときにこのスライドがとても役に立ちそうです!

「利用用途、アルゴリズムを決めてから保存先のデータストアを選ぶこと」というのも重要だと感じました。ついつい「今回はRedisを使ってキャッシュをして…」のように、データストアから決めてしまいがちな気がするので気をつけたいところです。

保守開発メインでやってきたエンジニアが『リーダブルコード』を機能削除の観点から語る

report by : id:ymyhero7
ririhoshiさん(@_riri_hoshi)による発表です

fortee.jp

実際に機能削除をされた際に直面した問題と、そこから得た教訓をリーダブルコードの観点で3点紹介してくださいました。

  • 命名時に解釈の余白を持たせない、表記揺れさせない
  • コメントをアップデートし続ける
  • 「後で使うかもしれないから」と使わない共通関数を生み出さない

どれも歴史のあるサービスを開発していると非常に共感できる内容でした。
発表の最後に、「既存仕様・実装のしがらみの中でシンプルで美しいコードを追求し続けることの積み重ねがサービスの未来をつくる」とおっしゃっていたことが心に刺さりました。
私もその言葉を胸に刻んで開発していきます!

超巨大!超重要!な処理のリファクタリングにどのように向き合っているか

report by : id:hirobex
今濱 眞さん(@seainthepast)による発表です

fortee.jp

タイトル通り、超巨大!超重要!な処理をリファクタリングするために行っている計画と、
計画中に取り組んで良かったこと等をお話していただきました。
同じように、超巨大!超重要!な処理をリファクタリングを考えている人は一見の価値があると思いました。

privateメソッドのテストって書かない方がいいんだっけ?

report by : id:hirobex
asumikamさんhttps://twitter.com/asumikamによる発表です

speakerdeck.com

shoulditestprivatemethods.com

なぜprivateメソッドのテストを安易に作ってはいけないのか、というトークです。
最近はprivateメソッドのテストは書かないということが広まってきているとは思いますが、
なぜ書いてはいけないのか、逆に、どういう時なら使ってもいいのか、というのを説明できる人は少ないと思います。
このトークを聞くことで、その理由が理解できると思います。

Composerを便利に使うために私がやっていること by きんじょうひでき

report by id:dd_fortran
きんじょうひできさん(@o0h_)による発表です

speakerdeck.com

composerの便利なコマンドや設定を紹介していました。
知らなかったコマンドもあり、とても参考になりました。

ラクスからの登壇セッションのご紹介

レガシーシステムへのPHPStan導入から半年での課題と効果

report by id:dd_fortran

speakerdeck.com

PHPカンファレンス関西2024に続き、同様の内容で登壇してきました。
同じ内容での2回目の登壇となっていたのですが、(疲れていたこともあり)練習不足なこともあり登壇の話し方がうまくいかなかったので反省です...。
内容としてはレガシーシステムにPHPStanを導入した事例について話させていただきました。
登壇後には他社のエンジニアの方から声をかけていただき、参考になったという声や同様の課題を抱えているといった話をしました。
他社のエンジニアと交流する機会は多くないため、とてもいい経験となりました!!

PHP8.2にバージョンアップしたら文字化けが発生して道頓堀に飛び込みたくなった話

report by : id:neroblubros

speakerdeck.com

私もPHPカンファレンス関西2024で登壇した内容とほぼ同様の内容でお話しました。 リリース後に文字化けが発生したことを切り口にPHPのバージョンアップや運用とお客様対応の話をしました。

刺さるかな?と気になっていましたが、2件の鋭い質問をされてとてもいい経験になりました。

PHPerKaigiの規模の大きさにただただ驚きましたが、貴重な体験ができたし、 自分が世間で通じること、足りないことが整理できて登壇して良かったと思っています。

PHPでOfficeファイルを取り扱う! ~PHP Officeライブラリをプロダクトに組み込んだ話~

report by : id:hirobex

speakerdeck.com

登壇しました。
ちゃんとウケを狙ったところで笑えてもらえたので良かったです。
PHPでOfficeファイルを取り扱う時は、メモリ枯渇に気をつけてください。
LTなのにAsk the speakerで質問しに来てくださった方がいて嬉しかったです。

まとめ

今回もたくさんの参加レポートを執筆しました。
内容もレガシーシステムからの脱却や静的解析、Composerの便利コマンドと多岐に渡りなかなか読み応えのあるものになったのではないでしょうか。

PHPerのためのコミュニティ PHPTechCafe

ラクスではPHPに特化したイベントを毎月開催しております。
その名も「PHPTechCafe」!!
次回は 2024/03/26(火)に『PHPerのための「PHPTechCafeの5年間を振り返る」PHP TechCafe』 をテーマに開催します!
まだまだ参加者を募集していますので、ぜひお気軽にご参加ください。

👉PHPerのための「PHPerのための「PHPTechCafeの5年間を振り返る」PHP TechCafe

最後までお読みいただきありがとうございました!

Copyright © RAKUS Co., Ltd. All rights reserved.