BASEプロダクトチームブログ

ネットショップ作成サービス「BASE ( https://thebase.in )」、ショッピングアプリ「BASE ( https://thebase.in/sp )」のプロダクトチームによるブログです。

PHPerKaigi 2023に3名のメンバーが登壇・プラチナスポンサーとして協賛しました

懇親会で集合写真を撮るBASE株式会社メンバーの様子

こんにちは!桜が満開になり、心浮き立つお花見シーズンですね。
さて、この度は、2023/03/23(木)~2023/03/25(土)に開催された PHPerKaigi 2023 にプラチナスポンサーとして協賛し、3名のメンバーが登壇しました。

今回は、登壇者 3 名からコメントと、会場の様子やセッションについてお届けします!

PHP カンファレンス 2023 とは

2023/03/23(木)~2023/03/25(土)の 3 日間にわたって PHPerKaigi 2023 が開催されました。
BASE はこれまでにも開催されている PHPerKaigi への登壇並びにスポンサードをコミュニティ貢献活動として行って参りました。
今回はプラチナスポンサーとして当カンファレンスに協賛しています。

プラチナスポンサー一覧の左下にBASE株式会社のロゴ

登壇者のコメント

02 (@cocoeyes02)

speakerdeck.com

02です。今回は3年ぶりにメジャーバージョンアップとなったPHPUnit 10の話をしました。

今回の登壇準備の一環で、3年分のChangeLogを追って読んでいましたが、実際にやってみると想像以上に大変だということがわかりました。
ただ、IssueやPull Requestを読んでいく過程でPHPUnitのコミッター・メンテナーの考えや思想というのが徐々に見えてきて、とても勉強になりました。
今後もPHPUnitだけでなく、普段使用しているライブラリやフレームワークをChangeLogベースでリーディングしていこうと思います。

スライドにも書いていますが、今回のトークで話し切れなかった話題は後日テックブログに載せようと思っています。お楽しみに。

永野 (@glassmonekey)

speakerdeck.com

永野です。今回はPHPをブラウザで動かすという面白内容で話をいたしました。
WebAssembly = ブラウザで用いられる技術 = PHPは関係ない、というイメージを払拭できた内容だったのではないでしょうか?
個人的にはWebAssemblyに関してはプロダクションの利用が広まってきていると感じており、特に脱コンテナという文脈では結構身近になってきているなと感じております。バックエンドエンジニアとして考えると抑えておきたいスキルかなと考えています。

特に先日OpenFunctionがWasmをサポートしたという記事もあるようにFaaSを使う規模だとコンテナは結構ヘビーな印象を持っていたので活用の幅は広がると考えています。
また、発表にインパクトがあるようにデモ用のPHPのPlaygroundサービスであるphp-play.devも便利やらの感想を聞けたことは大変作者冥利につきました。
ぜひご活用ください。

php-play.dev

Futoshi Endo (@Fendo181)

speakerdeck.com

遠藤です。最終日のLTで「PsySHを使った効率的なデバッグ方法について」というタイトルで紹介しました。
普段PHPを使ってデバッグをしていると var_dumppritn_rなどを使って実行後に中身を見るという流れになると思うのですが、PsySHを使う事で対話的にターミナル上で確認できて便利です。
PHPでのデバッグツールと言えば「Xdebug」が有名ですが、素早くブレイクポイントを貼ってデバッグする時には PsySHが便利な場面があるので、是非活用してみてください!

オフライン会場の様子

オフライン会場の様子をお届けします!

こちらは Futoshi Endo さんのLTの時の様子ですね。制限時間間近になると聴講者の皆さんがペンライトを振る斬新な流れになっていました!

他にも数年ぶりに懇親会が開催されたり、お菓子なども充実していました!

オフライン会場の様子はGoogleフォトで共有されていますので、ぜひそちらも併せてご覧ください!

現地で見たセッションを一部紹介

takemotoです!今回は一般参加者としてセッションを聴講していました!その中でも気になったセッションについて一部紹介します。

PHPの最高機能、配列を捨てよう!! @uzulla

土曜の朝イチの発表でしたが、いい意味で眠気を吹き飛ばしてくれた発表でした。(是非アーカイブ動画を見てほしい)
PHPの配列は他言語でいうところの「Vector, Map, Hash, List, Iterable」などの機能を備えており、なんでもできる最高機能です。しかし、なんでもできるが故にカオスを生み出しやすいので(自己責任で)捨てよう!と言った内容でした。
かくいう私も新卒の頃はPDOから取得してきたクソデカ連想配列を数ファイルにわたって引き回し、加工に加工を加えた末に出来上がった何かを型の支援もないまま、どういう風に扱っていたのかもう思い出せないですし、そういうコードはできればもうあまり書きたく(読みたく)ないと思うのでとても共感できる内容でした。

時間を気にせず普通にカンニングもしつつ ISUCON12 本選問題を PHP でやってみる @sji_ch

オンライン登壇であったのにも関わらず、今年のPHPerKaigiのモリアガリトーク賞に選出された発表で、ISUCON12本選問題をPHPを使った実装で優勝チームと同等のスコア(Goでの実装で約34万点)を目指した試みが紹介されていました。
ISCCONは毎年Golangを使ったチームの活躍が目立っているので、「PHPがどこまでやれるのか」は非常に興味深いトピックでした。

発表の中で触れられていた作業は主に以下のような内容でした。

  • ミドルウェアの設定を優勝チームのリポジトリからコピってくる
  • DBにインデックスを貼る
  • PHPプロファイラで処理速度を計測 → ボトルネックになっているSQLを直す
  • マスタ参照をキャッシュ利用するようにする
  • シャーディングDB追加
  • PDOの生成コストが高いので、リクエスト間でPDOインスタンスを使い回せるようにする。
  • CPUがサチったので余ってるDBサーバーのCPUでWebを回す
  • ひたすらプロファイルを見て地道な改善

発表の途中で「CPU処理でネイティブコードの言語に勝てないのは自然なので、余ってるインスタンスはDBサーバーでも使え!」と言う主張があり非常に競技者的な目線の発想で思わず笑ってしまいました。
最終的なスコアは約35万点まで伸びて(制限時間という縛りはなかったですが)優勝チームを超えたので、PHPでも最適化すればかなりいいパフォーマンスが出せることを知れて、とても勉強になりました。

Laravelへの異常な愛情 または私は如何にして心配するのを止めてEloquentを愛するようになったか @KentarouTakeda

Laravelがどのような思想で作られていて何を目指しているかを紹介した発表でした。
Laravelの思想に沿ってLaravelの機能をデフォルトのまま使うコードを書くことで、コンテナ化やスケールが容易になることが豊富なサンプルコードを例に説明されていて、改めてフレームワークの思想や基本設計を知ることは大切なことなんだなと感じました。

Laravelは何を目指しているのかを知ることができるエピソードとして、Laravel 10から戻り値アノテーションをタイプヒントへと修正する影響範囲の大きいPRが発表内で紹介されていました。
この修正は最終的にLaravelの作者自身が(長い議論の末)戻り値をmixedに戻したそうです。このことに対して登壇者の方は「Laravelはジュニアからシニアまで使っていけるFWを目指しており、その結果万人にとってちょっとづつ使いづらくはなっている」といった解釈をされていて「しかしLaravelのこういう思想は我々も採用や開発効率という点で恩恵を受けている。Laravelの利用を後押しすることでWeb開発をもっとより良くできる」という結論で締め括っていました。Laravelへの愛が詰まったとても心温まる発表でした。

謝辞

協賛・社員のスピーカー参加を通して PHP コミュニティの盛り上がりに貢献することができ、弊社としても大変有意義な時間となりました。
スタッフの方々には業務でお忙しいにも関わらず、多くの時間をカンファレンス準備へ注いでいただいたかと思います。この場を借りて御礼申し上げます。

それでは、また来年の PHPerKaigi でお会いしましょう!