#えむけーろぐ

間違った事を書いていたらやさしく教えてください

RubyKaigi 2024の準備(心構え系と技術系)

はじめに

来週、RubyKaigiに参加する。

rubykaigi.org

RubyKaigiに行くのは2018年の仙台以来。「沖縄行ったことない*1しめちゃ楽しみだー!」とか、「久々にRuby界隈の人たちに会えるのが楽しみだー!」とか思いつつ……。

今回、会社に諸々の費用を出していただいて参加する*2ので、それなりに準備をして臨もうかなと思っている。

まずはRubyKaigiとはなんなのかを改めて認識して心構えのベースを作る。その上で技術的な話、特にそもそもRubyがどう動いているかだとかどういうトピックがRubyKaigiで扱われるのかといったところをキャッチアップしていければと思う。

技術系の話は、Web上に記事や資料が存在しているので、それらをリンク・引用させていただきつつ、自分なりの理解を書いていくという感じの構成でいきたい。

心構え系

まずは、RubyKaigiに参加する上での心構え的なところから。

大前提抑えておくべきなのは、「RubyKaigiはプログラミング言語Rubyの国際カンファレンスである。」ということだ。「いやいや、そんなこといったら◯◯カンファレンスだって、プログラミング言語◯◯のカンファレンスじゃん?RubyKaigiはなにか違うの?」と思うかもしれない。

RubyKaigiで登壇しているのは、僕らのような「Rubyを使っている人たち」というよりは、「Rubyを作っている人たち」だ。当然、話される話題もRubyそのものの話が多くなる。僕を含め、Rubyを使っている人たちがよく理解できるものかというと必ずしもそうではない。むしろ、わからないことの方が圧倒的に多いはずだ。

昨年、RubyKaigi 2023の会期中に収録されたRebuild EP360でも、Rubyの父まつもとさんが同様のことをお話されている。というか、僕の文章自体、このエピソードで話されていたことや、後ほど紹介する松田さんの発表の受け売りだ。
※ 該当箇所は10:58頃。下記リンクはそのタイムスタンプ付きのURLになっている。rebuild.fm

というわけで、後ほど紹介させていただく「ふつうのWebサービス開発者がRubyKaigiを楽しむためのRubyの知識」にも書いてあるとおり、"予習した上で「わからないを楽しむ」"くらいの心構えで臨むのが良いのではなかろうか。

最後に、先日参加したRubyKaigi 2024事前勉強会の基調講演スライドをリンクさせていただく。

初心者のためのRubyKaigi入門/RubyKaigi Introduction - Speaker Deck

これは、RubyKaigiチーフオーガナイザーである松田さんによるものだ。どういうことを考えてこのカンファレンスを作っているのかが書いてある。一読しておくとどんな心構えで参加すると良いかを考えるきっかけになるはずだ。

技術系

続いて、技術系の話。

僕らはふだんRubyでコードを書いて実行しているわけだけど、じゃあ具体的にどういうものがどう関わってプログラムを実行してるんだっけ?という概観をキャッチアップしておくと良いだろう。

RubyKaigi 2023開催に向けて書かれた下記の記事では、Rubyの処理系というものについて解説していただいている。RubyKaigiに行くと、MRI / CRubyやmruby、RubyVM / YARVそしてJIT / YJITといったキーワードを見聞きすることになると思うのだけど、それらが何者なのかを知ることができる。

qiita.com

zenn.dev

 

今回のRubyKaigi 2024に参加するにあたって追加でキャッチアップしておきたいものがあって、それがパーサとパーサジェネレータの話だ。

「Ruby処理系はRubyのソースコードを解析して構文木を生成する」というようなことが上2つの記事に書いてあったと思う。その役割を担うのがパーサである。パーサをつくるには、手書きで書くか、パーサジェネレータを用いて生成するかのふたつのやり方がある。

2023年12月にリリースされたRuby 3.3では、Prismという新しいパーサが追加され、また新しいパーサジェネレータとしてLramaが利用されるようになった。

www.ruby-lang.org

ここで自分は「Lramaというパーサジェネレーターによって、Prismがつくられたってこと?」と思ってしまった。実はそうではないのだが、同じような疑問を持つ人は少なくないようで、Twitter / Xを「Ruby Prism Lrama」で検索するといろいろと出てくる。自分がわかりやすいなと思った解説ツイートがあったので、こちらを引用させていただく。

Ruby 3.3において、構文木をつくるのは「Lramaによって生成されたパーサ」だ。一方、僕らRubyプログラマがRubyプログラム上で構文木を扱いたいとなったら、Prismというパーサを利用することができる。また、 --parser オプションを指定してrubyコマンドを実行してくれれば、デフォルトのパーサではなくPrismを使うこともできる、と理解した。

ここまでで、Lrama / Prismの役割や関係性をなんとなく理解した。そのうえで、それぞれについて解説されている記事を読んでおくと理解が深まりそうだ。

gihyo.jp

gihyo.jp

 

最後に、下記のスライドを読んでおくといい感じにRubyKaigi 2024の概観を掴むことができると思う。

ふつうのWebサービス開発者がRubyKaigiを楽しむためのRubyの知識 - Speaker Deck

これは先ほど紹介させていただいたRubyKaigi 2024事前勉強会で発表されていた資料である。このスライドでは、最近のRubyKaigiで扱われるトピックをまとめ、それぞれについて解説してくださっている。トピック解説のあとに、「該当する発表はこれです」という感じで紹介されているため、自分の興味と発表とを紐づけながらスライドを読むことができる。

おわりに

以上が、RubyKaigi 2024の自分の心構えと、予習したつもりの技術トピックだ。これによって、RubyKaigiで行われる議論を少しでも理解し楽しめると良いなと思う。

記事中で引用させていただいたみなさま、有益な記事やスライド、ツイートそしてエピソードをWeb上に残していただきありがとうございました。

この記事が、僕のようにRubyそのものについてキャッチアップしていく人の助けになれば幸いです。

*1:というか九州以南に行ったことないかも!

*2:5月入社の自分にも既存の社員さんと同じ扱いをしていただけた。大感謝。