こんにちは osyoyu です。
この記事はSmartBank Advent Calendar 2024の25日目の記事です。12/7にして完走するアドベントカレンダーとはこれいかに。昨日はzinさんの『【魔法のようなAI体験✨】デザイナーが語る「AIレシート読み取り」制作秘話』でした。
SmartBank Advent Calendarのクロージングは明日に任せるとして、本日は『カンファレンス発表、業務、コミュニティ』と題し、自分の2024年の3つの登壇発表を通して、カンファレンスとどう向き合ってきた年だったかを振り返ってみようと思います。
Day 10のnyancoさんの記事『なぜスマートバンクはテックカンファレンスに本気でやれるのか』と合わせて読んでいただくとおもしろいかもしれません。 blog.smartbank.co.jp
まずは発表を振り返る
RubyKaigi 2024 - “The depths of profiling Ruby”
2023年から作り始めていたRubyプロファイラ “Pf2” の開発についての発表でした。プログラムの性能を測定するプロファイラですが、それは果たしてどのよう作られ、どう動いているのか、を詳解したつもりです。今年の名刺代わりになった発表でした。「苦悩」をもう少し盛り込んでみても良かったかも、と思ったりもするので、更新版をどこかで発表したいですね。
また、Pf2は2023年度のRubyアソシエーション開発助成を受けて開発していたプロジェクトでもあり、その成果発表としてRubyKaigiの発表に内容を加えたものを公開しています。
https://speakerdeck.com/osyoyu/enhancing-performance-profiling-for-ruby
YAPC::Hakodate 2024 - “プロファイラ開発者と見る「推測するな、計測せよ」”
こちらはYAPC、すなわちYet Another Perl Conferenceでの発表ということもあり、Ruby色は控えめにしてジェネリックな語り口にしたつもりの発表です。「推測するな、計測せよ」とはよく聞く言葉でありますが、推測なき計測……もとい、仮説なき検証にも意味がない、という主張でした。
いい話だと思っていただけたのか、なんとベストスピーカー賞をいただきました。ありがとうございます!
Kaigi on Rails 2024 - “都市伝説バスターズ「WebアプリのボトルネックはDBだから言語の性能は関係ない」”
「WebアプリのボトルネックはDB(だからWebアプリをチューニングするべきは真っ先にSQLに着目すべきだ)」という言説をよく見聞きする気がしていたので、このようなタイトルにしてみました。採択が決まってから、この言説の実例をGoogleで探してみたのですが、思っていたよりも少なくて冷や汗を書いたのはここだけのヒミツです(とはいえそれなりに見つかりましたが)。
ではパフォーマンスにいかに向き合っていくべきか。DB (SQL) だけを疑うのではなく、言語やミドルウェア、つまりRubyやPumaの性能特性をきちんと把握することが重要ではないでしょうか、というある意味当たり前の話に着地しました。
情熱を持てることだから
数ヶ月おきに30-40分の発表の準備をするのはなかなか大変! ではあります。そんな大変なことをなぜやるのか……これを考えると、「情熱を持てるテーマについての発表だから」以外にないように思います。
プロファイラやパフォーマンスは、自分にとって大きな関心のあるテーマです。もちろん、出発点こそ業務上の要請(すなわち遅いエンドポイントがある etc.)のことも多いですが、それをソフトウェアや口頭発表の形に昇華させたのは情熱の力、と言えるかもしれません。
とは言いつつ、スマートバンクは登壇発表を大変よく支援してくれる文化のある会社です。プロポーザルのネタ出し・レビュー、業務時間中の発表資料の作成時間確保、発表練習などなど。情熱を自由にドライブさせられるのは、この環境があるから、ということは間違いありません。特にプロファイラの話なんかは半ば趣味の話ですが、情熱を持てることについて話すときが一番輝ける、との理解のもと参加費等も会社に支援してもらっています。
会社でのプロポーザルのネタ出しの様子ですが、mokuoさんの『builderscon 2024 プロポーザルが採択されるまで』やohbaryeさんの『エンジニア9名でプロポーザル提出8件, 採択3件を支える技術と文化』をご覧いただくと片鱗が覗けるかもしれません。
カンファレンスと業務とコミュニティの間で
登壇発表は「業務で出した成果を発表する場所」のように、取り組みを一方向に出力する場所であるように捉えられることが多いように思います。しかし、本当にそうでしょうか?
業務であれ、趣味であれ、成果を発表の形に昇華させるときには大いなる内省が求められるように感じます。どのように整理すれば聴衆に理解されるか? 何を提示すれば説得力が増すか? 技術の大きな流れの中でどのように位置付けられるものなのか? そんなことを考えているうち、未完成の部分に「気づく」ことはよくあることのように感じます。
たとえばKaigi on RailsではPumaのスレッド数の調整について話しましたが、業務アプリケーションにおいて min/max をいかに強力な根拠をもって設定するか、という点について(発表資料を作りながら)もっと深掘りたくなってきた、でもちょっと実装(と時間)が足りない! と感じていたりしました。次の機会により良い話をできるよう、発表後も調査と実装を進めています。
こうして発表資料を作りながらに気づいた「未完成の部分」ですが、それをもさらけだして発表することで得られるものがあるように思います。なんといっても、発表している場所は「カンファレンス」すなわち「会議」であり、議論をする場所なのですから。
そんなこんなで、2024年は登壇発表をがんばったけど得られるものは多かったな、という話でした。
この記事は自分の個人の感想でしたが、スマートバンクでは似たことを感じている人が多いのか、外部発表が大変に盛んです(発表一覧)。むろん、強制力が働いていたり、みながカンファレンスファイターというわけではなく、あくまで機運が高まっている人へのサポートが大変に充実している、と捉えていただくと良いように思います。
スマートバンクではにぎやかなエンジニアを募集しています。
https://smartbank.co.jp/recruit/2024/
応募するほどじゃないけどちょっと気になるなという方向けに、ちょっと気になる方向けのイベントも開催します! ぜひスマートバンクの内情をチラ見ください。
https://smartbank.connpass.com/event/336326/
そして次いよいよSmartBank Advent Calendarのクロージングです! お楽しみに。