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
130
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
手書きRBSの運用事例
Ryosuke Hiroe
June 14, 2024
More Decks by Ryosuke Hiroe
See All by Ryosuke Hiroe
rbs-srcを用いたgem_rbs_collectionへのcontribution.pdf
rhiroe
0
98
スクラム開発におけるベロシティの扱い
rhiroe
0
120
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
30 Presentation Tips
portentint
PRO
1
320
Raft: Consensus for Rubyists
vanstee
141
7.5k
Navigating Weather and Climate Data
rabernat
0
220
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Side Projects
sachag
455
43k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
For a Future-Friendly Web
brad_frost
183
10k
エンジニアに許された特別な時間の終わり
watany
107
250k
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よりも正確なコードジャンプが行える
少しでも興味を持っていただけたなら 幸いです