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
33
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.5k
プログラミング言語Rustのすすめ @TwoGate Tech Meeting
kazzix
0
270
Other Decks in Programming
See All in Programming
Java_プロセスのメモリ監視の落とし穴_NMT_で見抜けない_glibc_キャッシュ問題_.pdf
ntt_dsol_java
0
220
チーム開発の “地ならし"
konifar
8
5.7k
ソフトウェア設計の課題・原則・実践技法
masuda220
PRO
20
13k
GeistFabrik and AI-augmented software development
adewale
PRO
0
120
関数の挙動書き換える
takatofukui
4
740
GraalVM Native Image トラブルシューティング機能の最新状況(2025年版)
ntt_dsol_java
0
160
JEP 496 と JEP 497 から学ぶ耐量子計算機暗号入門 / Learning Post-Quantum Crypto Basics from JEP 496 & 497
mackey0225
2
450
社内オペレーション改善のためのTypeScript / TSKaigi Hokuriku 2025
dachi023
1
110
Flutterチームから作る組織の越境文化
findy_eventslides
0
530
Chart.jsで長い項目を表示するときのハマりどころ
yumechi
0
140
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
180
『実践MLOps』から学ぶ DevOps for ML
nsakki55
2
460
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
21k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The World Runs on Bad Software
bkeepers
PRO
72
12k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
[RailsConf 2023] Rails as a piece of cake
palkan
57
6.1k
How GitHub (no longer) Works
holman
315
140k
Docker and Python
trallard
46
3.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
A better future with KSS
kneath
239
18k
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ハンドリング - などなど
今後やりたいこと
ありがとうございました