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
primeNumberでのRBS導入の現在 && RBS::Traceでinline RBSを...
Search
Manami Nakamura
May 20, 2025
Programming
0
580
primeNumberでのRBS導入の現在 && RBS::Traceでinline RBSを拡充してみた
はじめてのRubyKaigi 〜ゆるっとふりかえり会〜
https://pn-developer-lounge.connpass.com/event/236227/
Manami Nakamura
May 20, 2025
Tweet
Share
More Decks by Manami Nakamura
See All by Manami Nakamura
TROCCOで開発生産性を計測してみた
mnmandahalf
0
110
データカタログのアクセスコントロールを考える
mnmandahalf
0
48
COMETA®開発の裏側をご紹介
mnmandahalf
0
960
Railsのマイグレーション、どこまで安全にできるか
mnmandahalf
0
87
よく考えずにRDSを暗号化したら辛かった話
mnmandahalf
0
27
Other Decks in Programming
See All in Programming
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
AtCoder Conference 2025
shindannin
0
1.1k
CSC307 Lecture 01
javiergs
PRO
0
690
ノイジーネイバー問題を解決する 公平なキューイング
occhi
0
110
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
140
CSC307 Lecture 08
javiergs
PRO
0
670
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
150
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
750
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
120
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
Raku Raku Notion 20260128
hareyakayuruyaka
0
370
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
200
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
350
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
440
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
280
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Design in an AI World
tapps
0
150
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.1k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
920
Transcript
primeNumberでのRBS導入の現在 && RBS::Traceでinline RBSを拡充してみた 2025.5.20 はじめてのRubyKaigi @mnmandahalf
AGENDA 2 1. 自己紹介 2. primeNumberのRBS導入の現在 3. RBS::Traceでinline RBSを拡充してみた 4.
今後やりたいこと
3 中村 愛美 @mnmandahalf 株式会社primeNumber Software Engineer クラウドデータカタログCOMETAの開発をしています ここ数ヶ月はSQLパーサとOpenSearchとよく戯れています Ruby歴:2017〜
Kaigi歴:個人で1回(2023)今回会社としてKaigi初参加🔰 好きなみかん:伊予柑とはるみです 🍊 アイコン:実は「マナティー」ではなく「ベルーガ」
4 RubyKaigi 2025 楽しかったですね! 型エコシステムに関するセッションがたくさんありました
5 primeNumberのRBS導入の現在
6 primeNumberのRBS導入の現在 • ある時点の型は大部分が追加済み(untyped込み) • orthoses, orthoses-railsを活用 • gem_rbs_collectionsで足りないGemの型は sig/gemsに追加
• CIでSteepを実行しているが、 型検査はまだすり抜けている状態 導入してくださった吉野さん、ありがとうございます!!
7 課題:活用までに乗り越えるステップが多い • 別ファイルのRBSをメンテするのがややハードルが高い • まだドキュメントとしての恩恵を感じられていない • 型検査までの道のりが遠い
8 モチベーション:開発者体験を向上させたい • 実はRubyのバックグラウンドがないエンジニアが多く、コードリーディングが大変 • 新メンバーも増える予定なのでコードにたくさん型情報を入れておきたい • フロントエンド開発を同時にすることも多く、多くの人がVS Codeユーザー inline
RBS comment を書いて、Ruby LSPの開発サポートを受けよう!
9 RBS::Traceでinline RBSを拡充してみた
10 RBS::Trace • https://github.com/sinsoku/rbs-trace • 神速 (@sinsoku_listy)さんによるランタイムから型情報を収集して保存するGem • RSpecなどを実行するとメソッドの引数と戻り値の型情報を自動的に収集し、 それをRBSファイルやコメントとして保存する機能を持っている
11 とある日の勉強会で... • mnm「inline RBSって # @rbs より #: の書き方が主流なのでしょうか?」
• 神速さん「そうですね、実はもうすぐ RBS::Traceが #: に対応します! 」 RBS::Traceが rbs_colon オプションに対応 🎉🎉🎉
12 RBS::Traceを実行した結果... • セットアップがすごく簡単 • packwerkでpacks/以下に分割されたディレクトリ以下のファイルにも対応◎ • 生成された型もかなり正確そう(※テストカバレッジ次第) • 足りないところは手で補足していく
13 RBS::Traceを実行した結果... • TROCCOはMySQL -> BigQueryのようなデータの転送をサポートしている • 様々なサービスとデータ転送で連携するTROCCOやCOMETAには、 200+ある接続情報をメタプロで抽象化して扱うコードが多数ある •
大量のunion型が作られる • 正しい挙動だが、可読性のため弊社では工夫が必要そう
14 inline RBS comment + Ruby LSPでできること #: コメントのシンタックスハイライトに対応(Opacityも変えられる) ホバーでメソッドの型情報を表示
15 今後やりたいこと
16 今後やりたいこと - 型情報の追加 • レコード型の定義 ◦ Hashを返すメソッドが多いので、スキーマを定義したい ◦ Hash[untyped]やHash[Symbol,
Hash[Symbol, Hash[...]]] の改善 • interfaceの定義 ◦ ダックタイプしている箇所の表現を簡潔にする(大量unionを回避) • (型検査するなら) Foo::ActiveRecord_Relationや Foo::ActiveRecord_AssociationRelationなど、ActiveRecord関連の型定義を拡充して いく
17 今後やりたいこと - 手書きとsubtract方針の整備 • 手書きしてもらう際のRBSファイルはinline-rbsで生成することをイメージ • RBSファイルに定義を保存する場合はsubtractしたい • RBSファイルが散在することになるので、
弊社独自の関連ファイルを開くVSCode拡張でサポートする
Thank you!