RubyKaigi2023が始まりました!!!
待ちに待ったRubyKaigiがついに始まりました。
今年はRubyKaigiにオンライン参加として、オフィスでRubyKaigiを生中継しながらワイワイする会をやりました。
Qiitaとしてはスポンサーとして協賛、ブース出展しており、現地参加メンバーもいます。
1日目の参加レポートとして、メモ、感想等を投稿します。
Matz Keynote - RubyKaigi 2023
- Rubyの歴史を振り返りながら、Matzの気づき、大事にしてきたことが話されました
- 1993/2/24 Rubyという名前がついた (このときにはプログラムは無かった)
- 公開前のAlpha Releaseのフィードバックで do/endのブロックが追加された
- Communityに参加してフィードバックをしてくれる人がいる
- 英語で本を書いてくれた、Conferenceが開催されて呼ばれた。人とのつながりが今のRubyにつながっている
- Rails (主にDHH)により、マーケティングの大事さを知った
- DHHは炎上しているとガソリンを持っていくw
- DHHをネタとして扱っているところが面白かったw
- Ruby1.9 互換性が大事
- Ruby3x3 ビジョンを示すこと
- 1番人気じゃなくても、Rubyは価値を提供し続けている
- ChatGPTに型を推論させてみた。人間が型を書かなくても推論してくれると思っている
- flat earth believer...つらい...w
学びの観点だけでなく、ネタもあり、色んな意味で面白かったです。
言語を実装した本人の言葉で歴史や想いが語られるので、響くものがありました。
Generating RBIs for dynamic mixins with Sorbet and Tapioca - RubyKaigi 2023
- Tapiocaに追加された、gemのRBIを生成する内部実装についての説明
tapioca gem (gem名)
- Tapiocaの内部処理としてはQueue -> Pipeline -> IRという流れで処理する。
- PipelineはListerを組み合わせている
- Gemのメソッドを呼び出すと、その型も一緒に生成されてしまう
- 防ぐためにQueueとPipelineの間にCheckのレイヤーを作ってフィルタリングするようにした
-
Object.const_source_location
を用いて実装された場所を判定
- Dynamic mixinsのものをフィルタするようにした
- Dynamic mixin
- include, prepend, extendのこと
- これを行った時にも型が生成されるようにした
- include, prepend, extendをoverrideして処理を挟んでいる
- gemのmethedのdynamic mixinを検知
- Trackers::Mixin#register オブジェクトでトラッキング
- append_features, prepend_features, extend_objectの存在を初めて知った
- Controllerのhelper_methodの場合はより複雑
- このあたり分からなかったので、動画が公開されたらもう一度ちゃんと見る
- Rails内部でdynamic mixinが発生。そのnamespace?
- Foreign Constants Listenerでgem内部でmixinが起きているかチェック?
前提で知らないことも多く、ちゃんと理解できていない部分もあるので、試してみたいと思います。
Make Regexp#match much faster - RubyKaigi 2023
以前記事で説明されていた内容も含んでいました。
Regexp#matchの改善については社内勉強会でRuby3.2の変更について取り上げたことがありました。
- Rubyの正規表現はパワフル
- 大いなる力には大いなる責任が伴う
- ReDoSについて
- 正規表現を書くときに気をつければ起きない ← これをチェックするツールを開発中らしい
- 正規表現マッチングの実装にメモ化を導入
- VMベースの正規表現エンジン
- stateと結果、プログラムカウンターとポジション
- 同じ状態、同じ位置なら必ず失敗するのでスキップ
- 未来: 正規表現エンジンをRubyで
参考で、 @WakameSun が以下の記事を投稿しています。
どういう正規表現を作るとReDoSが起きやすいか知らないなと思いました。
正規表現の大いなる力を感じました。
"Ractor" reconsidered - RubyKaigi 2023
別記事にて周辺の内容も調べながらまとめました。
以下は簡潔なメモのみ
- Ractorがあまり使われていない
- APIの難しさ、エコシステム、コード品質とパフォーマンス
- パフォーマンスがthe biggest problem
- 改善している点
- Ractor.selectのコードを修正
- ネイティブスレッド起因のパフォーマンス改善 M:N scheduler
- 今後
- Ractor local GCの改善
Power up your REPL life with types - RubyKaigi 2023
去年関連記事を投稿されていました。
@wataru86 が早速試してみたようです。
- irbのメソッドチェーン補完が賢くない + 補完がでなくなった
- katakata_irbは型を用いた補完
- 不完全なコードを補完
- メソッドチェーンをRBSで評価
- 条件分岐なども
- IRBで補完
- 独自に補完と推論をやってる...すごい
デモを見て、最高!!!とテンションあがりました。
irbがどんどん便利になっていくのがワクワクします。
LT - RubyKaigi 2023
どれも勢いがあって面白かったです。
5分で、理解した気にさせようとされましたが、いや、そんな簡単じゃないでしょ!笑 と思うものがちらほら…
- RubyVM::AbstructSyntaxTreeを使いながらRubyでVim拡張...!
- BINGOはプレゼンがうますぎた
- flock、Ruby WASMのハマったところとその解決策w
- rubocop ruleの作り方興味ある
- parse.y を5分で...パワーがすごい
- rspec-daemonめちゃくちゃ良さそうなので調べて使いたい
- RubyKaigi会場のネットワークの話も気になった
最後に
見たいのに見れないセッションが多すぎてつらい!!!
2日目も楽しみです!!!