💡

gem_rbs_collection のコントリビュートを始めた経緯

2023/08/30に公開

ラブグラフ開発チームの関口です。

最近少しずつではありますが gem_rbs_collection という OSS にコントリビュートをしています。
OSS の開発に興味をもった経緯と、開発する対象がなぜ gem_rbs_collection なのか、この記事でまとめていきます。

コントリビュートを始めたきっかけ

世界中のエンジニアと技術を通して交流したい想い

RubyKaigi 2023 に参加し、世界中の Rubyist と交流しました。それが OSS コントリビュートに興味をもった最初のきっかけです。

世界中のエンジニアと Ruby を通じて交流を持てたことが大変嬉しく、もっとたくさんのエンジニアと技術を通じて交流したいと思いました。そこから今まで敷居が高いと思い、なかなか挑戦できていなかった OSS の開発に興味を持ちました。

エンジニアとして働きだしてからはずっと Ruby を利用していたので、Ruby に関連した OSS の開発をしたいと思っていました。 OSS の開発に興味を持ったのと同時期に RBS を勉強しており、 gem_rbs_collection という OSS を見つけました。

gem_rbs_collection についての詳しい説明は次の章に記載します。

RBSに対する興味

Kaigi on Rails 2022 や RubyKaigi 2023 などのセッションを見る中で RBS という技術に興味を持ちました。 RBS とは Ruby で型を利用するための機能を提供する言語です。 RBS を用いて Ruby で型を用いた開発が出来る未来にワクワクした自分は個人で学習を始めました。その過程で出会ったのが gem_rbs_collection です。

gem_rbs_collection とは主要な gem ごとの RBS ファイルをまとめたリポジトリです。
GitHub: https://github.com/ruby/gem_rbs_collection

gem_rbs_collection のおかげで、主要な gem の型定義情報を調べたり、型検査をすることが可能になります。しかし現状 gem_rbs_collection に登録されている gem の数はまだまだ少ないです。
RubyGems に登録されている gem の総数が 177,813 なのに対し、gem_rbs_collection に登録されている gem は 81 個しかなく、その差は圧倒的です。(2023/8/21現在)

Rails を用いた Web アプリケーション開発の場合、多くの gem を利用するので、 gem_rbs_collection に gem の型情報を増やすことで RBS を用いた開発が充実したものになっていくのではないかと考えました。
そのため gem_rbs_collection に貢献したいと思うようになりました。

貢献の方法と作成したプルリクエスト

gem_rbs_collection の貢献のやり方に関しては ふーがさんの RubyKaigi 2022 の登壇資料が大変参考になりました。

発表内容: https://www.youtube.com/watch?v=QK2XsIHAc9U
スライド:
https://speakerdeck.com/fugakkbn/types-teaches-success-what-will-we-do?slide=40

資料に述べられている通り gem_rbs_collection に型定義を追加するための方法は主に2つです。

1つは gem_rbs_collection 内に既に追加されている gem のメソッドに型情報を追加する方法。
もう1つは gem_rbs_collection に追加されていない gem を追加する方法。

私がこれまでに貢献した方法は前者の方法で、主に ActiveRecord のメソッドに対して型情報を追加しました。
小さな機能追加ではありますが、自分が作成したプルリクエストがマージされた時は大変嬉しかったです。

次の記事では、実際に開発を通して感じたことや今後やっていきたいことなどを述べていきます。
ここまで読んでいただきありがとうございました。

https://github.com/ruby/gem_rbs_collection/pull/385

https://github.com/ruby/gem_rbs_collection/pull/342

ラブグラフのエンジニアブログ

Discussion