RubyKaigi 2024 参加レポート

こんにちは。オプティムの伊藤、市川、木村、鈴木です!

オプティムは今年のRubyKaigi 2024にゴールドスポンサーとして協賛させていただきました! 現地にも私達4名で参加いたしましたので、レポートいたします。

RubyKaigi 2024について

今年のRubyKaigiは沖縄の那覇文化芸術劇場なはーとでの開催です。 国際通りや那覇市第一牧志公設市場が近くにあり、天気にも恵まれ、非常に賑やかな雰囲気でした。

那覇空港では早速 Haisai Rubyist! の文字が出迎えてくれました!

会場もスポンサーのブースが38個も入っている大きな場所となっており、多くのRubyist達で賑わっていました!

オプティムのノベルティ

今年はゴールドスポンサーとして参加しましたので、共有スペースにてノベルティのタオルを配布させていただきました。 手にとって頂いた方はありがとうございます!

気になったセッション

今回現地参加したメンバーから気になったセッションを一つ選んで感想を書いてもらいました!

伊藤

3日目の最初のセッション「Ruby Committers and the World」が素晴らしい体験でした。
普段の開発でも耳にするようなRubyの課題が展開されており、普段コミッターの方々がどのように議論されているのか少しだけ知ることができました。

特に最初の話題になった「# frozen_string_literal: true」の話題が興味深かったです。
Rubyの文字列のfreezeが自動で行われるとどのような影響があるのかCRuby以外のプラットフォームで動くRubyを開発しているコミッターも意見を述べており、普段の開発以外でも様々な環境でRubyが使われていることを感じることができました。

また、Rubyで型をどの用に記載するのが良さそうかという議論では、コミッターが提案した記法の案に対して会場の参加者にどちらの記法がいいか挙手を促すことで意見を集めており、自分もRubyのコミュニティに参加していることを実感することができました。

市川

松本宗太郎さん発表の「Embedding it into Ruby code(Rubyコードにアレを埋め込む)」というプレゼンを拝聴しました。it(アレ)とは、「型」のことです。

speakerdeck.com

Rubyでは、既存の静的解析機能を活用するために、RBSファイルという型情報が書かれたファイルをソースコードとは別に作る必要があります。
TypeScriptと違って、型情報を別のファイルで管理すると、元のソースコードが型で汚染されません。お試しで導入して後から不要になった場合でも、すぐに取り除くことができます。
しかし、逆にメンテナンスをしていくことになった場合、永続的に二つのファイルを管理していかなくてはいけません。片方をアップデートした場合は、整合性が取れるようにもう片方もアップデートする必要があります。これではメンテナシビリティが損なわれてしまいます。
そこで松本さんはコメントに型を追記する方法を試みました。実際のリポジトリは github.com/soutaro/rbs-inline にあります。
この方法がメジャーになった場合は、プロダクトにおける開発でもいずれ使うことになると考えています。個人的には、松本さんがおっしゃるとおり、型情報とソースコードは一緒にあったほうがメンテナンスしやすく工数が減ると思います。開発では型は煩わしいものかもしれませんが、保守していくには型とお友達になる必要があります。だから、個人的にはこの方法は今回の発表の中でも気に入っています。

木村

Hiroshi SHIBATA さんによる講演「Long journey of Ruby standard library」です。

speakerdeck.com

Ruby標準ライブラリの進化と現状、そして今後の展望についてわかりやすく解説されていました。
Rubyをインストールすると、様々なライブラリが一緒にインストールされます。そのうち、requireすることで利用できるものを標準ライブラリと呼びます。標準ライブラリは積極的にGem化が進められており、現在大部分はRubyGemsという形で提供されています。
Gem化により、Ruby本体とは独立してライブラリを更新できるようになっただけでなく、default gemsからbundled gemsへの移行により、依存関係の削減によるセキュリティ強化や開発体験の向上も期待されています。
一方で、bundled gemsへの移行には課題も存在します。BootsnapやZeitwerkなどrequireメソッドをオーバーライドしているライブラリは、Ruby 3.3で追加された警告機能が使えない場合があり、C拡張ライブラリの移行も難しいようです。これらの課題解決に向けた技術的な取り組みが進められているとのことです。
講演の最後には、Ruby開発をより楽しくするためにOSS開発を続けていきたいというお話があり、柴田さんの情熱が伝わってくる大変素晴らしい講演でした。

鈴木

「Good first issues of TypeProf」です。

speakerdeck.com

TypeProf(github.com/ruby/typeprof)はYusuke Endoh氏が開発しているVScodeの拡張機能でRuby Editor supportです。 Editorの入力補完やエラーの表示、型推論、メソッド定義元へのジャンプ等の機能を提供します。さらにメソッドの上に推論された型定義を表示したり、メソッドの定義元をリネームするとそのメソッドを利用している側も自動で書き換わる機能や、メソッドジャンプの逆でメソッドの定義場所から利用している場所の一覧を確認できたりなど普段のコーディングでもぜひ使いたくなるような魅力的な機能が開発されています。
今回の発表ではそんなTypeprofの型推論のデータフロー解析の大まかな仕組みやテストシナリオから始まる開発の流れが紹介され、今後Typeprofがより良いものになっていくためにIssueを歓迎中ということでいくつかのIssue例が挙げられていました。Typeprofでテストシナリオを作って遊んでみて、うまく動かないテストシナリオをPRで投げるだけでもTypeprof拡張機能の開発に貢献できるので、ぜひさわって気軽に貢献してほしいということでした。

おわりに

RubyKaigiに参加することでRubyが開発されている様子やコミッターの方々の姿を拝見することができ、Rubyをより身近に感じる事ができました。 今後のRubyがどの用に進化していくのか楽しみです!まずは自分たちのプロダクトをRubyを3.3にします!

OPTiMではRubyで開発しているプロジェクトが複数あり、中にはrails statsが10万行を超えるものもあります。 Rubyが好きなメンバーで開発していますので、ご興味のある方はぜひ一度ご連絡ください。

www.optim.co.jp

また、弊社では不定期でテックナイト(勉強会)も開催しています!次回はこちらです。是非ご参加ください!

optim.connpass.com