【参加レポ】RubyKaigi 2024 に行ってきました！

# はじめに

RubyKaigi 2024 に行ってきました！

https://rubykaigi.org/2024/

この記事では、僕が聴講したセッションのうち特に印象に残っているセッションを紹介します！

# Writing Weird Code

https://rubykaigi.org/2024/presentations/tompng.html#day1

最初に紹介するのは、1日目の Keynote 「Writing Weird Code」です。

これが RubyKaigi 2024 の最初のセッションだったのですが、一番印象に残っています。

このセッションについて説明する前に、まずはこちらをご覧ください。

https://twitter.com/tompng/status/1582322388678549504

一見、動くアスキーアートのように見えますが、よく見てみると Ruby のプログラムであることがわかります。さらに、止めてコピーして実行すると、止めたところからまた動きます。

このように、プログラムを実行するとそのプログラムと同じものが出力されるプログラムのことを Quine と呼びます。さらに、この Quine はアニメーションも行い、誤り訂正も行うらしいです。

Ruby 界隈には、このような超絶技巧プログラミングを競い合う TRICK という大会があり、上記のコードはTRICK2022で金賞を獲得されたようです！

このセッションでは、上記のような奇妙なコード (Weird Code) に使用されているテクニックや、RubyKaigi 2024 のために作成されたコードが紹介されました。

発表されたコードは、以下のリポジトリに公開されています。ぜひ実行してみてください！

https://github.com/tompng/selftrick2024

まだ僕にはコードの仕組みなど理解できていない部分もありますが、少しずつ読み解いていきたいです。

そして、来年 TRICK 2025 が開催されるらしいので、それまでに何かしら作れるようにしたいです！

# The grand strategy of Ruby Parser

次に紹介するセッションは、Ruby の Parser（構文解析）に関するセッションです。

https://rubykaigi.org/2024/presentations/spikeolaf.html#day1

grand strategy（＝大戦略）ということで、パーサージェネレータや Lrama の紹介から始まり、LSP や parse.y, Universal Parser など、現在解決しようとしている Ruby Parser の課題と目指す先、そしてそれを一緒に目指す Contributor の方々を紹介されていました。

<script defer class="speakerdeck-embed" data-id="198a463233b649578b8b68a0d0f1758e" data-ratio="1.7777777777777777" src="//speakerdeck.com/assets/embed.js"></script>

今年の RubyKaigi も Parser に関するセッションがいくつかあったのですが、このセッションは初日の序盤にあり、そこで全体像をつかむことができたため、ほかの Parser に関するセッションの内容がかなり理解しやすかったです。

# Let's use LLMs from Ruby 〜 Refine RBS types using LLM 〜

https://rubykaigi.org/2024/presentations/kokuyouwind.html#day1

LLM の力で RBS の型を生成しよう！というセッションです。

この発表をした黒曜さんは、去年の RubyKaigi の LT でも LLM を活用した RBS の型生成について発表されていました。今回の発表はその続編ということで、LLM の力で RBS の型を生成する「RBS Goose」 というツールを発表しました。

https://github.com/kokuyouwind/rbs_goose

現在 RBSを生成する方法は様々ありますが、足りない型を追加したり、生成された型の手直しが必要だったりするので、それを LLM の力で補おうというのがRBS Goose の目的です。

仕組みはシンプルで、Rubyファイルと `rbs prototype` により生成したファイル、そして型生成の例をプロンプトに詰め込み、LLM に渡すことで RBS を生成します。

RBS Goose の特徴として、Langchain.rb により LLM が選択できるようになっています。
様々な LLM のモデルで性能評価では、RubyKaigi の前日に発表された GPT-4 Omni の結果も含まれていて、とてもタイムリーなセッションでした。

<script defer class="speakerdeck-embed" data-id="d3fa1fd1e6d94800a49ee57380eeb97d" data-ratio="1.6" src="//speakerdeck.com/assets/embed.js"></script>

https://zenn.dev/leaner_dev/articles/20240521-rubykaigi-2024-lets-use-llms-from-ruby

# Good first issues of TypeProf

https://rubykaigi.org/2024/presentations/mametter.html#day2

このセッションは、静的型解析ツールの TypeProf の開発をしている遠藤さんが、 TypeProf の使い方や開発する方法の紹介を通じて、TypeProf に貢献する方法をレベル別で紹介されました。

レベル1として、まずは TypeProf を使ってみるとか、テストの追加するなど簡単なことから始め、レベル2として、エラーメッセージ改善や 定義ジャンプ機能の拡張、そしてレベル3では補完を賢くしたり、フロー解析やruby-lsp の改善などなど、様々な貢献の方法を示していただきました。

このセッションを聴講する前は、Ruby や RubyKaigi で出てくる様々なライブラリはどれも難しく貢献するためにはソースコードを読んで理解しなければならないと思っていましたが。このセッションで教わったことを実践していくならできるかも、と思いました。

<script defer class="speakerdeck-embed" data-id="9da3ad9a560f4c19823275455e0be01b" data-ratio="1.7777777777777777" src="//speakerdeck.com/assets/embed.js"></script>

# おわりに

僕が初めて RubyKaigi に参加したのは去年の松本での RubyKaigi 2023 で、今年は2回目の参加となりました。去年よりも Ruby の知識も少しは増えていたので、より RubyKaigi を楽しむことができたと思います。来年も参加したいです！

また、この記事では各セッションの感想を書きましたが、セッション以外の感想や会場の様子などは、こちらの参加レポートに記載しましたので、ぜひご覧ください！

https://zine.qiita.com/event/202406-rubykaigi2024-report/