TL;DR
タイトルの通りだけど開催したよという話。
最初はRuby 3.3 のRelease Noteを読みながらわからないところや気になったところを深掘りしていこう……と思っていたのだけど id:onk さんが「"プロと読み解くRuby 3.3 NEWS"があるんだからそっちのほうがよくない?」と教えてくれて変更したんだけどこれがめちゃくちゃよかった。 今回のMVPを上げるなら間違いなくこれ。
いつも通り、イベント中のログはscrapboxにおいてある。
宣伝
どうせ、最後に宣伝おいても読まれないと思うので最初に宣伝です。 今週の水曜に東京出張してマネーフォワードの東京オフィスを使ったイベントを開催します。
ソフトウェア開発の現場でチームとしてソフトウェアデリバリーを如何に速くするか? どのような工夫や悩み、そして未来の展望を持っているかをFindy Team+ Awardを受賞した弊社 + グループ会社共催で開催します。 採用とか認知向上とかも目的ではあるんだけど、個人的には中々相談しにくい組織のアウトプットを如何に向上させていくか?を起点に交流を加速させたいなと思ってます。 お悩み相談が一番懇親会で盛り上がるんや!!!
というわけなので参加できそうだなっと思った方はポチポチっと登録してもらえればと思います。 閑話休題。
最近のKyoto.rbの嬉しい変化について
相変わらず参加者は全盛期の頃の30名には遠く及ばないのだけど最近10名以下くらいの人数で行う勉強会のほうがやりやすくていいかもしれないと感じている。 今回参加してくれた方は自分を含め全員で6名なのだけど、以前来てくれた人、新しく参加してくれた人といい形で新旧メンバーが織り混ざっている気がする。 またリピート率が比較的高いこと、ドタキャン率が異様に低いこと(参加率がほぼ100%なんだけど東京では考えられない)、一定の割合で新規参入者の方がいることなどなどポジティブなニュースが多い。 以前はonkさんとぼくの2人しかいない、というようなこともザラにあっただけにこの変化は大変うれしい。
なによりも全てのコミュニティで歓迎すべき新規参入者される方が数ヶ月に1度いるというのも大きい。 こういうと初心者の方ほど「自分は最近Ruby/Railsを学び始めた初心者(ニワカ)なので……」と申し訳なさそうに卑下されることがあるが、コミュニティにおいて参加者の技術レベルはそこまで重要じゃない。
もちろん、技術レベルが高ければ高いほど高難度の話題ができるというメリットはある。 反面、会社や個人の技術スタック、これまでのキャリアの背景、興味関心が大きく異なるメンバーが集まるのだからハイレベルな話題を提供するのは意外と難しい。 企業内のイベントであればそういったこともできると思うが、さまざまな方が参加するコミュニティではよほど大手か参加者のレベルが一定上に高くないと開催の難易度が高くなりすぎてしまうと思っている。
「プロと読み解くRuby 3.3 NEW」で特に良かったところ
正直サッと目を通したくらいしかしていなかったのだが、思いの外変更点が多かった。 イベント時間を3時間半にしていたのだけど休憩をはさみながら読み終えるのにちょうどいい時間と分量だった。
以下は個人的に気になったり、面白いなと思ったり、プロダクト開発に影響しそうだなと思った変更点
- クラッシュレポートをファイルに保存する RUBY_CRASH_REPORT 環境変数が導入された
- クラッシュレポートをファイルで出力したいケース、稀にあると思うんだけど環境変数で指定できるの便利。
- Encoding#replicate が削除された
- こんなメソッドがあると知らなかったが存在していた理由、削除された理由どちらも納得感があり、勉強になった。
- 任意の Fiber を終了させる Fiber#kill が導入された
- むしろいままでなかったんだ?!とビックリしたが非同期処理はいつも思うけど難しいね。
- 匿名モジュールに仮の名前を付ける Module#set_temporary_name が追加された
おもしろポイントとして、クラス名っぽい名前を与えることはややこしいので禁止されています。
- 本文中にもあるけどこの仕様は面白かった。個人的にはこっちの仕様のほうがめんどくさくない?と思わなくもないけど確かに誤解の余地があるとなると……。
- アプリケーション初期化終了時に呼ぶ Process.warmup が導入された
- Range を逆順にたどる Range#reverse_each が追加された
メモリ上で配列に展開した上で、最後の要素からたどるもの
- いままで意識したことがなかったけどこうやって実装されているのかーと納得し、遅いと書かれた理由にも理解した。
- 範囲同士が重複しているかチェックする Range#overlap? が追加された
- 範囲同士が重複しているかチェックすることはままあって、その際に重宝しそう。
Range#overlap?
があると楽になる一方で余談のところは正直複雑すぎて絶対間違える人が出そうだなと思った。
- 範囲同士が重複しているかチェックすることはままあって、その際に重宝しそう。
- Refinement#refined_class が #target に名前変更された
- 名前を変更した理由が歴史的経緯なものを説明しており、学び。そういえば何かで書かれていたな……とぼんやり記憶を思い出していた。
- String#bytesplice がコピー元の部分範囲を指定できるようになった
- これといって使い道を思いついたわけではないが、いろいろイタズラできそうなメソッドで楽しそう。
- Time.new の引数の制限が厳しくなった
- これは業務に影響がでる可能性がある変更だなと注意してみていた。変更意図としては納得なので対象箇所に注意が必要そう。軽くプロダクトのコードをチェックするくらいはしておきたい。
- 名前解決が割り込み可能になった
- 普段関わりがないCの世界の話が多いんだけど、いろいろと難しいんだな……という気持ちになった。遠藤さん、お疲れ様でした。
- Random::Formatter#alphanumeric が使用文字種を指定できるようになった
- これ前職のときに出来なくて、ライブラリいれたか自作したか忘れたんだけど欲しかったやつだ!!!と個人的に盛り上がった。
- 無引数 it が警告されるようになった
- インターネット上でざわついた例のやつ。まあ影響がでかすぎるので何かしら大丈夫な実装をするだろうと思っていたけどその後の続報を追ってなかったのでちゃんと把握できてヨシッ!
- NoMethodError の表示形式が変わった
- 個人的には一番影響がありそうだと思ったポイント。
inspect
で展開されたときはいい変更だと思ったけどログにクリティカルな情報が出てしまうことなどがあったりしたのでコレはいい改善点
まとめ
今回のKyoto.rbは成功したなーと思ってる。 普通に楽しかったし、知らないことを知れたり、雑談もそこそこ盛り上がった気がします。
次回はすでに開催が決まっていて2月24日になります。 昨年、「るりま&るびま読む会を企画するって聞いたんですがいつですか?」と言われたまま、別のイベントなどに追われてしまったので今度こそ!というリベンジマッチです。
5月にRubyKaigi 2024が開催されるので、その前後4月と6月は前夜祭や後夜祭を企画しそう……となると以前onkさんとやるぞ!といってたOSS Gateが中々開催できなくなってしまうので「じゃあ3月にやりますかー」という話をしました。 3月はOSS Gate回になるんですが、まだ日程がFixしてないので、こちらもFixしたら早めにイベントページを公開しようと思います。
Rubyに興味がなくてもOSSにコミットしてみたい人はいるんじゃないか?という仮説の元企画しています。 もし好評だったら半年おきくらいで開催してもいいかな。
OSS Gateはサポーター枠5名、参加枠(ビギナー枠)10名くらいのこじんまりした回を想定しています。 あんまり人が多いとサポートしきれないのでな……。
もし、興味がある方はお早めに。 多分サポーター枠は先着、参加枠は抽選とかにするんじゃないかな。 上限を超えるほど人が来るとは思っていないけど。
ではでは。 また来月。
[追記]
以下は最近英語を頑張ろうと思ってるが、なかなか上手くいってないので乱心してTwitterに英語で一日のサマリーを投稿する練習をしている様。 難しい表現とかはいれてないし、多分文法的にむちゃくちゃとかって面もあるんだろうけど、英語投稿→翻訳→修正→翻訳を繰り返すのが中々楽しい。 楽しいというかそれっぽい文章になってるように見えるのでちょっとした成長や表現(文法や熟語)などをただ丸暗記するよりはやる気がでる。 ……ということで今回の催しとSTORESさんのブログに感謝をしたのでした。
yesterday i held #kyotorb event.
— luccafort (@luccafort) 2024年1月28日
kyoto.rb is local ruby commnunity, we open almost monthly.
I learn New feature into Ruby 3.3 by STORES Blog in event when we held yesterday.
thank you for your blogging.
have a good ruby day, happy hacking!https://t.co/UVce4GX9fX