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
120
手書き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
77
スクラム開発におけるベロシティの扱い
rhiroe
0
110
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.5k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Being A Developer After 40
akosma
90
590k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Rails Girls Zürich Keynote
gr2m
95
14k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Making Projects Easy
brettharned
116
6.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
We Have a Design System, Now What?
morganepeng
53
7.7k
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よりも正確なコードジャンプが行える
少しでも興味を持っていただけたなら 幸いです