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
mangrove_gemを使ってRubyで静的型ともっと仲良くする.pdf
Search
kazzix
April 28, 2025
Programming
43
0
Share
mangrove_gemを使ってRubyで静的型ともっと仲良くする.pdf
kazzix
April 28, 2025
More Decks by kazzix
See All by kazzix
Type on Rails - Railsアプリケーションの安全性と開発体験を型で革新する
kazzix
5
1.6k
プログラミング言語Rustのすすめ @TwoGate Tech Meeting
kazzix
0
280
Other Decks in Programming
See All in Programming
へんな働き方
yusukebe
6
2.9k
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
2.8k
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
8
4.6k
Spec Driven Development: The End Of Vibe Coding | DevLand 2026
danielsogl
PRO
0
110
Codex CLI でつくる、Issue から merge までの開発フロー
amata1219
0
310
The free-lunch guide to idea circularity
hollycummins
0
410
Linux Kernelの1文字のミスで 権限昇格ができた話
rqda
0
2.3k
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
260
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
530
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
3
500
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
190
今年もTECHSCOREブログを書き続けます!
hiraoku101
0
220
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
160
Paper Plane
katiecoart
PRO
1
49k
Done Done
chrislema
186
16k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Speed Design
sergeychernyshev
33
1.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
110
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
330
A Tale of Four Properties
chriscoyier
163
24k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
99
Transcript
mangrove gemを使って Rubyで静的型ともっと仲良くする 2025/04/28 - Kazuma Murata ko.rb#0
自己紹介 • Kazuma Murata 村田一真 • @kazzix14 ← GitHub, Twitter,
etc. • 株式会社TwoGate • バックエンドエンジニア • Rust, Ruby, TypeScript • 最寄りは笹塚(3年) 2
Rubyに型をガンガン入れたい派 3
静的型付けを活かせる機能が 欲しくなってきた 4
Mangroveというgemを作っています 5
Mangroveとは 6 Sorbetを前提としたUtilityを提供するgem • 直和型(を簡単に書くためのsyntax sugar) • Result型 • Collectingメソッド
• TryFromExt • 他にも色々やりたい
直和型 中身の値を持つことができるEnumみたいなもの。
直和型があると嬉しいこと ケース漏れ・型の想定違いなどに気づける。補完がきく。
Result型(直和型の一種) Ok, Errのvariantを持つ、成功か失敗かを表す型。各variantは異 なる型の値を持つ - Result::Ok(ok_inner) - Result::Err(err_inner)
Result型
例外は静的に予期できない コードの奥底まで覚えてないと 例外が上がることがわからない
Resultならわかる! エラーハンドリングも強制できる
逆にいちいちエラーハンドリングするのがめんどくさい そのままメソッドの返り値になってくれればいいのに...
逆にいちいちエラーハンドリングするのがめんどくさい そのままメソッドの返り値になってくれればいいのに...
楽にエラーハンドリングできる仕組みを作った
楽にエラーハンドリングできる仕組みを作った メソッドチェーンしやすい記法
楽にエラーハンドリングできる仕組みを作った Rustの?operator, Haskellのdo記法的な...
さらに抽象化してモナド的なものが実装できないか - ログの抽象化 - Asyncの抽象化 - 配列アクセスの抽象化 - etc. Resultの機能として生やしてしまったが
- 便利なメソッド - モナド - Struct - より良いErrorハンドリング - などなど
今後やりたいこと
ありがとうございました