2024/1/27【オフライン】Kyoto.rb Meetup プロと読み解くRuby 3.3 NEWS をDeep Diveするぞ!
自己紹介
テンプレート
呼び名(ハンドルネーム or 本名)
好きな寺社仏閣 or 近所の寺社仏閣(任意)
普段なに書いているか?
今日参加しようと思った理由とか最近あったハッピーなお話
luccafort.iconluccafort(るっかふぉーと)
伏見稲荷大社は俺の庭
普段はマネーフォワードの技術広報をやってます。
Ruby3.3のキャッチアップがしたい
onk.icon onk (おんく)
西大路四条 (西院)
はてなでマネージャをやっています。最近は評価シーズンだったので FB と目標設定をしたためていた
Kyoto.rb 常連なので引き続き
まつださん
舞鶴(島根にいた?!)
C#やるかRailsで学生向けのシステム開発をやるかも
事務の書類とか日本語をいっぱい書いてる
rokudone.iconrokudone (ろくどね)
松尾大社とか、桂川の近くに住んでいます。
株式会社CaSyという会社で、最近は3カ月位かけてMySQLのバージョンを上げていました。
Ruby3.3をキャッチアップしに来ました!
CelloTAK (せろたく)
本名 吉田高士
太秦在住
仁和寺の庭が好きです。
去年の7月から未経験から東京の開発会社(BPS株式会社)に転職
去年9月の大阪Ruby会議でKyoto.rbの存在を知って参加させてもらいました。
sanfrecce_osaka.icon sanfrecce_osaka(もりつか)
大阪府枚方市(山田神社)
株式会社エンペイで Rails と Vue を書いてます
最近は Vue2 => Vue3 にあげてました
Ruby でわいわいしにきました
本編
ruby-lang.org のリリース文
NEWS ファイルとは
Ruby 3.3 は、言語機能の変更など、目立つ機能の導入はないのですが、内部の構造がいろいろとよくなっています。ぜひ使ってみてください。
Ruby 3.3 の代表的な変更は次のようなものになります(リリースノートから抜粋)。
* 新規に書き下ろされた Ruby のパーサーである Prism が導入されました
* Bison の代わりに、新たに開発されたパーサー生成器である Lrama を使うようになりました
* Ruby で JIT を実験的に記述するための RJIT が導入されました
* YJIT に多くの改善が行われました
* スレッドを軽量に扱うための M:N スレッドスケジューラが導入されました
別の連載
sanfrecce_osaka.icon 社内の OpenStruct 滅したい・・・
Object Shapeとは?
OpenStructなどで動的にクラスを生成したりすると性能が劣化する
メモリのアロケーションも含む
メモリアロケーション以外はなにがある?
キャッシュなどを行っているので高速化が見込める
例
code:ruby
class C; end; 10.times{o=C.new; 10.times{o.instance_variable_set("@iv#{rand(100)}", 0)}}
ObjectShape、ちょうど TechrRacho さんの記事があった
ここで提案されている Object Shape とは、「Ruby オブジェクトの形」を表現するデータ構造のことです。オブジェクトの形を表す情報として、「オブジェクトの持つインスタンス変数それぞれの名前」「freeze されているか」などの情報を持ちます。
これにより様々な恩恵があり、例えばインスタンス変数の取得をする際のキャッシュとすることで、これまでのクラス毎のキャッシュよりもヒットしやすくなり高速化になったり、様々なチェックの処理などをシンプルにしやすくできるそうです。実際に、一部のベンチマーク (継承したクラスインスタンスに対するインスタンス変数アクセス) では2倍程度の高速化になったそうです。
sanfrecce_osaka.icon Array#pack つかったことないなぁ
チケット見に行ったらジェレミー・エヴァンスだった
このメソッドは、Ruby で唯一 Encoding を増やすことができるメソッドでした。
onk.icon いろはを作ったときにビルド時に必要って話があったな
MatchData#named_capturesに symbolize_names キーワードが指定できるようになった
sanfrecce_osaka.icon symbolize_names という名前、Active Support の symbolize_keys とどっちがどっちかたまに間違える
onk.icon YAML, JSON と同じなので慣れた
sanfrecce_osaka.icon 1.8.0、2003年かー(まだ高校生だ・・・)
onk.icon シェルスクリプトでも $? 使うので整数で何も違和感無い気がするけど、Process::Status になってたんだな。気にしてなかった
code:ruby
irb(main):001> test 0 == 1
=> ""
irb(main):002> p $?
Refinement#refined_class が #target に名前変更された
ReDoS
すでに修正ずみ、さすがluccafort.icon
sanfrecce_osaka.icon TIme.new、rails 書いてると ActiveSupport::TimeWithZone を使うからなかなか使う機会に恵まれないなぁ
onk.icon RSS パーサ gem で引っかかった
sanfrecce_osaka.icon とりあえず社内のアプリケーションの Gemfile に利用している bundled gem をきちんと書く PR を最近出した
onk.icon Array#pack に書き換えている PR をよく見た
rails アプリケーションだと bootsnap がデフォルトで入っているから警告がでないことも多そう
sanfrecce_osaka.icon Prism、C実装だったのか(なぜかずっと Rust実装だと勘違いしてた)
sanfrecce_osaka.icon 外部コマンドを Ruby で実行する際の便利資料
lambda メソッドの lambda{ ... } 以外の利用はたいてい例外発生するようになった
sanfrecce_osaka.icon 出たー it
ブロック中での紛らわしい匿名引数の移譲が禁止された
sanfrecce_osaka.icon BuriKaigi のときの kaneko さんのスライド
次回開催に向けた memo
luccafort.iconPHP Lovers MeetupがOSS Gateを開催する
luccafort.icon遊びにいきたかったがそのとき香港にいるわ……
ふりかえり
Keep/Good
luccafort.icon時間通りにみんな参加していてえらい!
onk.icon 参加者多い!:tada:
最近うまく宣伝できてるのかなぁ。(大阪Ruby会議はそうですね)
luccafort.icon宣伝をうまくできてる感じはしないが登壇効果ですかねぇ? :think_face:
rokudone.icon 時間内にいい感じに終われた!
luccafort.iconいつもより参加者が増えた!
luccafort.icon開場説明と会場設営ちゃんとしたえらい!
onk.icon 最初に Wi-Fi 渡せたの良かったですね
luccafort.iconRuby 3.3のキャッチアップができたのでこれで社内イベントもバッチリできそう!
onk.icon 一人では読み飛ばしていたところもちゃんと読んだ (C API の差分とか)
luccafort.icon流し読みだったけどonkさんの補足でめっちゃ助かった
rokudone.icon ↑これ。実際一人だとあんまり読み切れなかったと思う
sanfrecce_osaka.icon onk さんが教えてくれる裏情報が面白かった
onk.icon インターネットストーカーなので……
luccafort.icon↑表現が面白すぎるでしょw
CelloTAK.iconちょっとは分かる部分があってよかった
luccafort.icon NoMethodError の表示形式が変わった の内容がよかった。業務でドヤ顔できるぞ!
rokudone.icon 範囲同士が重複しているかチェックする Range#overlap? が追加された がよかったです。
luccafort.iconやっぱりRubyは面白い
sanfrecce_osaka.icon 3時間はじっくり話せてよかった
luccafort.iconRuby3.3 のキャッチアップみたいな時間がかかるものを休日にやりきれてよかった。平日でちょっとしんどい。
onk.icon 3 時間は次回からも Keep っぽい
luccafort.icon適宜休憩できたのもよかった
Problem
sanfrecce_osaka.icon フィヨルドの Discord でアナウンスしてみたけどなかなか参加してもらえない(今日はフィヨルド内の別イベントがあったのもあったけど)
luccafort.icon主催者として一応ちゃんと読んでおいたほうがよかったなぁ。onkさん頼みになってしまった……。
onk.icon 例えば Universal Parser とは何かとかを知ってないと説明するの大変だったりしてるので、事前知識の差かもしれない?
onk.icon ギリギリまで Connpass に参加登録していなかった
luccafort.icononkさんは無条件で参加登録認定してるので問題なし!
luccafort.icon新しい人をどう巻き込む?どう連れてくるかが未だにわからない。
luccafort.iconBaseConnectさんに次回連絡してみる?
CelloTAK.icon 予習しとけばよかったかも → 「分からなかったら聞く」の方がいい
onk.icon たぶんもっともっと分かんなかった言葉があったと思うので、その場でもっと質問出てくると嬉しかったなー
Try
次回2月24日(土) 16〜19時 開催予定
るりま&るびまを読む会をやるぞ!
今後の予定
3月のKyoto.rbはOSS Gateをやるぞ!
4月は多分昨年と同じくRubyKaigi 前夜祭を開催するつもり。
5月RubyKaigi 2024報告会?