Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
手書きRBSの運用事例
Search
Ryosuke Hiroe
June 14, 2024
2
89
手書きRBSの運用事例
Ryosuke Hiroe
June 14, 2024
Tweet
Share
More Decks by Ryosuke Hiroe
See All by Ryosuke Hiroe
rbs-srcを用いたgem_rbs_collectionへのcontribution.pdf
rhiroe
0
53
スクラム開発におけるベロシティの扱い
rhiroe
0
93
Featured
See All Featured
A Philosophy of Restraint
colly
203
16k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Done Done
chrislema
181
16k
Documentation Writing (for coders)
carmenintech
65
4.4k
Building Adaptive Systems
keathley
38
2.3k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Designing Experiences People Love
moore
138
23k
How GitHub (no longer) Works
holman
310
140k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
Transcript
2024/06/14 廣江 亮佑 手書きRBSの運用事例 @rhiroe
2024/06/14 廣江 亮佑 自己紹介 名前: 廣江 亮佑 拠点: 岡山県 趣味: 原神、雀魂
GitHub: @rhiroe X: @buta_botti
RBS、書いてますか?
Maybe…
RBSを「書いている」人はおそらく少ない TypeProf RBS Rails Sord RBS prototype
目次 • 手書きという選択 • 厳密な型定義 • CIでの型検査 • 開発体験の向上 •
困りごと
1 手書きという選択
RBSを手書きする
前提として、型定義の自動生成には肯定的です
だって楽だから
ただ正直、自動生成での型定義の精度はまだ低い
YARDから型生成?
表現力に限界がある
Rubyで型のある開発がしたい!
RBSを手書きすることで、より正確な型定義が行える 正確な型定義により、コスト以上に開発体験が向上する …という仮説
それと、興味
2 正確な型定義
None
None
TypeProf
TypeProf
None
None
None
None
None
untyped💔
None
None
None
None
None
❤
(注)paramsの正確な型を書くには、現状のActionController::ParametersのRBSがまだ不十分という問題を抱えています
3 CIでの型検査
Steep
None
デフォルト設定
None
None
None
None
None
None
None
❤
4 困りごと
ライブラリのRBS定義はまだ不十分
ライブラリのRBS定義はまだ不十分
ライブラリのRBS定義はまだ不十分 • gem_rbs_collectionにPRを出す • 自前のRBS定義を追加する • steep:ignore コメントを使う
ライブラリのRBS定義はまだ不十分 • gem_rbs_collectionにPRを出す • 自前のRBS定義を追加する • steep:ignore コメントを使う 💪
None
まとめ
開発体験は向上したの? • Steepの多くの項目で型検査を行える ◦ CIでの型検査により、多くの潜在的なエラーに早期で気づける ◦ デッドコードの判定が容易(メタプロが少ない) • RBSを手書きすることによりインターフェースへの意識が高まる ◦
より設計に気を遣うようになり、コードの質が上がる ◦ RBSがインターフェースのレビュー対象として使えるので便利 ◦ RBSフレンドリーな設計により、自然と値オブジェクトのようなものが生まれる • VS CodeのSteep拡張機能が超便利になる ◦ エディタ上に正確な型情報が表示される ◦ Copilotとは異なり、確実に存在するメソッドで補完が行われる ◦ 型検査に引っかかるコードを書くと、エディタ上で赤く知らせてくれる ◦ Ruby LSPよりも正確なコードジャンプが行える
少しでも興味を持っていただけたなら 幸いです