KCS Carrot logoKCS キャロットBlog

RubyKaigi2023 セッションレポート@オンライン参加

書いた人: @kcscarrot-hasumi

こんにちは!H2開発グループのhasumiです。

今回は長野県松本市 まつもと市民芸術館で開催された、RubyKaigi2023にオンライン参加させていただきました。
参加した感想や、気になったセッション等について書いていきたいと思います!!

オンライン参加

オンラインでの参加だったので、会場の様子を実際に見ることは叶いませんでしたが、
会場の熱気や、セッションの中でライブコーディングが始まった時など、
参加されている皆様の歓声や笑い声が聞こえ、現地の盛り上がりが伝わってきました!
同時にTwitterの#rubykaigiのハッシュタグを追いかけていたため、様々な情報を集めることができました。

楽しそうな出展もたくさんあり、
クックパッドさんの温度管理状況をリアルタイムでウォッチできる冷蔵庫や
大変な混雑だったらしい各企業の限定ノベルティ等、気になるものがたくさんありました。

オンオフどちらも良さがありますが、 離れていてもリアルタイムで現場の状況がわかることがたくさんある反面、
実際に現地に行かないと味わえない部分はたくさんあると感じました。

気になったセッションは?

馴染みのある機能についてのものから、自分が全く知らない知識のものまでたくさんあり
どれも興味深いものばかりでした。

中には難しくて頭がパンクしそうになったものも多々ありましたが、
今回は特に気になったものについてレポートさせていただきます!

Fix SQL N+1 queries with RuboCop

発表資料:https://speakerdeck.com/sue445/fix-sql-n-plus-one-queries-with-rubocop

@sue445さんによる「SQLのN+1クエリをRoboCopで自動修正する」がテーマのセッションで、
ISUCON(Iikanjini Speed Up Contest)でのN+1問題を感知するために作成された
rubocop-isucon というgemの紹介と、その作成の過程についてお話されていました。
(※ActiveRecordではなく、クエリに対してのN+1検知になります)

ISUCONに特化したCopは現時点でも複数ありますが、
rubocopを普段から使っていることとプラグイン機構であることから、rubocopを使用したと仰っていました。

  • copからDBに接続してスキーマ情報を取得する
    • twitterで「copからDBに接続…?!」というツイートが一斉に増えた瞬間を見ました。
      これにより、indexが付いていないカラムをWHERE句で使用していた場合の検知ができるそうです。
  • SQLのASTをRuboCopの世界に持ってくる
    • ASTの異世界転生
      ただしlibgdaで取得したSQLのASTのnodeには位置情報が含まれていないため、
      位置情報を取得する処理を自ら実装したとのこと……
      これにより、N+1のオートコレクトが可能になったそうです。
      (↓こちらはセッションを聞いている際に書いていた個人的なメモ。動揺が伝わります。)
      image

このセッションを聞く前は、 「業務でActiveRecordでは表せないような生のSQLを書くことがあったら
このgemを使用して事前のN+1検知ができるのかも…?」 と考えたりもしましたが、
視聴後に完全にISUCON専用のgemということがわかり、この考えは消失しました。
Goで参戦するチームが多い中、絶対にRubyを使って速さを追求してみせる、という情熱が伝わってきた30分間でした。

「ISUCON は総合格闘技です」

松本市

せっかくなので、私も松本駅からまつもと市民芸術館までGoogleMapで散策してみました。(?)

長野県は軽井沢にしか行ったことがないので、オンラインとはいえ初めて見る街にワクワクです。
向かう途中にはおしゃれなカフェや美味しそうなレストランがたくさんあって、近くには素敵な公園もあって……
何より周りを見渡すと大きな山に囲まれている景色が最高です、空気が綺麗!(※GoogleMap)

今度個人的に行きたいと思います。

参加できて良かった

「Rubyを使って実現したいこと」がテーマになっていて、とても面白かったです。
普段業務としてRuby on Railsを使っているだけでは得られない知識がたくさんありました。
また、Matz Keynoteでは、Rubyは今年で生まれて30年で、
その間様々な人からのフィードバックや支えあいがあり今に至るとお話されていました。
Rubyは人と繋がることで進化していく言語だと感じ、
コミュニティの場では対話が一番大事だと実感しました。