10月2日、オンラインで開催された Reject Kaigi on Rails に参加した。Kaigi on Rails で採択されなかった方が発表するイベント。ツールはZOOM。参加者は19人。
内容
We can Hack Ruby
Hamada.rb の S.H さんによる発表。
コントリビュートしたいけど難しそう…
Ruby に貢献する とは
- Ruby を使うこと
- バンバン使う
- 欲しい機能があったら発信する
- バグの報告
- バグを直す、報告する
- bugs.ruby-lang に投げる
- Ruby Issue Tracking System
- テストの追加&修正
- WSL とか結構テストが落ちる
- ドキュメント整備
- ドキュメントがあちこちにあり、どれが合っているか判断しにくいことも
- C のコード読むのは辛い
- るりま(Ruby リファレンスマニュアル)に PR 投げるといい
労働力の提供
- 短期的な貢献はあまりよくない
- OSS への貢献は長期的なものがいい
- なので、無理をしないこと
- 楽しみながらやるといい
Ruby を Hack する
Ruby の大部分は C で書かれている。
例)Integer#succ
Integer#next (Ruby 2.7.0 リファレンスマニュアル)
Integer#integer?
Ruby で書かれているInteger#zero?
は一部を C で書くことで高速さをキープ
Ruby に貢献する方法はいろいろある。
だから、みんなで Ruby をよくしていこう!!
JSONシリアライザは何をしているのか
Kaigi on Rails チーフオーガナイザーの大倉さんの発表。プロポーザルを出したが採択されなかったとのことで。
- ActiveModelSerializer(AMS)
- fast_jsonapi
- jbuilder
なかなかいいのがない… → 作った!
Alba というシリアライザ。簡潔な DSL と高速な動作が特徴。
JSON シリアライザは何をしているのか?
答え:Hash への変換だけ
JSON への変換は JSON や Oj といった gem が高速にやってくれるが、基本的なオブジェクトしか受け付けない。
そのため、ActiveRecord などのオブジェクトは Hash に変換する必要がある。
Alba のソースコード解説
GitHub - okuramasafumi/alba: Alba is the fastest JSON serializer for Ruby.
Module#included (Ruby 2.7.0 リファレンスマニュアル)
Reject Refinements
Ruby にパッチを投げたりしている osyo さんの発表。Kaigi on Rails 本編も登壇予定。
〜ライブコーディング〜
using
が使えるのは、トップレベル or クラス定義直下。ダックタイピングは NG。
サンプルコードなど以下の記事に詳しく書いてある。
所感
こういう LT 会とかだと、自分のような初学者はついていけないことが多いが、今回は細かいコード以外というか大枠は理解できて面白かった。発表者のお三方は勉強会などで話したことがある方ばかりだったのも個人的にはうれしかった。
Ruby に貢献・Hack したい気持ちは前からあるので、Ruby Hacking Challenge in Hamada.rb にまた参加しよう。
JSON シリアライザの話は、「ないなら作る」というのがプログラマのあるべき姿だなと学んだ。自分も必要なものを作ったり、誰かが作ってくれた Gem や Ruby にコントリビュートしたりできるようになりたい。
osyo さんには以前 refine
について教えてもらったことがある。今回はライブコーディングもありわかりやすかった。普段使う機会は多くないが、面白い機能で奥が深そう。
Ruby で ActiveSupport の in_groups_of を実装する - Secret Garden(Instrumental)
明日は Kaigi on Rails。最近あまり Rails 触れてないけど、気合を入れて参加予定。
申し込み不要、上記サイトのリンクから YouTube で見ることができる。