プログラミング漫遊記

思ったことや、勉強したことをつらつらと。

RubyKaigi 2023 に行った

長野県松本市 まつもと市民芸術館で5/11 ~ 5/13まで開催された RubyKaigi 2023に行ってきたので感想を書いておきたい。

僕自身はRubyKaigiの現地参加は去年に引き続き2回目になる。去年は1割程度しか理解できなかったので去年より理解できるといいなーと思いながら参加した。

なお、会期中の出張費(宿泊費や交通費)に関しては所属先の永和システムマネジメントにご負担していただいています。ありがとうございます。

事前

RubyKaigiのスポンサーだったので社の企画の会議に参加したり、Rubyメソッドかるたの作成などをしていた。他にはぼっち回避のためにKyoto.rbに参加したり、RubyKaigiで出てくるであろう単語をおさらいしたりした。(YJITとかASTとか)

あと直接的な関係はないけど、研鑽Rubyのβ finalを7章ほど読んでおいた。(本当は全部読んでおきたかった)

Day 0

午前中は仕事して午後から松本に向かった。新幹線で名古屋まで出て、特急しなので松本へ。 新幹線の中でAtCoderをしていたら気持ち悪く成ったので特急しなのでは大人しくしていた。

この日はKeebKaigiなるものをやっていてキーボード好きが松本に集っていた。僕はキーボードには興味がないため参加しなかったのだけど、後からいろんな人に面白かったよと聞いて、動画を見たらこれまた面白い。「トリのAaronさんの動画は絶対見るべき」という話で見始めたのだけど、気づいたら全編見返していた。

https://www.youtube.com/watch?v=Lk3-5ceJz4Y

自分が普段使うキーボードに興味があるかと言われればそんなになんだけど、こうやって何か面白そうなことをしている人には興味がある。真剣にふざけている人はかっこいい。(もちろんふざけてない真剣も然り)

来年も開催されるなら行ってみたいなぁと思った。

Day1

これ以降は特に印象に残ったトークだけ感想を書いていくことにします。去年はトークは全部見た(もちろん裏番組は無理だけど)のだけど、今年は1,2個逃しちゃった。

The future vision of Ruby Parser

この日一番印象に残っていたトーク。金子さんのパーサーの話。 いや、正直難しくてところどころ理解できなかったけど、なんだか聞いた後会場がすごい熱気を帯びていたことを覚えている。

自分はメモをとりながら聞いていて、わからないところはキーワードだけでもメモっておいた。

パーサーとは何かから始まって、Rubyで解かなければいけない問題3つ(Usaiblity, Maintainerbility, Universal Parser)と初心者にもわかりやすいように全体地図が見えるように発表されていたのが印象的だった。

Rubyには4つのdoがあって、、、みたいな話をmatzがしていて柔軟性の点を評価していたのに対して、金子さんは「これはひどい」という話をしていたのが個人的には面白かった。視点が変わればなんとやらw

パーサーに少し興味が出てきたのでここらへんを読んで勉強していきたいと思った。 https://i.loveruby.net/ja/rhg/book/yacc.html

Bison id dead.

Make Regexp#match much faster

正規表現でReDos対策をした話。比較的馴染みがあって(ほんとか?)わかりやすかった。

Ruby正規表現はパワフル。それゆえの問題がマッチング時間の指数関数的爆発問題。 その爆発的な時間を利用した攻撃ReDosを対策した時の話をされていた。

結果、線形時間でマッチングできるように成っていてグラフが直線になっていてすごかった。

正規表現エンジンをRubyでかければいいなぁ」という今後の展望を話されていたけど、これがどういう意味なのかはよくわかってない。わかってないけど、ちょっとワクワクした。

線形時間かどうかを判定するlinear_time?メソッドも便利そうだから覚えておきたい。 https://bugs.ruby-lang.org/issues/19194

UTF-8 is coming to mruby/c

今泉さんのStirngのお話。舞台はMRI(CRuby)ではなく、mruby/c。

この発表を聞くまでmruby/c と mrubyが違うことすら知らなかったぜ😅

文字コードに知見がなく今までなんとなく使ってきた文字列だけどUTF-8を実装していないだけでちゃんと文字が数えられなかったりインデックスが取れなかったりすることがわかった。

内容はソースコードがあるのでとてもイメージしやくString初心者でも理解しやすかった。 いつも思ってるけど、今泉さんはStringの話になるととても楽しそうに話すのが印象的(String以外が楽しくなさそうという話ではない)でこの楽しそうな雰囲気が人を惹きつけるのだろうなと思った。C会場での発表は立ち見がが現れるほどの大盛況だった。

String#trが多機能という話は深く頷いた。AtCoderでちょっとトリッキーな使い方するときにtrメソッドを使うけどいつも忘れてるりまみている気がする。 普段は使わないかな。変換したいだけだとgsubとかに落ち着く。

Power up your REPL life with types

katakata_irbの話。

メソッドチェーンした時はif分での分岐にもコード補完が正しく追随してくれるという話。凄すぎる。なんか、全体的にさらっとお話されていたけど、ものすごく大変なんじゃないかなと思ったりした。

デモに見とれてメモ取るの忘れてたので詳細な内容を全然覚えていないのが悔やまれる。どうやって実現してるんだろ。あとで見返したい。

普段からREPLにはお世話になっていて、irbはnodeとかdenoとかのREPLと比べてもとっても使いやすいと思っている。これがirbで使えるようになったら嬉しいなぁ。

LT

弊社から送った銅鑼が大活躍していた。 どの発表も時間の短さから勢いがあってRuby 30周年のLTとかの雰囲気を思い出した。

BINGOの話が印象に残っている。

Day2

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

塩井さんの発表。

Rubyにインクリメント演算子++を実装する話。話というか物語で細かい部分(パーサーの話)がわからなくても楽しめる内容でした。

succメソッド使ったり+=と使ったりと色々試行錯誤してくのが面白かった。

Ruby++はもはやRubyではないので新しい名前が必要 → Ruby++

というオチが最高でいずれRuby#とかくるのかな。

この発表も普段から楽しそうに実装してるんだろうなというのが透けて見える良い発表でした。自分も何か手を動かさないとなと刺激をいただいた。

The Resurrection of the Fast Parallel Test Runner

koicさんの並列テストの話。

冒頭からロックな感じでRubocopの人と思われるのもなんなので違う話題でプロポーザル出したとのことだった。守備範囲が広くてすごい。

テストの高速化。お金で殴れたらそれが一番いいけど、そうでもないのが現場なのだろう。とても心に染みる。並列化をうまくやるしかない。

並列って言葉だけだとわかりにくいけど、スライドに図がたくさんあって、ワーカーが余っちゃうところとか理解しやすかった。働いていないワーカーをいかに減らすか。最初の方で出てきたコマンドrpsec -pで遅いテスト出せるの知らなかったので使ってみたい。

難しいところも多々あったけど、何回か発表見返せば理解できそうな感じだった。

Day3

Ruby Committers and The World

このトークがちょっと悔しくて、別の意味で印象に残っている。

去年はnumbered parameterで一つ目のブロックパラメーターにitを使うのはどうか?みたいな提案で周囲を巻き込んで議論していたのがとても面白くて印象に残っている。今年はなんで悔しい思いをしたのかというと全編デフォルトが英語だったからだ。英語がわからなさすぎて面白いんだろうなーという雰囲気だけしか味わえなかった。それでもところどころの話は字幕をみながら頑張ったのでこと後急激に疲れが出たのを覚えている。

Load gem from browser

Ruby WASMでいろんなgem を loadしたいというお話。

Day3から疲れ果ててメモを取るのを諦めたので記憶が怪しい。 ただこの話は去年のアドベントカレンダーで読んだことがあって、その続編だとわかって感動した。

https://qiita.com/ledsun/items/3f8ba1ee2699d546c18c

細かい話は覚えてないのだけど、WASMちょっと夢が広がるなぁと思った。

全編を通して

トークが中心なのはスポンサー巡りとかがあまりできなかったからだ。それでもクックパッドさんの冷蔵庫とかHelpfeelさんのハックスペースは印象に残っている。ハックスペースは居心地良さそうで、いつかここでモブプロ会とかしたいなぁ。

自分は1つのことにしか集中できない癖があって、トークもそれ以外も楽しんでいる人が羨ましかったりする。Twitterに投稿するのも結構集中がギリギリだったりする。来年はここらへあたり柔軟に楽しめるようになるといいなぁ。(でもトークが一番聞きたいのでここの集中力は落としたくない)

普段Rubyistとの交流がない自分にしては、会期中にたくさんのRubyistにも出会った(当社比)。フィヨルドブートキャンプ生で卒業してからアイコンだけ知ってる人などいろんな人が声をかけてくださってありがたい。他にも、たまに顔を出す程度の付き合いの人とも挨拶したり談笑したりできてよかった。来年を楽しむために今年はいろんなコミュニティに顔を出せたらと思っている。

Kaigi Effect

英語頑張りたい欲が最高潮に達した。会社で英語勉強したいと宣言していたらkasumi8ponが「TOEICの申し込み明日までですよ」と教えてくれた。ので、「えいや!」で申し込んだ。その時の様子。

学生時代は5教科で一番苦手だったのが英語で、こやつのせいで行きたい大学も色々変更せざるを得なかったわけだけど、その苦手意識と訣別する日が来たようだ。時間がかかるので焦らず取り組んでいく。

他にもKaigi Effectはある。Rubyメソッドかるたのメソッドの説明の校正中に Math.#sqrtが引数0を取った時の説明が不足していることに気づいたのでるりまに初PRを送って無事マージされた。

github.com

RubyKaigi 2023も自分の中では全力で楽しんだ。来年はもっと楽しめると思う。

オーガナイザー、スタッフ、スピーカー、スポンサー含めRubyKaigiに関わったすべてのRubyistに感謝します。