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
48
0
Share
mangrove_gemを使ってRubyで静的型ともっと仲良くする.pdf
kazzix
April 28, 2025
More Decks by kazzix
See All by kazzix
Sorbetの型がRailsのMVC全てを貫通するまで
kazzix
0
62
Type on Rails - Railsアプリケーションの安全性と開発体験を型で革新する
kazzix
5
1.6k
プログラミング言語Rustのすすめ @TwoGate Tech Meeting
kazzix
0
290
Other Decks in Programming
See All in Programming
権限チェックの一貫性を型で守る TypeScript による多層防御
mnch
4
850
Agentic UI beyond Chats Architecture Patterns & Open Standards @ngMunich 05/2026
manfredsteyer
PRO
0
150
GitHub Copilot CLIのいいところ
htkym
2
1.1k
OCRを使ってゲームのアイテムをデータ化する
kishikawakatsumi
0
120
サークル参加から学ぶ、小さな事業の回し方
yuzneri
0
240
開発とはなにか、Essenceカーネルで見えるもの
ukin0k0
0
210
TSKaigi2026-静的解析への投資がAI時代のコード品質を支える ── カスタムESLintルールの設計と運用
hayatokudou
6
1.2k
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
880
UaaL×Androidアプリのメモリ計測 — Memory Profilerの先へ
rio432
0
180
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
160
AlarmKitで明後日起きれるアラームアプリを作る
trickart
0
150
色即是空、空即是色、データサイエンス
kamoneggi
1
200
Featured
See All Featured
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
170
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
330
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
180
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
450
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Ethics towards AI in product and experience design
skipperchong
2
290
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
750
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
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ハンドリング - などなど
今後やりたいこと
ありがとうございました