はじめに
RubyKaigi 2022にオンラインで参加しました。
まつもとさんから、ブログを書くまでがRubyKaigiだと言われたので、聴いたトークの感想をひとことずつ書いていこうと思います。
1日目
Ruby meets WebAssembly
WebAssenbly、今まであんま気にしてなかったけど、発表を聴いて俄然気になってきました。
ちょっとサイズが大きいですが、JSのようにHTMLのscriptタグで書けたりするし、DOMの操作もできたりしてました。
Ruby3.2でサポートされるということなので、楽しみです。
Making *MaNy* threads on Ruby
MaNy
というのが100k以上のことだと聞いて、超びっくりしました。今までやってきたプログラミングとは全く違う書き方をする時代が来るかもしれません。怖いようなおもしろいような…。
Types teaches success, what will we do?
rbsファイルがないGemを必要になった人が書いて登録できるgem_rbs_collectionという取り組みと、かんたんな書き方の紹介をしてくれていました。このrbsファイルでエディタの補完が強力になったりするようで、自社プロジェクトで導入することも考えたくなるかも…そのときにGemにないrbsをプロジェクトで書いてもそれを渡せるとのことで、なかなかよさそうに感じました。
まずは自分のジョークGemに入れたりして体験してみねば…そんなふうに感じました。
Tools for Providing rich user experience in debugger
知らないうちにdebuggerが大変リッチになっていました。Chromeの開発者ツールで使えたり、VSCodeで使えたり…。でも一番びっくりしたのは…巻き戻しして実行できることでした。戻るって普通のデバッガにないと思ったのですが!
Towards Ruby 4 JIT
Rubyの高速化のためのJITの話で…Cやらアセンブラやら不案内なところでなんともいえませんが…着実に実験を重ねられて、少しずつWebアプリでの速度向上についても進展が見られているようで、大変期待しています。
TRICK 2022 (Returns)
TRICK、いつもながらヤバかったです…。1位はアニメーションのために自ら破壊したコードを誤り訂正で復元して実行するquine…。
2日目
Matz Keynote
コミュニティが大事だという話と、会議のファシリテーターとかissueのトリアージとか、そういう開発周辺のサポートが欲しいという話もされていていました。自分は全く得意ではないのでアレですが…いろんな貢献があるので、自分のできることをやっていこうと思います。
Do Pure Ruby Dream of Encrypted Binary Protocol?
ラクマさんの参加レポートでQUICの話をしていたのだということを思い出し、QUICとはなんぞやというのをQUICをゆっくり解説(1):QUICが標準化されましたでざっくり理解しました…。
QUICはUDPに載っていて、UDPのデータはアプリケーション層がやることが多いので、Rubyで扱うこともある…ということでしょうかも。発表されていた感じではスピードに難があるようでした。JITが利きそうな気もするけど、その話していたっけかな…?
Make RuboCop super fast
RuboCopを爆速にするという話で、最近サーバーモードが追加されたそうです。簡単に試したのですが、たしかに一回起動しておくと次回以降めちゃくちゃ応答が速くなっていました。エディタのプラグインなどがより快適になりそうです…!
Method-based JIT compilation by transpiling to Julia
Rubyは動的言語だけど、大量のデータを繰り返し扱うときにその機構が性能のボトルネックになっちゃうので…それを抑制して速くしようということのようでした。Rubyの書き味でこういったことも書けるようになってくると、ちょっとありがたいです。
(Wantedlyさんの参加記を参考にさせてもらいました。)
How fast really is Ruby 3.x?
ログと加工をするfluentdで使ったときの速度向上について発表されていました。ここは確かにJITが効きそうですもんね。
Packet analysis with mruby on Wireshark - dRuby as example
WireShark、セキュリティの話をするときによく使ってました。おもしろいですよね…。途中でネットワークトラブルで聴けなくなってしまったので、YouTubeで公開されるのを楽しみにしてます。
Ruby Committers vs The World
番号指定パラメータの話が出てました。自分もあんまり_2
とか好きじゃないなぁ…。国分さんの言ってたit
も使えるようになると自分もうれしいかも。
3日目
error_highlight: user-friendly error diagnostics
error_highlightとか、普段の生活が地味に潤ってめちゃくちゃありがたい…のに、ウチ、まだ使えない…。
がんばります!
RBS generation framework using Rack architecture
型定義ファイルがありふれてくれそうな未来が見えて、よかった…。自分もちょっと使ってみよう。
https://github.com/ksss/orthoses
Let's collect type info during Ruby running and automaticall
実行して型情報を集める…。テストの実行で集めて…とかしたら、メンテナンスが少し楽に運用できるかも。
なんか、rbs、遠い話だと思ってたら、いろんな方法が提案されてて、すぐソコになってた感。すご!
Why is building the Ruby environment hard?
「何もしてないのに壊れた」じゃなくて「何もしてないから壊れた」
周りの環境が変わってくから。なるほど…そのとおり。
ウチもちゃんとついていかんと。
それはちゃんと見回るということだけど、今は広かったり、気づいてなかったりしたところもたまに出てきたりして、結構大変…。
徐々に整理して、粛々とやれるようにしていこ…。
The Better RuboCop World to enjoy Ruby
「RuboCopのルールの変更提案ができる人は少ない」はたしかに…。多くの人はそのまま従ってしまってコードを読みにくくしてしまうことも…。CIで止めちゃう絶対したがって欲しいと、改善の可能性を指摘する2人にするとかそういうのもたしかにありかもしんない。いろいろ考えられそう…。
Fast data processing with Ruby and Apache Arrow
Pythonのデータフレームのようなもので、Rubyっぽいものもできてきてだいぶ扱いやすくなってそうで、試してみたくなってきました。
https://github.com/heronshoes/red_amber
Fixing Assignment Evaluation Order
古くからある厄介な問題に対して、すごく丁寧に追っていって直してくれている様子がわかりました…。もう感謝しかありません 🙏
Ruby programming with types in action
自分のジョークgemにrbs足して、steepを使ってみてっていうのを一通り体験しよっと。
https://github.com/soutaro/steep
Stories from developing YJIT
全く意味がわからなかったのですが…YJITによってRailsが遅くなっていた原因を見つけつつあり、速くなってきている様子がわかりました。JITをONにする日が楽しみです。
やること
RubyKaigiに出て、刺激を受け、やるぞ!という気持ちになったので、ちょっと並べてみます。
kittenizerにrbsファイルを添付する
今回、とてもたくさんrbsの話を聴き、いろんな作成方法があり、いろんな投稿先があることがわかりました。手元にkittenizerというジョークGemがあるので、まずはこれにrbsを添付してみて、使い心地を確認したいと思います。
自社サービスのRubyを新しくしやすくする
RubyKaigiでいろいろ便利な新機能や検討中のものなどを見せてもらったのに…自社サービスのRubyが古いんです。最近ようやくterraformを入れたので、これを元に気軽にバージョンアップができる土台を作っていきたいです。
さいごに
RubyKaigi 2022のスピーカー・主催・スタッフ・スポンサーのみなさん、ありがとうございました。とても楽しく、刺激的な3日間でした!来年の松本も楽しみにしています!