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
31
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
Google Opalで使える37のライブラリ
mickey_kubo
3
170
Blazing Fast UI Development with Compose Hot Reload (droidcon London 2025)
zsmb
0
420
Reactive Thinking with Signals and the Resource API
manfredsteyer
PRO
0
120
オンデバイスAIとXcode
ryodeveloper
0
290
AIと人間の共創開発!OSSで試行錯誤した開発スタイル
mae616
2
830
Temporal Knowledge Graphで作る! 時間変化するナレッジを扱うAI Agentの世界
po3rin
5
1k
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
18
9.2k
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
14
47k
エンジニアインターン「Treasure」とHonoの2年、そして未来へ / Our Journey with Hono Two Years at Treasure and Beyond
carta_engineering
0
460
三者三様 宣言的UI
kkagurazaka
0
290
TFLintカスタムプラグインで始める Terraformコード品質管理
bells17
2
500
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
120
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
RailsConf 2023
tenderlove
30
1.3k
Code Reviewing Like a Champion
maltzj
526
40k
Site-Speed That Sticks
csswizardry
13
930
Six Lessons from altMBA
skipperchong
29
4k
Designing for humans not robots
tammielis
254
26k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
630
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Designing Experiences People Love
moore
142
24k
How GitHub (no longer) Works
holman
315
140k
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ハンドリング - などなど
今後やりたいこと
ありがとうございました