Rubyの型チェッカーSorbetのRBIファイルの出力機能について調べている

Rubyの型チェッカーSorbetのドキュメントを読んでいる。今回はrbiファイルの出力機能について。

https://sorbet.org/docs/rbi

srb init(2回目以降は srb rbi update)でプロジェクト内のRubyスクリプトを辿ってrbi(RuBy Interface)ファイルを自動生成してくれる。budlerの設定を元に使っているgemのrbiも生成する。

rbiの実態はメソッドの実装の中身が空のRubyスクリプトで、静的チェックやコード補完のときはrbiだけを読み込むことで高速に型チェックできることを期待している。この辺りの思想は他のRuby型チェッカーsteepなどと同じ?ようだ。ただし型定義にはSorbetが独自に定義したsig関数を使っている。

自動生成の場合、rbiには明示的なクラス名やメソッド名は出力されるが、引数や戻り値の型、メタプログラミングで動的に生成されるものは出力されない。もっと詳細なrbiが欲しいときは手動でrbiを書くこともできる。また、gem内にgem作成者が記述したrbiが存在する、GitHubのsorbet-typedレポジトリに対応するrbiが存在する場合はそちらが使われる。

ソースコードに埋め込んだ型アノテーションから型定義ファイルを生成、sobet-typeとflow-typedなど、SorbetはJavaScriptの型チェッカーライブラリflowの影響を受けている印象がある(実際にflowを使っている訳ではないので勘違いかもしれないけど)。flowを調べるとSorbetがどのような着地点を目指しているか分かるかもしれない。