Reject Kaigi on Rails に参加

10月2日、オンラインで開催された Reject Kaigi on Rails に参加した。Kaigi on Rails で採択されなかった方が発表するイベント。ツールはZOOM。参加者は19人。

内容

We can Hack Ruby

Hamada.rb の S.H さんによる発表。

  • みんなで Ruby に貢献しよう
  • みんなで Ruby を Hack しよう

コントリビュートしたいけど難しそう…

Ruby に貢献する とは

  • Ruby を使うこと
    • バンバン使う
    • 欲しい機能があったら発信する
  • バグの報告
  • テストの追加&修正
    • WSL とか結構テストが落ちる
  • ドキュメント整備
    • ドキュメントがあちこちにあり、どれが合っているか判断しにくいことも
    • C のコード読むのは辛い
    • るりま(Ruby リファレンスマニュアル)に PR 投げるといい

労働力の提供

  • 短期的な貢献はあまりよくない
  • OSS への貢献は長期的なものがいい
  • なので、無理をしないこと
  • 楽しみながらやるといい

Ruby を Hack する

Ruby の大部分は C で書かれている。

例)Integer#succ

Integer#next (Ruby 2.7.0 リファレンスマニュアル)

2.7 から RubyRuby を書ける。

  • Integer#integer? Ruby で書かれている
  • Integer#zero? は一部を C で書くことで高速さをキープ

Ruby に貢献する方法はいろいろある。

だから、みんなで Ruby をよくしていこう!!

JSONリアライザは何をしているのか

Kaigi on Rails チーフオーガナイザーの大倉さんの発表。プロポーザルを出したが採択されなかったとのことで。

有名な JSONリアライザ

  • 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 本編も登壇予定。

発表資料:refinements.md · GitHub

〜ライブコーディング〜

using が使えるのは、トップレベル or クラス定義直下。ダックタイピングは NG。

サンプルコードなど以下の記事に詳しく書いてある。

secret-garden.hatenablog.com

所感

こういう 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 触れてないけど、気合を入れて参加予定。

Kaigi on Rails

申し込み不要、上記サイトのリンクから YouTube で見ることができる。