シャイニーエクササイズ*1で健康。なおすけです。
タイトルの通り、Webの記事を書きました。
RubyKaigi 2022 キーノートレポート
というわけで、最終日最後のセッションであるAlan Wu氏のキーノートレポートを執筆しました。
先日のRubyKaigi 2022参加記に書いていた
最後のキーノートについてちょっと記事を書くんですが、内容が難しくて泣いてます。
というのはこのことだったのでした。
ツイートにも書きましたが、言いたいことはまとめに全て書いたので、そこを読んでいただければと思います
なんでかいたの
Ruby好きな人が集うSlackワークスペースであるruby-jpに、RubyKaigiのことを話す #rubykaigi というチャンネルがあります。
そこで、RubyKaigi 2022前の日くらいに松田さんが大募集と書いていて、残り1枠がなかなか埋まってなかったので「やってみたいです!」と手を挙げたのが理由です。
久しぶりのRubyKaigiだったし、なにかアウトプットしたいなーと思ったので、タイミングがグーでした。
3日目担当となった経緯
キーノートが3セッションあって、各々どれを担当するかは編集さんと直接やり取りでワイワイと決める感じでした。 前日夜にその会話が行われていたのですが、ワタクシは連絡開始が遅れた*2ため、3日目担当となりました。 当然このときにはそんな難しいセッションだとは思ってなかったですよね。
執筆の流れとか与太話
そもそもセッションが英語であり、記事に掲載する写真も必要ということで、あらかじめ講演は録画をしていました。 結果的にこの選択は大正解で、この録画がなかったらおそらくレポートは今も公開されていなかったと思います。
執筆期間としては、たまたま夏休み的な有給を取得していたのもあり、09/19〜09/23の1週間でまず初稿を書きました。 まず内容を理解するのに2-3日かかり、そこから文章を書き出すのに2-3日、みたいな感じです なお、この時点ですでに難しすぎて辛くなって、日に日に知能が下がっていく様子が観測できます。
ブログ記事書くのにrubykaigiの写真眺めてたら食い物の写真大量に出てきてセルフ飯テロキマった
— SETSU-NAOSUKE BEAT (@naosuke2dx) 2022年9月17日
あーそういうことね、完全に理解したわ(わかってない)
— SETSU-NAOSUKE BEAT (@naosuke2dx) 2022年9月18日
わかったことがある。メシ食わないと腹が減る
— SETSU-NAOSUKE BEAT (@naosuke2dx) 2022年9月22日
執筆中、ずっと録画を見ながらでやっていたのですが、そもそも英語が苦手な上にホールの反響が重なって、聞き取れない部分も多くかなり辛かったです。 ちょうど執筆中に、OpenAIがWhisperという書き起こしツールが公開したため、動画から音声を抽出し、それ食わせて文字起こしをしてGot kotonaki。 Whisper、かなり正確に文字起こしをしてくれたので非常に助かりました。
この時点では、シンプルに講演の内容を書き出しただけ、という感じでした。 解説に寄せるか悩んだものの、1週間セッションについて考えまくっていたせいで完全に行き詰まってしまったため一旦提出して様子見という方向で一旦入稿。
9/26くらいに初校が上がってきたものの、脳のキャッシュがクリアされていないためしばらく寝かしてました。
1週間くらい空けて改めて読んでみると、そもそも難易度が高すぎる記事になっていたため、解説を入れたテイストにするように書き換えることにしました。 なお、週末に予定があったためこの時点で公開日の延期を依頼*3。 その後、3連休で解説を入れたり例を入れたりして出来上がり、といった感じでした。
いやー、難産だった。
参考になったページ
記事を書く上で、特に以下のページを参考にしました。もし記事を読んで、YJITとかそもそもRubyの処理系について興味を持った方がいれば参考にしてください*4。
YJIT周り
- YJIT: a basic block versioning JIT compiler for CRuby | Proceedings of the 13th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages
- YJITについてSIGPLANで発表された論文です。YJITの概観をさっくり知るのに良かったです
- YJIT - Building a new JIT Compiler inside CRuby by Maxime Chevalier-Boisvert - RubyKaigi Takeout 2021
- Maxime Chevalier-BoisvertさんのRubyKaigi Takeout 2021の発表です。YJIT論文をベースにしているため、同じくYJITの概観を知るのに良かったです
- Simple and Effective Type Check Removal through Lazy Basic Block Versioning
- YJITで採用されたLazy Basic Block Versioning(LBBV)の提案論文です。LBBVってどういう挙動してるんと気になったときに読みました
- Ruby が YJIT でなんで速くなるのか? Lazy Basic Block Versioning をサクッと理解してみた - estie inside blog
- LBBVの論文を解説したブログ記事です。最終的には論文を読んだのですが、日本語で雰囲気を掴むのに非常に助かりました
Ruby処理系周り
その他
記事を書いてどうだったよ
これまでRubyの処理系周りは、なんとなく記事を読んでなんとなくわかったつもりになる、みたいな感じで過ごしてきました。 この記事執筆は、YARV以下の普段Rubyを使う上でほとんど意識しないところを真面目に調べたり考えたりする必要があるので、非常にいい勉強になりました。
興味が出てきたので、ちょっと古いですが↓の本を買いました。また読んでいきたいと思います。
Acknowlegement
今回の記事執筆において、記事のレビューやYJITのディスカッションなどで友人の bakaming が協力してくれました。感謝。
*1:https://asobistore.jp/content/283gym_2022/
*2:ちょうどそのやり取りが始まった頃は新東名を爆走してました
*3:もともと10/7あたりに公開予定だった
*4:本来は記事内に書くべきなのですが…