Typing in Ruby
RBS: Ruby 3 の型情報を扱う言語を始めとする基盤。Ruby 3 にバンドルされる。
TypeProf: 型注釈のない Ruby コードを型解析するツール。Ruby 3 にバンドルされる。現状の主機能は Ruby コードからの RBS スタブ生成。
Steep/Sorbet: Ruby の静的型検査器。型注釈を書く必要はあるが、Ruby で静的型の便利なプログラミング体験ができる。IDE での補完やドキュメント表示も。
TypeProf は「型注釈を書かない選択肢を Ruby に残す」ということを至上命題とした極端な設計になっている
型検査の速度を主要因としてSorbetを選択
機能比較
https://gyazo.com/4daa219facb6a3b297ecacaadde0ff36
https://gyazo.com/9bb858e47212ef1f56524f00d8f75289
3rd party gem
コミュニティでシェアされているRBIを使う
自分で書く
gem側で書いている型RBIを参照する
型生成
自分たちのコード、かつ動的に生成されるようなコードの定義を生成するpluginを作れる
Shopifyにメリットがなかったようで2023年1月にarchiveされたとのこと
静的に型を推論する
rbs prototype rb <foo.rb>
静的に型を推論する
rbs prototype runtime <foo.rb>
エディタ連携
RBS
メソッドから簡単なRBSを生成できる
RBSファイルがない時に作成できる
ドキュメントをhover等で表示できる
RBI
独自の機構で読んでくれる
2022年2月のまとめ
2ファイルの変更が必要になるのは煩わしすぎる
コードに書けるのはマジックコメントのみ