RubyKaigi2024 DAY3予習
RubyKaigi2024 DAY3(5/17)の発表について、超ざっくりと予習というか、こんな感じのお話っぽいな〜というのをまとめました(各トークの紹介文にちょっと補足したりした感じ)。
時間がなくてだいぶあっさりした内容になっています🙇♂️
Ruby Committers and the World by CRuby Committers
Rubyコミッターの皆さんがが壇上に上がって議論してくださる時間です!
今年はどんな話題が中心になるのでしょうか。
発表としてはパーサー絡みの発表が多い気がしますが、果たして・・・・?
YJIT Makes Rails 1.7x Faster by Takashi Kokubun
最新のYJITがどのようにRubyを最適化しているかについてお話いただけるようです!
現状Railsbenchにおいて1.7%, Shopufyの本番環境でも17%スピードアップしているとのことです。
実アプリでもはっきり効果が出ているのですね。
すぐにでもYJITを有効化したくなりそうです!
参考
gihyo.jp | Ruby 3.3 YJITのメモリ管理とRJIT
How to implement a RubyVM with PHP? by memory
Rubyへの理解を深めるためにPHPを使ってRubyBMを実装するというお話のようです!
理解するためにVM作るという発想がすごいですね・・・。
VM実装の基本についても説明していただけるようなので、Rubyの仕組みの理解に役立てられそうです!
Turning CDN edge into a Rack web server with ruby.wasm by Kay Sawada
CDNのエッジサーバをRack webサーバーとして使用するというお話のようです!
エッジサーバというとフロント実装などの静的コンテンツ配信に使うものというイメージです。
タイトルからするとWASMを使うことでwebサーバーとしての機能を持たせて配信できたりするんでしょうか?
どのようにして実現されているのか気になります!
参考
Speeding up Instance Variables with Red-Black Trees by Aaron Patterson
red-black tree cacheの導入によってインスタンス変数のキャッシュミス時の処理が高速化されたというお話のようです!
red-black treeは赤と黒の2色のノードを持つ二分木で、各操作の最悪計算量が比較的小さいという利点があるそうです。
わからない・・・けどインスタンス変数まわりの処理が高速化されたことについて聞けるみたいです。
Aaronさん日本語で発表してくださるんですね!理解が難しそうな内容っぽいのでありがたいです・・・!
参考
Using "modern" Ruby to build a better, faster Homebrew by Mike McQuaid
HomebrewがmacOSのすごく古いRubyに縛られていた話、そして今後Homebrewを改善していく計画についてお話ししていただけるようです!
HomebrewってRubyで作られてたんですね・・・知らなかった・・・。
より早く動作してくれるようになったら嬉しいですね!
Homebrewの歴史的な部分についても聞くことができそうです!
JRuby 10: Ruby 3.3 on the Modern JVM by Charles Nutter
JRuby10で、最新のJVMの機能とRuby3.3の機能を取り込もうとしているというお話のようです!
Jrubyの存在は知っているのですが、CRubyに対してどのような違いがあるのかは全然知りませんでした。
どうやら、JVM上で実現されていることでJavaのライブラリとの統合がサポートされていたり、並列性や従来から存在する高速なJITなどが特徴的なようです。
いつも使っているCRubyとは異なるRubyの一面を知ることができそうです!
参考
ERB, ancient and future by Masatoshi SEKI
ERBのこれまでとこれからということで、25年前(!)にERBを設計された時に考えていたことなどについてのお話のようです!
私自身はRailsのviewでERBを使ってましたが、最近はフロントエンドはJSのフレームワークを使うことがほとんどで、ERBはめっきり使わなくなっています・・・。
と思ってましたが、よく考えたらconfig/database.yml
とかでも使ってるし、Rails使ってる以上は少なからずお世話になっていますね!
ERBがどんな思想で設計されたものなのか、ぜひ学んでみたいです。
参考
Qiita | Railsに入る前にしっておきたいERBとActiveRecordのこと
From LALR to IELR: A Lrama's Next Step by Junichi Kobayashi
Lramaの実装と、パーサがどのように生成されるのかをお話しいただけるようです!
parse.yの中でParserとLexerが密結合しているという問題があって、LramaはPSLRというアルゴリズムによるパーサを生成することでそれを解消しようとしているとのこと。
その前提条件として、IELRというアルゴリズムによるパーサ生成が必要となるそうです。難しそう・・・。
LRパーサーは左から右に読み進めていく方式のようで、なんとなくコードの解析方法として直感的な感じがするなぁと感じます。
このLRという方式の中に、さらに細かくいろんな種類があるようです。
参考
永和システムマネジメント | parse.y を読み解いて、Ruby の文法を理解する
LL LR SLR LALR CLRなどややこしい 構文解析のアプローチ
wikipedia | LR parser
Ruby and the World Record Pi Calculation by Emma Haruka Iwao
100兆桁の円周率計算の世界記録を更新(!!)した際、その漠然とした目標をどのように実行可能なタスクに分解したのか、またベンチマークのためのスクリプティングテクニックについての発表のようです!
凄すぎてイメージが湧かない・・・
ただ、スケールは違くても内容は現実的にとても役立ちそうです!
参考
Google Cloud | Google Cloud 上で 100 兆桁の円周率を計算
GitHub | GoogleCloudPlatform/pi-delivery
Finding and fixing memory safety bugs in C with ASAN by KJ Tsanaktsidis
RubyとGemのビルド時に、Address Sanitizerを使って無効なメモリアクセスを検出して安全にバグを発見する方法についてのお話のようです!
Address Sanitizerは2日目のメモリリークに関する発表にも関わってきそうです。
アプリ開発においてセグフォとかが発生すると思考停止してしまうのですが、そんな時に役立てられるお話が聞けるかもしれません。
Porting mruby/c for the SNES (Super Famicom) by Ryota Egusa
mrubyの軽量版であるmruby/cをスーファミに移植して動作させたというお話のようです!
mrubyの軽量版ってPicoRubyの他にもあるんですね・・・。
PicoRubyと同じく、ワンチップマイコンでも動作させされるものとのことです。
発表の中では実際のスーファミを使ったデモも予定されているようです!たのしそう!
参考
Ruby Mixology 101: adding shots of PHP, Elixir, and more by Vladimir Dementyev
Rubyにない構文を追加しようというお話のようです!
メタプログラミングのお話な気がします。
他の言語を使っていると、確かにこの構文がこっちにもあればいいのに・・・ってなるのわかります。
とはいえ私はほぼRubyとJavaScriptしか触ったことがないので、この発表ではRubyにはないけど他の言語にはある便利な機能を学ぶことができそうです!
Make Your Own Regex Engine! by Hiroya FUJINAMI
小さい正規表現エンジンの実装を通して、正規表現マッチングの仕組みについて解説していただけるようです。
2日目にも正規表現とUnicodeの発表がありましたが、こちらはより「実際にやってみよう」感が強そうで、マッチングの仕組みを理解しやすそうです!
チュートリアルもあるとのことで、こちらもあとでチェックしておきたいと思います!
Using Ruby in the browser is wonderful. by Shigeru Nakajima
ruby.wasmを使用したプログラムを書く中で、欠けている機能を見つけてruby.wasmに実装したお話をしてくださるようです!
どんな機能をどんなふうに実装したんでしょうか?OSSで必要な機能を自分で実装できるのかっこいいです。憧れます。
中島さんは以前同じ会社で大変お世話になった方なので、個人的にも発表を大変楽しみにしています!
The state of Ruby dev tooling by Vinicius Stock
Rubyの開発ツールについて、現在の全体像の分析と、今後どうなっていくのかというお話のようです!
多分今いろんなツールがあって、自分が知っているのはごく一部だと思うので、こうした全体感をを知れる発表はありがたいです!
他のエコシステムとの比較についても触れるようなので、参考になるお話が聞けそうです。
Matz Keynote by Yukihiro "Matz" Matsumoto
今回の締めくくりはMatzによるKeynoteです!
どんなお話になるのかとても楽しみです。
(ちなみに、先立ってオンライン開催されたSTORES.rb RubyKaigi 2024 直前スペシャルで、「NameSpaceの話には触れる」とおっしゃってました!)
予習の振り返り
最後は駆け足になってしまいましたが、全トーク一通りチェックできました!
今回はパーサーがらみのトークが多そうですね!
また、WASMの話題も増えてきて、実用性がでてきているのかなと感じました。
一方でLLM関連が一つしかなかったのは少し意外でした。
あとゲーム機に移植するとか、趣味的な発表も結構ありそうでしたね!
どの発表もとても楽しみです!🙌
しかし3ラインもあるので一人で全部チェックしてくのはなかなか厳しかった・・・。
次やる時は誰かと一緒に分担してやりたいと思いました。
Discussion