若手RubyエンジニアがRubyKaigi 2024に初めて参加してみた

# はじめに

Akira Matsudaさんの「初心者のためのRubyKaigi入門/RubyKaigi Introduction」を拝見し、ruby kaigiの楽しみ方として
「わからないけど気にしない」
「本物のプログラマーたちのすっごいかっこいい姿がみれる」
ことと話されていました。

実際に参加してみたところ、全体的に難しくて正直、あまり理解ができていない部分が多々あります。
そんな中でも、初めて知った技術や面白かったセッションの概要について、同じく若手のRubyエンジニアと学びを共有できるようにしたいと思い今記事を作成しました。

# 内容
印象に残っているセッションと、セッションを聞くにあたり調べた知識についてまとめました。

# keynote（Day1）
Rubyという言語が、読みやすいコードを書くのにも、読めない奇妙なコードを書くのにも優れた言語であることを発表されていました。

参考：
https://drive.google.com/file/d/1Dkx15u_5UAGoFqJHCeAuj2FXS-z_U7EE/view

「意味のなさそうな思考をしてみることで新たな発見につながる」ということを話されていました。

上記のような奇妙なコードを書く中で、ただ開発しているだけでは見つけられなさそうなバグを発見することができたそう。

「あえて〇〇してみる」ことで発見できるバグがあると感じてはいましたが、おもしろおかしく考えさせてくれたことが印象に残っています。

# The grand strategy of Ruby Parser
Ruby Parserの戦略についての発表、およびRuby Parserの成長について現状完了しているもの、着手しているものの発表がされていました。

Parserとは
一定のルールに基づいて文字列を解析し、その構造を抽出するプログラムのこと。

参考：
https://www.protosolution.co.jp/glossary/web/ha/pa-sa.html

Rubyのパースライブラリとしては以下のものがある
- Prism
- ripper
- parser
- ruby_parser

# Let's use LLMs from Ruby 〜 Refine RBS types using LLM
Large Language Model (LLM) の基本についての説明とRubyからLLMを使用するツールの作成について発表されていました。

LLMとは大量のテキストデータを使いトレーニングされた機械学習モデル（chatgptなど）です。
LLMを用いてより精度の高いRBSを生成できるのではないかという背景のもと、開発したものの仕組み、LLMを使った開発のTipsについて知ることができました。

Rubyistの方々もLLMを活用することでRubyをどう良くしていけるのか、試行錯誤されているのだなと実感したセッションでした。

※RBSとは
Rubyの静的型付けに対応するために開発された形式的なインターフェースの一つ
Ruby3.0で導入され、Rubyプログラマーによる型アノテーションの作成を容易にし、型に関する情報を共有することを可能する言語

参考：
https://note.com/fukurou_dev/n/n5bc20a87bf01

# Using "modern" Ruby to build a better, faster Homebrew
Rubyによって書かれているmacOSパッケージマネージャー「Homebrew」について、ユーザーに配布するようになった経緯とその理由、現在私たちが使用している最新のRubyツール(Sorbet、RuboCop など)、Ruby のバージョンとActiveSupportがHomebrewのパフォーマンスにどのように影響したか、そしてHomebrew をより良く、より速く、よりRubyらしくするために将来計画していることが発表されました。

個人的には自分でも見知っているHomebrewがRubyで書かれていることに驚きました。

※Homebrewとは
Mac OS Xオペレーティングシステム上でソフトウェアの導入を単純化するパッケージ管理システムのひとつ
パッケージ（実行ファイルや設定ファイル、ライブラリなどを一つのファイルとしてまとめているもの）のインストール（アンインストール）作業を一元的管理するもの。
なんとrubyで書かれている

参考：
https://zenn.dev/sawao/articles/e7e90d43f2c7f9

# Using Ruby in the browser is wonderful
Ruby 3.2 でリリースされたruby.wasm（RubyをWebAssemblyとしてブラウザで実行できるようするパッケージ）について、快適なプログラミングのためにかけていたいくつかの機能の改善と取り組みについて発表されていました。

またNakajimaさんの将来の展望としてruby on railsを参考にRubyでフロントエンドのフレームワークを作りたい（フロントエンドのフレームワークはJSばかりなので）という野望も語られていました。

※ruby.wasmとは
ブラウザ上（WebAssembly上）でRubyの実行を可能にしたもの
RubyのインタープリターはCで実装されているため、Cで実装されたインタープリターをWebAssemblyでコンパイルし、Rubyのコードをこのインタープリターに読み込ませることでブラウザ上でのRubyが実行できるようになる

※WebAssemblyとは
C、C++,Rustをはじめとした低水準のコードをWebAssemblyコードへコンパイルすることで、それぞれの言語で実装した処理をWeb上で動作させることを可能にするもの

参考：
https://qiita.com/getty104/items/67245fb24ad101a6ec97

# 最後に
発表に関しては、わからないことがおおく、自分の知識不足を実感しました。
しかし、わからない用語について、発表後にひとつひとつしらべることで、参加前よりも確実にRubyに対する理解を深めることができたと思います。
（まだまだ学ばなくてはいけないことばかりですが。）

その中で、今発表の中で便利に感じた機能については「Rubyのバージョン」が担保されていることでこそ使えるものであることを再認識しました。
（例：RBSはRuby3.0から導入されたもののため、バージョン3.0未満では使用できない）

セキュリティの面でも、機能面でもバージョンアップ対応の重要性を再確認できたため、バージョンアップ対応への工数を割くために他タスクの削減、作業の効率化をもっと積極的に取り組まなければと感じました。

また、Rubyコミュニティに触れたことで、ここにいる人たちは「楽しく交流しながらも、その裏で圧倒的に勉強している」方達なんだと感じました。
そんな経験豊富なエンジニアの方や自分と同じような若手エンジニアの方と話をする中で、将来のキャリアや仕事への向き合い方、成長に対するアプローチなど、さまざまなアドバイスをいただけたのも印象に残っています。

これからもこのようなイベントを通して、他社のエンジニアの方と情報交換をしていくとともに、それらの知見を個人、チームの成長のために発信していけたらと思います。