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
型を書かないRuby開発への挑戦
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Shia
March 02, 2026
Technology
6.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
型を書かないRuby開発への挑戦
「型を書かなくても十分有用な型情報を得られる」を目標に開発中の LSP「type-guessr」について話します。
完全さを諦めることでいい感じの体験を目指します。
Shia
March 02, 2026
More Decks by Shia
See All by Shia
猫の手も借りたい
riseshia
0
41
Good Enough Types: Heuristic Type Inference for Ruby
riseshia
1
5k
Class.new is all you need
riseshia
1
740
ひとつの開発環境
riseshia
0
220
Conquering Massive Traffic Spikes in Ruby Applications with Pitchfork
riseshia
0
430
スパイクアクセス対策としての pitchfork 導入
riseshia
0
1k
NewEngineering 2024 - 繋がっていくサービスを支える開発環境作り
riseshia
0
2k
Hotspot on Coverage
riseshia
0
320
差分ベースで効率的にテストを実行してみる
riseshia
1
850
Other Decks in Technology
See All in Technology
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
900
PagerDuty Tech Hub-鳴らすけれど、人は動かない
ezaki
0
180
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
2
160
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.2k
Classmethod Company Deck
satoshi7
1
740
Local CI × GitHub Actions
gogutan
3
230
Temporal 最高!でも改めて「日付」について調べたら人類の負債すぎる件
riyaamemiya
0
200
エンタメ企業のM&Aを支えるデータ基盤 ― 統合から店舗のリアルタイム分析まで / Data Engineering Summit 2026
genda
0
210
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
会社紹介資料 / Sansan Company Profile
sansan33
PRO
31
430k
Optunaの最新リリースv5.0について
pfn
PRO
0
120
Featured
See All Featured
Bash Introduction
62gerente
615
220k
Balancing Empowerment & Direction
lara
6
1.3k
Utilizing Notion as your number one productivity tool
mfonobong
4
620
Testing 201, or: Great Expectations
jmmastey
46
8.3k
The Cult of Friendly URLs
andyhume
79
7k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
BBQ
matthewcrist
90
10k
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
480
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
430
Transcript
福岡Rubyist会議05 Shia@STORES 型を書かないRuby開発への挑戦
SIM SANGYONG (@shia) - STORES株式会社 - GitHub: @riseshia - X:
@riseshia 自己紹介 2
質問です 3 Rubyで型を書きたいですか?
お気持ち 4 型を書きたくない!!
正確なお気持ち 5 Ruby では型を書きたくない!!
そしてただのワガママ 6 Ruby では型を書きたくない!! でも型情報はちょっとほしい
Ruby 型マップ 7 型宣言依存度 Steep / Sorbet Ruby LSP Guessed
type typeprof solargraph 提供される情報の品質
Ruby 型マップ 8 型宣言依存度 Steep / Sorbet Ruby LSP Guessed
type typeprof solargraph 型宣言が前提。方向が違う 提供される情報の品質
Ruby 型マップ 9 型宣言依存度 Steep / Sorbet Ruby LSP Guessed
type typeprof solargraph 丁寧な推論 大規模アプリだと少々重い gem は rbs 書いてね 提供される情報の品質
Ruby 型マップ 10 型宣言依存度 Ruby LSP Guessed type typeprof solargraph
欲しいアプローチは近いが Hash/Array が情報不足 あと ruby-lsp と機能重複... Steep / Sorbet 提供される情報の品質
Ruby 型マップ 11 型宣言依存度 Ruby LSP Guessed type typeprof solargraph
変数名ベースの単純推測のみ 提供される情報の品質 Steep / Sorbet
Ruby 型マップ 12 型宣言依存度 Ruby LSP Guessed type typeprof solargraph
この辺の何かがほしい 提供される情報の品質 Steep / Sorbet
推論の精度を落とし 自分が書く型の必要性を減らす・速度を得る 欲しいもの 13
- 推論された型が複雑なら untyped に - A or B or C
or D… -> untyped でいいでしょう! - Hash / Array に Structural Typing サポート - ヒューリスティックに依存する どうやって? 14
Structural Typing - Hash 15
Structural Typing - Array 16
Duck Typing を信じる 17 通常の Duck Typing: 「これらのメソッドに応答できるなら、OK」 🦆 quack
できるなら → アヒル type-guessr: 「これらのメソッドが呼ばれたなら、このクラスのはず」 🦆 quack が呼ばれた → きっとアヒル
Duck Typing を信じる 18
Duck Typing を信じる 19
Duck Typing を信じる 20
対象: LOC 100k 以上の Rails プロジェクト三つ 変数に送ったメソッド一覧から、変数(レシーバ)の型がわかる比率 => 10~20% Duck
Typing を信じる - そんな〜うまくいくんですか? 21
Duck Typing を信じる in type-guessr 22
- ruby-lsp の UX にそのまま溶け込める - 適切に実装すれば hover, autocompletion, 定義ジャンプが「型
がわかれば」自動で効く - ruby-lsp-rails, ruby-lsp-mongoid 等が ruby-lsp に登録する DSL 由来のメソッド一覧をそのまま活用できる - Duck typing ヒューリスティックではめっちゃ大事 設計 - Impl as ruby-lsp add on 23
設計 - How to infer - Duck typing によるクラス推定を頑張る -
自明なものを頑張る(e.g. Hoge.new) - あとは型情報を使って伝播していく - 型推論の結果が一定以上複雑になったら精度を落とす 24
- 十分小さいアプリでは価値が出にくい (メソッド名の一意性に依存) - ActiveRecord とかが大変扱いづらい... - 速度が遅い問題 - ruby-lsp
のインデッシングを待つ必要がある - 推論が重い - Diagnostic 出しづらい問題 - ヒューリスティックを混ぜたことでどう出すべきかという悩み Limitation 25
今色々いじりまくっており unstable ですが どうぞお試しください (そしてフィードバックがあると喜びます) bundle add type-gusser -g=’development’ https://github.com/riseshia/type-guessr
最後に 26