gemのrbsどうする問題

最近は仕事でRBSを利用しているのですが、思うようにいかないことが多いです。

思うようにいかないことの一つが、gemの型定義です。TypeScriptで書かれたnpmモジュールのように、gemにRBSファイルも同梱されているといいのですが、残念ながらそういうことにはなっていません。

gem_rbs_collectionにrbsが存在するgemもあるので、それが使えるとだいぶ助かりますが、ないgemのほうが多い状況です。

なので、typeprofやrbs prototypeコマンドなどを使ってソースコードを解析して型を生成する必要があります。ただ、typeprofやrbs prototypeで生成しても、そのまま使えるとは限りません。生成してもエラーが出たら手で直す必要があります。

最低限でいうと必要な部分だけ手で書く・typeprofやrbs prototypeで自動生成ということになりそうですが、それだと、gemのバージョンを上げるときに型定義も追従するのが大変だったりしそうです。

結局、gem_rbs_collectionにコントリビュートして、rbsユーザーみんなでなんとかしていくしかなさそうです。TypeScriptがそうだったように、それが広まればいずれはライブラリ作者が最初からrbs対応込みで実装してくれるという状況になるのかもしれません。RubyKaigi 2022でそういったプレゼンをされてた方もいたようでとても励まされます。

仕事でシステムを作っているとテストコードだけでは不安なときがあります。なので、RBSを利用するのは諦めず、足りていないところにはコントリビュートするという気持ちでやっていければと思います。