ken1flanのブログ

自己紹介・最近やってることなどを書くつもりです。

RubyKaigi 2023にオンラインで参加しました(2023/05/12)

RubyKaigi 2023の2日目にオンラインで参加しました。

rubykaigi.org

見た発表について少しずつ、思ったことを書きました。

How resolve Gem dependencies in your code? …Hiroshi SHIBATA

  • bundlerがどんなものか、とてもわかりやすかったです。
  • Ruby GemsとBundlerの差を縮めたり、速くしたり…
  • とても便利に使わせてもらっています :pray:

メモ - bundlerの話 - モダンなパッケージマネージャには、バージョンロッキングがある。 - これのおかげで、SBOM言われても怖くないですね…。 - これ、概要を知るのにめっちゃいいですね…。 - RubyGemsとBundlerに若干差がある…。 - あんまり問題にならないのかな…? - 統合したいんですね、やっぱり。 - 遅い - ファイルの中身を見ている - 無限ループに落ちやすい - 依存関係だとなりやすそう…。 - とある条件でビルドできない - 条件が複雑 - 毎年こうやって発表するのって、結構大事かも…。 

Implementing "++" operator, stepping into parse.y …Misaki Shioi

  • ++の実装過程がめちゃくちゃおもしろかったです。
  • 題材も++と身近に感じるものでしたし。
  • 最後にキレイにオチまでついて、完璧でした…。

メモ - ++ なんでないの?…たしかになんでないんだ…。 - Matzがオブジェクト指向のメソッドとして定義できないから。 - 使いたければ自分で入れるしかない ← 主題 - これを実装できれば、なんか手持ちのカードが増える気がします。よさそう。 - ん?でもこれ、Rubyのビルドがいるか…。 - 試行錯誤を発表してくれるのいいですね。 - コメント欄のi+++1とかイジワルというか、テストうまそう…。 - そもそも、+がいくつ使われても+なんですね…。1 ++++ 1 #=> 2 - オチまでつけてて、おもしろかった…。

Fix SQL N+1 queries with RuboCop …Go Sueyoshi

メモ - ISUCONだったら、rubocopのN+1を検出、自動修正はかなり時間短縮になりますね…。 - rubocop-isucon - GitHub - sue445/rubocop-isucon: RuboCop plugin for ruby reference implementation of ISUCON - synvertも - Module#prepend (Ruby 3.2 リファレンスマニュアル) - rubocopでactive recordのincludesを実装……。マヂですか……。

The Resurrection of the Fast Parallel Test Runner …Koichi ITO

  • 確かにローカルではCPUコアが潤沢だから、使い切りたい気持ちもあります。
  • うちの会社のもパラレルで動くように調整したくなってきました。

メモ - 1日86400秒 しかないw - 遅い方から直してく。 - 金を手に入れれば、並列テストができる。 - minitestは並列が可能…うらやましい…。 - rails7もminitestのパラレル機能を使ってる。 - rspec - parallel_test - test_queue - 対応しているテストフレームワークがえげつない…。 - テスト同士が独立できるようにしないとダメ。 - 遅いテストは設計の見直しの機会かも…? - 責務が多すぎるとか。 - コミット権を手にいれたw - CIも壊れてた…。 - 発表の中で利用者を聞いて、なかったのでサポート外に…。 - 一時的にメンテナンスするけど、テストフレームワーク自体で並列化してほしい。 - もっといえば、それぞれテストフレームワーク作るのもアリかも?

Multiverse Ruby …Chris Salzberg

メモ - shioyama ← Salz(塩)berg(山) - Rubyでメソッドを共有するにはアーキテクチャを共有することに。 - 名前が永遠なので、どんどん混み合っていってしまう…。 - それでマルチバースなのか! - 匿名モジュール - Module.newして作る - 匿名モジュールって…Concernのテストを書くときに使ってるかも。 - Ruby3.2 - loadはコレ?? - Kernel.#load (Ruby 3.2 リファレンスマニュアル) - GitHub - shioyama/im: Isolated Module Autoloader for Ruby - これ、いいですね…! - マルチバースになれそう。

Eliminating ReDoS with Ruby 3.2 …Takashi Yoneuchi

  • 正規表現に関して、あまりパフォーマンスを考えたことはありませんでした。
  • 今回の発表で、少し勘所がわかったので、今後は気をつけようと思います。

メモ - 言語、セキュリティ、責任の分解点がテーマ。 - ReDOS - a+b*cd - aaaaaaaaaaaacdだとb*、cを試して戻るを繰り返す…。 - バックトラック - 確かに重そう……。 - 正規表現のパフォーマンス、あんまり意識したことなかったです。 - GitLabの修正方法 - プラットフォーム側の努力 - キャッシュなどで高速化 - タイムアウトの導入 - そもそも雑に正規表現をユーザから受け取らない…。 - レビュラーな正規表現を使え。

Optimizing YJIT’s Performance, from Inception to Production …Maxime Chevalier-Boisvert

  • うーん…むずかしかったです……。
  • その難しいことをきっちり取り組んでくれていると思うと、感謝の気持ちでいっぱいです。
  • せめて使いたい!と思いつつ、Elastic Beanstalkが3.0までしか公式イメージがなくて、いつもがっかり…。
    • Dockerにすべきかもしれません。

メモ - YJIT - もともとJITを研究されている方…! - 厳しい……ツイッターに頼ろう…。気になるコメントを拾って…。 - YJIT、MATLABJITから分岐 - JITコンパイラの実行している様子を見て分岐の最適化 - 改善のためのベンチマークの整備をしっかり準備してる - Ruby3.3のYJITはメモリ消費も実行速度もよくなる - 毎週アプリのレスポンスタイム見てるけど、これが速くなるのか…。 - elastic beanstalkのRubyイメージ、追従が遅いから…Dockerを入れるべきかなぁ……ううむ……。

おまけ

今日はアルクマでした。

#RubyFriendsがうらやましいかったので描きました…。

RubyFriendsがうらやましい

食べチョクさんがまたツイートで長野の名産品が当たるキャンペーン用2日目。海がないのにサーモンという不思議。

信州サーモン食べたい!

STORESさんのキャンペーンの2日目。今日はりんごジュースだったので、それで!

ピルスナーじゃなくてりんごジュースだよ?