はじめに
こんにちは、開発基盤チームの桝井です。
PHPカンファレンス福岡2024に弊社から2名、桝井・梅津が参加してまいりました!
そして、私はLT登壇もさせていただきました。
今回はそれらのレポートです!
参加トークのレポート
SPLから始める「データ構造」入門
report by 桝井
- データ構造は形状と機能のセットであり、形状から解決したい課題が見える
- 解決したいことに対して正しい構造を使わないとコードが辛くなる
- SPLで代表的な構造が提供されている
日常生活におけるデータ構造の例がとてもわかりやすく一気にデータ構造を身近に感じさせてもらいえました。
SplQueueなどはじめSqlで提供されていること自体をしらなかったのでいい機会となりました。
トークの狙い通りデータ構造がおもしろい!もっと知りたい!となりました。
FatControllerは悪か?
report by 梅津
結論としては、FatControllerが悪なのではなく、整理されていない状態が悪ということでした。
ThinControllerにしてロジックを複数のServiceクラスに切り出した結果、循環参照が発生するリスクがあると指摘。
FatControllerを整理するために、SingleActionControllerに切り出す、privateメソッドに切り出す等の方法を提示されていました。
Ask the speakerにて、FatControllerのテストについては分岐網羅の観点は不要であり
Featureテストのみ作成するテスト駆動開発であるとのアドバイスをいただき、参考にしたいと思いました。
なぜキャッシュメモリは速いのか
report by 桝井
- ハードウェア部分の話
- 体系的に学ぶ、とは楽しいと感じた部分を掘っていって自分で体系化するしかない
キャッシュメモリはなぜ速いかは、CPUの近く配置された高速アクセス可能なメモリにデータをコピーしてアクセスしているから、ということがわかりました!
ハードウェアは普段しらない分野ですので好奇心が刺激されました。
個人的に『体系的に学ぶにはなにを勉強すればいいですか』という問いに対しての言語化が刺さりました。
自身も確かにそうだったなーと実感もあり、真理を得た気がしました。
新しい分野の知識・難しい古典などに対して学習していく際は
今以上に自分が面白いとおもった箇所にフォーカスして知識の幅を広げていこうと思いました。
書き込み処理をスケールさせるために必要な非同期処理の基本と考え方
report by 梅津
アクセス集中等による障害発生により一時的にスケールアップされるとその後スケールダウンしない傾向や
データベース設計が適切ではない場合に負荷が解消されず、再度スケールアップする傾向がよくあるとのこと。
スケールアップに対応できない例として、スロークエリによるロック競合やロック競合による更新処理の遅延を挙げていました。
アクセス集中を避けるために非同期に書き込む方法として、CQRS・メッセージキューを紹介。
最初からいい設計にできるわけではないので、後から変更できるような設計とすること
(メッセージキューを利用できるようにすること)という話が印象的でした。
良い仕様が良い設計を生むのでステークホルダと対等に話せる関係を構築することの重要性についても深く共感しました。
PHPでデータベースを作ってみた
report by 桝井
- 特定のポートにソケット通信を行う
- MySQLと同じ通信内容(プロトコル)の解読・実装を行う
「変なものをつくろうぜ」 こういったモチベーション・好奇心が技術力になる、と学ばせてもらえました。
MySQLのプロトコルの規格が正しければ簡単に騙すことができるといった点もおもしろかったです。
自分が動かしたい・確かめたい部分にフォーカスしてミニマムにつくるという姿勢も見習いたいと思いました。
何かを試す時に環境構築にこだわってしまい本質に辿り着けないといったことを幾度も経験していたので刺さりました。
創作意欲が湧き立ってくる発表でした!
設計の考え方 インターフェースと腐敗防止層編
report by 梅津
「腐敗防止層」という単語は エリック・エヴァンスのドメイン駆動設計 という書籍から引用されており
システムを長生きさせるために意識したいことであるとの説明でした。
ライブラリはバージョンアップや深刻な不具合が見つかったり、メンテナンスされなくなるなど問題が発生するリスクがある。
wrapperを噛ませるとライブラリに問題が出てもwrapperのインターフェースが変わらなければ、
被害を最小化できるという役割のことを腐敗防止層であるという説明でした。
インターフェースを設計する際には第三者が定める標準を利用することや、インターフェースがあることで具象(実装)を動的に切り替えられるメリットを挙げられており、とても共感できる内容でした。
過去や未来を扱うのは難しい?過去と未来に立ち向かうための勘所
report by 梅津
未来や過去を扱って起こる事故例を4つほど紹介された後、ソフトウェアを作る際に状態を扱う難しさをご説明されていました。
未来に実行する際のデータを現在時点で作成すると、未来は変化するためデータも変化してしまうリスクを挙げられ
極力実行するその未来の時点でデータを確定させることの重要性を指摘していた点が印象的でした。
過去については、確定した事実は変化するものへの参照を持つべきではない、という発言に共感しました。
弊社でもログテーブルに変化するIDやデータを持つものがないか、再度確認する必要があると思いました。
LT登壇のレポート
私事で恐縮ですが、 桝井が登壇させてただきました。
簡単なレポート・感想を記載させていただきます!
FuelPHPからLaravel移行が遂に終わった!最初にやっておきたかったこと5選
発表内容のサマリー
弊社のリプレースの失敗からどうすればよかったか?というテーマで登壇されていただきました。
リプレースの最初に【やっておきたかったこと】を挙げ、それらは5つどころではキリがなくて
では本当にすべきだったことは何であったかを探る、という展開でした。
結論は「ベストプラクティス実践をはじめとした組織体質を良くしていくことでリプレースの失敗は避けれたかもしれない」という話でした。
レポート
初登壇ということもあり壇上に立った瞬間、緊張で震えていました。
しかし、発表は伝えたいことが伝えられて、笑いもいただけたので良かったです。
なによりも聞いてくださった皆さまから「わかる!」「いいLTだった」「20分枠でしっかり聞きたい内容」など
リアクションをいただけたことがうれしかったです。
これからも頑張ろう!まだやれる!と私に勇気をくださいました。
カンファレンスは参加するだけでも楽しいですし、学びになりますが
自分から発信すると更に楽しく学ぶことができますね!
結
PHPカンファレンス福岡2024のスタッフの皆様、ありがとうございました。
今年も楽しませていただきました。
今後も弊社はPHPカンファレンスに積極的に参加、応援をしてまいります!