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
0
43
mangrove_gemを使ってRubyで静的型ともっと仲良くする.pdf
kazzix
April 28, 2025
Tweet
Share
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
CSC307 Lecture 14
javiergs
PRO
0
450
モジュラモノリスにおける境界をGoのinternalパッケージで守る
magavel
0
3.4k
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
860
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
6
2.5k
AI活用のコスパを最大化する方法
ochtum
0
120
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
370
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
170
nilとは何か 〜interfaceの構造とnil!=nilから理解する〜
kuro_kurorrr
3
1.6k
AI主導でFastAPIのWebサービスを作るときに 人間が構造化すべき境界線
okajun35
0
470
AIコーディングの理想と現実 2026 | AI Coding: Expectations vs. Reality 2026
tomohisa
0
890
株式会社 Sun terras カンパニーデック
sunterras
0
1.9k
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
240
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Test your architecture with Archunit
thirion
1
2.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
The Curious Case for Waylosing
cassininazir
0
260
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
Embracing the Ebb and Flow
colly
88
5k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Designing for Timeless Needs
cassininazir
0
150
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.4k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
140
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ハンドリング - などなど
今後やりたいこと
ありがとうございました