RubyConf 2021 - Gradual Typing in Ruby - A Three Year...
RubyConf 2021でのShopifyにおけるgradual typing in Ruby
https://www.youtube.com/watch?v=a3jfpSmikdg
Takeaways
static typingではなくgradual typingである、ということを強く意識
gradual typingはTechnical ChallengeでもあるがHuman challengingでもある
do not get in the way = この取組みがブロッカーにならないようにする
社内のdevelopersをcustomersとするプロダクトチームのように振る舞う
Tools
Sorbet
超高速
数万ファイルあるshopifyのコードベースでも型検査が25秒で完了する
tapioca
gemのRBI生成
spoom
カバレッジ計測
strictness level (sigil) が適切かどうかCIでチェック
rubocop-sorbet
rbi
tapiocaで使われている、RBIを生成するためのgem
Technique
typed: falseをスタート地点にすると良い
typed: ignoreにするとそのファイルで宣言している定数すら読み込まなくなり、その定数を参照する別ファイルでエラーになるため
QA
ランタイムチェックは?
本番以外(developmentとCIとステージング etc.)ではONにしている
漸進的型付けだから型付けミスると本番でユーザーに影響が出る
パフォーマンスペナルティもある
エディタ連携
今はVS Code連携に注力し、推奨している
https://sorbet.org/blog/2022/01/06/open-sourcing-sorbet-vscode
VimやRubyMineを使っている人もいるし、LSP関連がんばれば将来的には