ごぐたんのブログ

ごぐたんのブログです。

RubyKaigi 2023に行ってきました!

2回目の参加でした! 非常に良い体験でしたので、印象的だった出来事やセッションを中心に振り返りたいと思います。

0日目

ありがたいことに弊社から4泊5日の旅程をお許しいただきましたので、今回はKeebKaigi 2023に参加する @kasumi8pon とともに前日入りをしました。

まず私たちを出迎えてくれたのは、松本駅Rubyist歓迎横断幕でした!わくわく感が高まります。このように地域との連携を密に開催されるのは、やはりRubyKaigiならではの特色なのでしょうか。今回のRubyKaigiでは、地域の飲食店で使える3000円分のバウチャークーポンが参加者に配られましたが、こういった丁寧な施策の一つ一つがRubyKaigi全体の体験を素晴らしいものにしているのだと感じました。

バウチャークーポンを使った飲食は確かに心地良かったです!こういった期間限定の施策って、現場の方々まで行き届いていなかったり(例えばクーポンを出したら「なんだこれ?」という顔をされたり)といったことが起こりがちだと思うのですが、どの飲食店でもスムーズに受け入れてくださりました。ささいな点ですが、こういった心遣いが浸透しているのも嬉しいですね。

1日目

想像以上のRubyistの多さに圧倒されました!!!昨年も現地とオンラインのハイブリッド開催でしたが、コロナ禍真っ只中につきどちらかと言えばオンライン寄りといった印象でした。しかし今年は会場にて圧倒的多数のRubyistを目の当たりにし、Rubyコミュニティのパワーを改めて感じ取りました。

Matz Keynote

Matzのブラックジョークを嗜みつつ、MatzとともにRubyの30年間の歩みを振り返るキーノートでした。調べてみたところ、私がRubyを書き始めたのは2019年4月でしたので、Rubyの歴史と比べるとまだまだひよっこ、私が知らないRubyの発展の経緯もたくさんありました。全体としては、Matzと熱心で優秀なRubyistたちによってRubyは発展を続けていて、それによって私は人生が救われるほどの恩恵にあずかっており、感謝してもしきれないということを感じました。前職をやめた後に出会った言語がRubyでなかったら、私はWebエンジニアになれていなかった可能性が高いです。

これは地球平面説信者のように頑なに型を書かないRubyを揶揄した言葉ですが、これからもMatzとともにFlat earth believerとして生きていきたい所存です。

なおこちらは私が書いたほぼ最古のRubyのコードです。歴史が感じられます。

Submission #5074887 - AtCoder Beginner Contest 086

# 整数の入力
a,b =gets.chomp.split(" ").map(&:to_i);

# 偶数か奇数の判定
if a % 2 == 1 && b % 2 == 1
  print("Odd")
else
  print("Even")
end

Make Regexp#match much faster

speakerdeck.com

ReDoS(処理に時間のかかる正規表現を用いた攻撃手法)の概要と、それを避けるためにRubyの内部実装を改善して多くの処理をO(N)まで落としたこと、今後の展望(処理に時間がかかる正規表現には警告を出せるようになるかも、DFAを用いた実装でさらに高速化したい)といった内容で、競プロerとしてかなりときめくタイプのお話でした。正規表現はオーダー数が読みにくく難しいケースがありますが、我々が意識することなく高速化の恩恵を受けられるのは実用的で助かります。Ruby 3.2にはRegexp.linear_time?O(N)かどうか確認できるメソッドが追加されているとのことで複雑な正規表現を描いた時には試したいと思います。

UTF-8 is coming to mruby/c

imaizumimr.hatenablog.com

UTF-8をfrom scratchでmruby/cに実装されるというお話です。私は文字コードには全然詳しくないですが、ストーリーや視覚的な工夫が随所に見られて引き込まれました(Before implementationからのバイト数の見分け方など興味津々でした)。人それぞれ興味が異なるのってめちゃくちゃ面白いですよね。満遍なくやろうとすると「やらなきゃ…」の後ろ向き思考になりがちですが、強みを伸ばすのって本当に大事だなと考えていました。

2日目

Implementing "++" operator, stepping into parse.y

speakerdeck.com

Not a parser expertとして拝聴しました!しおいさんのお話は試行錯誤を追っていく冒険感があって好きです(勝手にしおいメソッドと呼んでいます)。Integer#succエイリアスっぽく呼んでみたらどうだろう〜とか、Not a parser expertでも(全然分からないけど)入り込んでいける仕掛けがたくさんあり面白かったです。

Optimizing YJIT’s Performance, from Inception to Production

今回1番の感銘を受けたのがこちらのKeynoteでした。YJITにかけるShopifyの皆様の尽力が私の想像を超えており、Maxime個人の大学時代の研究まで遡ると数え切れないほどの年月とのことでした。技術的なことは雰囲気だけ(ベンチマークが難しいとかコンパイルの優先度の戦略があるとか)しか理解が及びませんでしたが、とにかく難しそうなことは分かりました。にもかかわらず、lazyな私たちのために簡単にパフォーマンスを改善できるように日々尽力されているとのことで頭が上がりません。

3日目

Ruby Committers and The World

Rubyの長期的な展望をなんとなく把握しつつ、コミッターの皆様がわいわいするのを見ることができるセッションです。話題が多岐にわたり、ほぼ全編英語とのことでかなり難しくはありますが、2日目のEN Keynoteと同様、コミッターの皆様の苦労話や日々の考えに直接触れられる機会というのはそれだけで貴重です。

Parsing RBS

speakerdeck.com

エディタが何もかもいい感じにやってくれたらとても幸せ、実演デモが興味深かったです。難解なところは「Soutaroさんのイギリス英語っぽい発音かっこいいな〜」と思いながらふわふわ聞いていたことを告白いたします。

イベントなど

公式的なイベントには

の3つに参加しました!いずれも素晴らしかったですが、特にDay 3の2つではRubyKaigi終了後の開放感もありコミュニケーションが捗りました。

RubyKaigi 2023 After Party sponsored by STORES

人がかなり多く会場が手狭だったのですが、料理とお酒はおいしかったですし、慣れたあたりでいろんなお話ができました。

@risacan に人生救われた人々の集いが発生したり、@imaharuTech と遭遇して共通の知人である @shifumin (私にとっては昔からのぷよぷよ友人)について語ったり、フィヨルドブートキャンプでお世話になった方々や @kasumi8pon が普段お世話になっているESMの方々とも話が弾みましたし、想像以上に楽しみました!!もしかしてこれがRubyKaigiの力なのか……?

RubyMusicMixin 2023

そして極め付けはこちらのクラブイベント。音ゲーマーなので爆音を浴びつつお酒を飲むだけで意味分からないくらい楽しくなってしまいました。しかもRubyistしかいないという異様な空間で、爆音のため人間の話す言葉は5%くらいしか分かりませんでしたがとにかく最高でした。pixiv本当に大好き。

松本のご飯とか

冒頭にも挙げましたが、松本を存分に満喫しました。とにかく街がオシャレでご飯がおいしいという印象です。また来たい!そして来年は沖縄!

#kaigieffect

英語をやるぞという人をたくさん観測しました!実は私も最近また英語に取り組んでいます。やはり人間同士の会話はAIによって代替することのできない価値のある体験だということで、意識的に英会話に振っています。そしてKaigi on Rails 2023に何か出してみたいなという機運もあります。やっていくぞ!

まとめ

ここに書き切れない素敵な体験が他にもたくさんありました!RubyKaigiに携わってくださった全ての皆様、本当にありがとうございます。Rubyコミュニティっていいな〜。最近、友人を2人フィヨルドブートキャンプに招待したのですが、より自信を持って勧めることができるようになりました。とにかくRubyに出会えて良かったです。