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
DoD x RBS
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
dak2
June 05, 2025
13
0
Share
DoD x RBS
omotesando.rb#110 のスポンサーLT登壇資料
https://omotesandorb.connpass.com/event/355862/
dak2
June 05, 2025
More Decks by dak2
See All by dak2
KaigiEffect.new(name: "dak2").generate
dak2
1
79
No Types Needed, Just Callable Method Check
dak2
1
3.2k
MCP Security Best Practices に見るセキュリティリスクとmodelcontextprotocol/ruby-sdk の authorization の現在地
dak2
0
40
自然言語で ActiveRecord を操作する試み
dak2
0
49
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.4k
[SF Ruby Conf 2025] Rails X
palkan
2
1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
4 Signs Your Business is Dying
shpigford
187
22k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.7k
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
170
30 Presentation Tips
portentint
PRO
1
290
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
120
sira's awesome portfolio website redesign presentation
elsirapls
0
230
Statistics for Hackers
jakevdp
799
230k
Transcript
2025/06/05【オフライン開催】Omotesando.rb #110 株式会社タイミー 神山大智 DoD x RBS スポンサーLT @_dak2_
自己紹介 Daichi Kamiyama (@dak2) • 株式会社タイミー(2024年6月入社) • バックエンドエンジニア ◦ 働き手であるワーカーと事業者の出会いを最適化しスケール
させるための改善や機能開発を行なっています ◦ 最近は Devin に対して丁寧にお伺いすることを生業にしてい る
自己紹介 色々あるんですが、 Devin とは仲良くさせて いただいてます
目次 • 会場案内 • 会社紹介 • はじめに - 当時の型付け状況 •
型付け、どこから始める? - 最初の壁 • 私たちの戦略: DoD + RBS = 小さな一歩 • 「差分への型付け」がもたらすもの • まとめ
1 会場案内
• Wifi ◦ SSID:Timee Guest ◦ Pass:guestguest • 注意点 ◦
オープンスペースを出る際は、運営またはタイミー社員に お声がけください。 (セキュリティがかかっているため) 始まる前に
始まる前に トイレ エレベータ
始まる前に エレベータ 喫煙室 ※電子タバコ専用 紙タバコは地下2Fの喫 煙室を利用してください
2 会社紹介
10
型付けの次は型検査
12 12
提供しているインターフェース 対象 プラットフォーム iOS/Android ワーカー クライアント (店舗) クライアント (企業) 社内全般
ActiveAdmin SPA SPA Web taimee-rails-api
提供しているインターフェース 対象 プラットフォーム iOS/Android ワーカー クライアント (店舗) クライアント (企業) 社内全般
ActiveAdmin SPA SPA Web 裏側は(ほぼ)全て モノリスRailsで動いている
カジュアル面談はこちらから!
3 型付けの話
目次 • 会場案内 • 会社紹介 • 当時の型付け状況 <= イマココ •
型付け、どこから始める? • チーム戦略: DoD + RBS = 小さな一歩 • 「差分への型付け」がもたらすもの • 型付けの次は型検査 • まとめ
初めに結論 DoD(Definition of Done) ✖ RBS
当時の型付けの状況
• 2024年7-8月 ◦ YARD から rbs-inline に書き換え ▪ それまでは混在していた •
2024年8月 ◦ 型アノテーションを書くなら rbs-inline が Must 当時の型付けの状況
当時の型付けの状況 rbs-inline を本格的に書いていくぞ!という立ち 上げ段階
型付け、どこから始める?
型付け、どこから始める? rbs-inline を本格的に書いていくぞ! …とは言ったものの • 既存の巨大なコードベース: どこから手をつければ? • 途方もない作業量: 心が折れそう...
• 効果が遅効性: すぐに型検査の恩恵を受けられるわけではない
チーム戦略: DoD + RBS = 小さな一歩
チーム戦略: DoD + RBS = 小さな一歩 Definition of Done (DoD)
とは? 完成の定義とは、プロダクトの品質基準を満たすインクリメントの 状態を示した正式な記述である。 プロダクトバックログアイテムが完成の定義を満たしたときにイン クリメントが誕生する。 ref. https://scrumguide-ja.kdmsnr.com/#komittomentono
チーム戦略: DoD + RBS = 小さな一歩 https://tech.timee.co.jp/entry/ 2024/08/05/110000
チーム戦略: DoD + RBS = 小さな一歩 Done の定義としてチームでは 変更差分に対しては、必ず rbs-inline
を書くように ✅ *プロダクト全体の型定義はスプリント内で チェックするには現実的に無理なので、これ自 体はUndone とし、変更差分に対して守るよう にしています
チーム戦略: DoD + RBS = 小さな一歩 • 補足 ◦ sinsoku
さんが RubyKaigi で発表されていた rbs-trace もうまく活 用できそうだなと思ってます ▪ https://github.com/sinsoku/rbs-trace
「差分への型付け」がもたらすもの
「差分への型付け」がもたらすもの • 心理的ハードルの低減 ◦ 対象範囲がスプリント内の変更に限定されるため、 manageable。 ◦ 「これくらいならやれそう」という気持ちに。 • 習慣化の促進
◦ スプリントごとに必ず型に触れる機会ができる。 ◦ 「型を書く」ことが当たり前の文化へ。 • 漸進的な導入 ◦ 少しずつ型のあるコードが増えていく。 ◦ チーム全体で型への意識が自然と高まる ◦ 特に差分だけレビュー時に確認するので、実装との整合性を意識した型付けが可能 ▪ 一気に型付けすると、適切でない型付けをスルーしちゃいがち
「差分への型付け」がもたらすもの • シンプルな戻り値をシンプルに保つ力学が働く ◦ 複雑な型を返そうとしているときはメソッドの設計がおかしい ◦ 自然とメソッドの戻り値をシンプルに保とうとする力学が働く ◦ “型”を媒介にして、設計に対するFBがかかりやすくなる印象がある
型付けの次は型検査 • 型検査の実行 ◦ 型付けするだけではあまりメリットがなくて、型検査をしてちゃんとしたメリット が享受できる ◦ 最近全てのパッケージが型検査対象になりました🎉 ▪ ただ、`steep:ignore`
で型検査を無視している箇所もあったりするので、 そこの対応は必要 ◦ 整合性のある型付けができているかの確認 ▪ これは一気にやろうとするのではなく、エンカウントした時に対応していく 方が現実的かもしれない
まとめ
まとめ • DoD ✖ RBS は現実的な型付け戦略 • 差分に対して RBSを書くことでコードへ FBをか
けやすい