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
36
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
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
120
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
170
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
150
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
140
複雑なUI設計への銀の弾丸 「オブジェクト指向UIデザイン」
teamlab
PRO
2
110
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
240
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
720
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
320
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
130
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4.5k
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.2k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
200
Featured
See All Featured
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
130
Scaling GitHub
holman
464
140k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
150
Making Projects Easy
brettharned
120
6.5k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
140
How to train your dragon (web standard)
notwaldorf
97
6.5k
The SEO identity crisis: Don't let AI make you average
varn
0
39
Typedesign – Prime Four
hannesfritz
42
2.9k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
32
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
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ハンドリング - などなど
今後やりたいこと
ありがとうございました