RubyKaigi2023 Day1 視聴レポート

## RubyKaigi2023が始まりました！！！

待ちに待ったRubyKaigiがついに始まりました。
今年はRubyKaigiにオンライン参加として、オフィスでRubyKaigiを生中継しながらワイワイする会をやりました。
Qiitaとしてはスポンサーとして協賛、ブース出展しており、現地参加メンバーもいます。

https://zine.qiita.com/event/qiita-rubykaigi-2023-introduction/

1日目の参加レポートとして、メモ、感想等を投稿します。

## [Matz Keynote - RubyKaigi 2023](https://rubykaigi.org/2023/presentations/yukihiro_matz.html#day1)

- 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

https://twitter.com/dhh/status/1655076668787097607

学びの観点だけでなく、ネタもあり、色んな意味で面白かったです。
言語を実装した本人の言葉で歴史や想いが語られるので、響くものがありました。

## [Generating RBIs for dynamic mixins with Sorbet and Tapioca - RubyKaigi 2023](https://rubykaigi.org/2023/presentations/egiurleo.html#day1)

- 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](https://docs.ruby-lang.org/ja/latest/method/Module/i/append_features.html), [prepend_features](https://docs.ruby-lang.org/ja/latest/method/Module/i/prepend_features.html), [extend_object](https://docs.ruby-lang.org/ja/latest/method/Module/i/extend_object.html)の存在を初めて知った
- Controllerのhelper_methodの場合はより複雑
    - このあたり分からなかったので、動画が公開されたらもう一度ちゃんと見る
    - Rails内部でdynamic mixinが発生。そのnamespace?
    - Foreign Constants Listenerでgem内部でmixinが起きているかチェック?

前提で知らないことも多く、ちゃんと理解できていない部分もあるので、試してみたいと思います。

## [Make Regexp#match much faster - RubyKaigi 2023](https://rubykaigi.org/2023/presentations/makenowjust.html#day1)

以前記事で説明されていた内容も含んでいました。

https://techlife.cookpad.com/entry/2022/12/12/162023

Regexp#matchの改善については社内勉強会でRuby3.2の変更について取り上げたことがありました。

- Rubyの正規表現はパワフル
- 大いなる力には大いなる責任が伴う
- ReDoSについて
- 正規表現を書くときに気をつければ起きない ← これをチェックするツールを開発中らしい
- 正規表現マッチングの実装にメモ化を導入
- VMベースの正規表現エンジン
    - stateと結果、プログラムカウンターとポジション
    - 同じ状態、同じ位置なら必ず失敗するのでスキップ
- 未来: 正規表現エンジンをRubyで

参考で、 @WakameSun が以下の記事を投稿しています。

https://qiita.com/WakameSun/items/a54add23f2578a46ebed

どういう正規表現を作るとReDoSが起きやすいか知らないなと思いました。
正規表現の大いなる力を感じました。

## ["Ractor" reconsidered - RubyKaigi 2023](https://rubykaigi.org/2023/presentations/ko1.html#day1)

別記事にて周辺の内容も調べながらまとめました。

https://qiita.com/kyntk/items/463b0a5f824d3dcd5644

以下は簡潔なメモのみ

- Ractorがあまり使われていない
    - APIの難しさ、エコシステム、コード品質とパフォーマンス
- パフォーマンスがthe biggest problem
- 改善している点
    - Ractor.selectのコードを修正
    - ネイティブスレッド起因のパフォーマンス改善 M:N scheduler
- 今後
    - Ractor local GCの改善

## [Power up your REPL life with types - RubyKaigi 2023](https://rubykaigi.org/2023/presentations/tompng.html#day1)

https://github.com/tompng/katakata_irb

去年関連記事を投稿されていました。

https://qiita.com/tompng/items/bca1e40976ec4f2a71c8

@wataru86 が早速試してみたようです。

https://qiita.com/wataru86/items/574e290c2fafc7a3e0e6

- irbのメソッドチェーン補完が賢くない ＋ 補完がでなくなった
- katakata_irbは型を用いた補完
- 不完全なコードを補完
- メソッドチェーンをRBSで評価
    - 条件分岐なども
- IRBで補完
- 独自に補完と推論をやってる...すごい

デモを見て、最高！！！とテンションあがりました。
irbがどんどん便利になっていくのがワクワクします。

## [LT - RubyKaigi 2023](https://rubykaigi.org/2023/presentations/lt/)

どれも勢いがあって面白かったです。
5分で、理解した気にさせようとされましたが、いや、そんな簡単じゃないでしょ！笑 と思うものがちらほら…

- RubyVM::AbstructSyntaxTreeを使いながらRubyでVim拡張...!
- BINGOはプレゼンがうますぎた
    - flock、Ruby WASMのハマったところとその解決策w
- rubocop ruleの作り方興味ある
- parse.y を5分で...パワーがすごい
- rspec-daemonめちゃくちゃ良さそうなので調べて使いたい
    - https://zenn.dev/cumet04/scraps/31a8ffa90125ce
- RubyKaigi会場のネットワークの話も気になった

## 最後に

見たいのに見れないセッションが多すぎてつらい！！！
2日目も楽しみです！！！