久しぶりに Matz が参加したので函館でのイベントあれこれのオファーをしたり、Ruby のシンタックスで「これ結局どっちにすんの」というのを確認したりしていた。
あとは相変わらずの AI coding の話。今日はコードのコメントが嘘だった時に AI がそのコメントに騙される、とかコメントには日付を書くようにして、古い内容ですよ、とかそういうコンテキストを読み込むのを前提にしないとダメだよね、みたいな話をしていて「なるほどねー」ってなったりしていた。
コメントは全部消してコードの振る舞いだけを解釈させる、というのが未来としてはいいのかもしれないけどどうかなあ。半年くらい Claude をガリガリ使えるので色々試そうと思う。
午前は office hour でちょっとご飯を食べてからそのまま開発者会議へ。弾丸日程である。
https://bugs.ruby-lang.org/issues/21877
アジェンダ自体は書いてある通り、ってところだけど自分が最近取り組んでいる Ruby(+RubyGems) の起動を速くしたいんだよ〜という話をしていた。
https://bugs.ruby-lang.org/issues/21951
簡単に書くと今Ruby の起動が 80-100ms かかるとすると、Ruby 本体は10ms、RubyGemsは20ms、残りが did_you_mean などのエラー表示拡張の gem の時間ということがわかり、RubyGems の起動時間を 20ms から 18ms に超頑張るより、did_you_mean などを遅延ロードにした方が効果あるよ、と claude に言われてしまったのでなんとかできないか、とやってるやつ。
最初は単純に遅延ロードすりゃええやん、と思ってやってみたら DidYouMean.foo みたいなクラスメソッドを require しないで呼ぶというコードが割とあり、そういうコードが全滅しちゃうよね、とか prefork なサーバーで最初に全部読み込んでしまいたいよね、とか意外と考えないといけないことが多いなーとなったのが今ここ。
朝起きると k0kubun 君が作業をしていて「仕事するかな」という時間にはリリースされていた。
https://www.ruby-lang.org/en/news/2026/03/16/ruby-4-0-2-released/
ちょうど今回から all-ruby は GHA でイメージ生成するようにしたので workflow_dispatch を流す、rbenv は release スクリプトを実行、snapcraft は手でリリースの3つで終わり。だいぶ楽になってきたので最高。
とりあえず実績はできたので、all-ruby も次からは全自動イメージ作成にしようと思う。