Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
35
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
特殊変数大全
dak2
0
13
登壇その後 - ZJIT への興味とハック
dak2
0
12
現場のトークンマネジメント
dak2
1
280
KaigiEffect.new(name: "dak2").generate
dak2
1
110
No Types Needed, Just Callable Method Check
dak2
1
8.9k
MCP Security Best Practices に見るセキュリティリスクとmodelcontextprotocol/ruby-sdk の authorization の現在地
dak2
0
70
自然言語で ActiveRecord を操作する試み
dak2
0
65
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
240
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
830
Agile that works and the tools we love
rasmusluckow
331
22k
First, design no harm
axbom
PRO
2
1.3k
エンジニアに許された特別な時間の終わり
watany
109
250k
Automating Front-end Workflow
addyosmani
1369
210k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Product Roadmaps are Hard
iamctodd
55
13k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
KATA
mclloyd
PRO
35
15k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
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をか
けやすい