Text
Page: 1
Sorbet撤退記
2019-07-04
表参道.rb #48
うなすけ
Page: 2
自己紹介
名前 : うなすけ
仕事 : 株式会社バンク (エンジニア)
インフラ寄りサーバーサイドエンジニア
Ruby, Rails, Kubernetes…
GitHub @unasuke
Mastodon @unasuke@mstdn.unasuke.com
Twitter @yu_suke1994
Page: 3
参加表明
GitHubが落ちるときの話
Sorbetをapplicationに導入して試してみる話
Page: 4
型
https://twitter.com/HolyGrail/status/
1143030647121780737
Page: 6
Sorbet
Sorbet is a fast, powerful type checker designed
for Ruby.
Built with 💜 at Stripe.
Page: 7
Sorbet in RubyKaigi 2019
https://rubykaigi.org/2019/presentations/jez.html
https://www.youtube.com/watch?v=odmlf_ezsBo
Page: 8
Sorbet was public released in GitHub
at 2019-06-20
https://github.com/sorbet/sorbet
Page: 10
やること
1. gem 'sorbet', :group => :development
2. 自明 bundle install
3. bundle exec srb init
4. bundle exec srb tc
https://sorbet.org/docs/adopting
Page: 11
bundle exec srb init → OOM Killer
Page: 12
bundle exec srb init → 大量の .rbi
$ ls sorbet/**/*.rbi | wc -l
471
Page: 13
bundle exec srb typecheck めっちゃ警告
$ docker-compose exec api bundle exec srb tc | wc -l
14826
Page: 14
We have CLI option!
$ bundle exec srb tc --typed=true
https://sorbet.org/docs/cli#overriding-strictness-
levels
Page: 15
We have configuration yaml!
# -- foo.yaml --
true:
- foo.rb
$ bundle exec srb tc --typed-override=foo.yaml foo.rb
https://sorbet.org/docs/cli#overriding-strictness-
levels
Page: 16
しかしこれは両立できない(現状は)
全ファイルの静的型解析を ignore
型注釈を書いたファイルは true 以上
ということができない!
↓↓↓↓
結果、全 .rb に対して # typed: ignore を書く?
Page: 17
末路
https://twitter.com/yu_suke1994/status/
1145998714533601280
Page: 19
理想
https://github.com/unasuke/github-notification-
reminder/commit/774205a
Page: 20
参考資料
https://sorbet.org
https://soutaro.hatenablog.com/entry/
2019/06/26/145305
https://speakerdeck.com/soutaro/an-
introduction-to-typed-ruby-programming