March 31, 2021

PHPerKaigi 2021まとめ

3/27,28にPHPerKaigi 2021に参加してきましたので、印象に残ったところを書いていきます。皆様お疲れ様でした!!

なんで参加したのか

事の発端は、Twitterで当日スタッフの募集をやっていたためでした。
いくしかないっしょという事で、申し込みました。
コロナ禍のイベント運営について興味があったのと、ノベルティ付きチケットがタダになるからという不純な同期もありました。
あと、去年のPHPConf2021のスタッフもやったのですが、その時楽しかったのでまたやろうかなという気持ちになりました。

なにしてたの?

今回のカンファレンスは、ニコニコ生放送による配信を行っていたということもあり、主にライブ配信の作業や(新鮮だった)やセッション終了後のAskTheSpeakerの司会進行などをやってました。

印象に残ったセッション

スタッフの作業をやりながらだったので、流し見みたいになったところもありますが、それでもなお頭に残ったセッションを取り上げます。

Day1

  • テクニカルサポートに精一杯だったチームが安定運用のための開発を行えるようになった道のり

サイボウズさんの事例です。20年に渡って運用しているプロダクト(Garoon)の運用が初期と比較してどのように進化を遂げたかという点について説明がありました。

部署間の複雑なフローを改善するために、テクニカルサポート専門のエンジニア組織を新設し、部署が一体になって動ける仕組みを作って改善につなげたとのことでした。

面白かったのは、自社のシステムがどんだけやばいかという会議を全部署巻き込む形でやっているそうです笑
ぜひ僕の職場でも導入してみたいなと思いました。

https://twitter.com/oogFranz/status/1375654763409199107

  • swooleとlaravel-swooleを用いたハイパフォーマンスアプリケーションの構築

laravel-swooleの導入によって18.6倍の高速化を実現したそうです。
laravel-swooleはPHPで非同期処理/CoRoutineを実現するPHPExtensionです。
高速なアプリケーションを導入できる一方、CoRoutineセーフではない処理に対策が必要だったりPHPUnitなどのPHPで用いられるOSSが一部正しく動かないなど、導入するには結構骨が折れる作業が必要になります。(僕自身、前に現場で入れようとして見送った経験があります)

しかし、このセッションでは、どのような道のりでlaravel-swooleをプロダクトに導入したかについて説明がありました。
トラーナ社の開発チームつよすぎる…
DBやRedisのドライバを自作した話を聞いた時は震えました。

https://speakerdeck.com/memory1994/swoole-to-laravel-swoole-woyong-itahaipahuomansuapurikesiyongou-zhu

  • モックの泥沼から脱却するためにあえてDBにつないでテストしている話

これほんとわかりみが深すぎるなと思って聞いていました。
今まで、モックが正義、DBに繋ぐ=アンチパターンと勝手に思い込んでいました。
結果、何が起こったかというとモックだらけでコードが汚れ、すぐに壊れてしまうテストコードになりました。
これと似たようなことをおっしゃっていました。
モックつかうところ、DB繋ぐところを見極めて使いこなしていこうねという話でした。 参考図書のところは僕も参考にさせてもらって読もうと思います。

https://speakerdeck.com/kazuhei0108/motukufalseni-zhao-karatuo-que-surutameni-aetedbnitunaidetesutositeiruhua

  • PHP8になった今の時代に、PHPの「エラー」「例外」そして「Error」をおさらいしておこう

ここのところ正直曖昧だったので、とても助かりました。 特に、「システム側で自己復旧できる例外のみキャッチする。それ以外はキャッチしない。」 というところはなるほど!!と思いました。

https://speakerdeck.com/o0h/phperkaigi2021-regular-talk

Day2

  • トラブルのない決済システムを作ろうと奮闘したお話

個人的には決済システムを触るのはとても嫌なので、すごいなぁと思いながら見ていました。 ここ数ヶ月ほど、仕事で自社の決済システムを眺めることがあったので親近感がえらく湧きました。

1度のリクエストで完結させるのではなく、決済の状態を一旦作成して、確定のリクエストを投げさせる2相構造にすることで問題を解決したのは目から鱗でした。 あと、ORMに起因するロック取得のコストを削減して大幅に速度が向上していたのは感動しました。 ウィンドウ関数僕も勉強しよ…

  • DNSを制するものはインターネットを制す! DNSの世界

ドメイン名ハイジャック怖いですね。
CoinCheckやLiquidなど、仮想通貨業者を挙げていました。(実際はいろんなところが狙われていると思います)

レジストラでネームサーバを書き換えられたらどうしようもないっしょって思っていましたが、
ネームサーバの変更を検知するOSSを開発されておりました。
目の付け所が玄人だなぁと思いました。

https://github.com/ichikaway/nschecker

  • マンガではわからないソフトウェア開発の真理

ブルックスの法則 は初めて聞きました。一生覚えときます。

プログラマを投入すればするほどプロジェクトは遅れる ソフトウェア開発は一般的な産業と異なる。

「優秀なプログラマは少ない。全体の意見を聞こうとすると優秀なプログラマの意見が思慮の低い意見に潰される」 というのはとてもなるほどと思いました。

グレゴリーのダルメシアンの例を挙げて、犬の形が見えるのは一度見えた経験があるから。漫画では共感を伝えられるが共感の素となる経験までは伝えられないという例えはさすがだなと思いました。

プログラマは経験を通じてコードを書くべきであり、巨人の肩に立つにしても自分の足が必要というところはとても刺さりました。

  • おまけ

スタッフをやっていると、あちらこちあらで繰り広げられている会話に耳を澄ますことができるのですが、uzullaさんがアンカンファレンスで仰っていたこの言葉が、僕がすっかり忘れていたギーク魂を思い出させてくれました。

何がコンテナだKubernetesだ、ランニングコストでいくらかかると思ってやがる。 数百円のVPSを極限までチューニングしてその分儲けるんだよ。(意訳。記憶が曖昧。)

まとめ

とても面白いカンファレンスでした。
もっと強いエンジニアになって登壇とかLTとかやってみたいな。

© yuta-ron 2021

Powered by Hugo & Kiss.