Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
関数型プログラミングに出会って考え方の幅が広がった話
Search
Javadog
October 14, 2026
Programming
15
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
関数型プログラミングに出会って考え方の幅が広がった話
Javadog
October 14, 2026
More Decks by Javadog
See All by Javadog
個人開発でAWSを使いたい
javadog
7
2.2k
Other Decks in Programming
See All in Programming
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
310
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
300
Getting Started with Vibe Coding
miccheng
0
130
ActionController meets Protocol Buffers
sorah
1
760
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
180
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
210
AI駆動開発4年目の現在地(『あなたはFDEになるべきか?』イベント資料)
kumaiu
0
110
Modernizing iOS Apps
seyfoyun
0
140
私なりのハーネスエンジニアリング ~独自の言語処理系の開発を通して~
seosoft
0
150
GraphQL の onError と Nullability のこれから
quramy
0
200
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
210
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
130
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
590
The Pragmatic Product Professional
lauravandoore
37
7.5k
New Earth Scene 8
popppiees
4
2.7k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
240
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
380
Rails Girls Zürich Keynote
gr2m
96
14k
GitHub's CSS Performance
jonrohan
1033
470k
Fireside Chat
paigeccino
43
4.1k
A designer walks into a library…
pauljervisheath
211
25k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Transcript
Server-Side Kotlin Meetup 関数型プログラミングに出会って 考え方の幅 広 った話 株式会社コドモン プロダクト開発部 藤村
泰雅 2026年10月14日
自己紹介 藤村 泰雅 ふじむら たいが 経歴 写真販売や連絡帳製本など、思い出の領域を扱うチームに新卒配属。 XPとDDDに軸足を置いて、ユーザーに届 価値を最大化するために なんでもやります!
2023年4月:コドモンに新卒入社 2
はじめに 今日のテーマ:関数型プログラミングに出会い、考えの幅 「業務ルールの表現に型を使った工夫を入れた方 とふんわり思っていたことの正体 『FPをそこまで深 浅 た も、という話をします 、めちゃめちゃ初心者です 知らない人』にとって持ち帰るもの
※関数型そのものというより、関数型の周辺の考え方 った 、より堅牢な作りになる」 、関数型に出会って見えて ※私自身は関数型プログラミングを学び始めて日 どう広 あれば幸いです ら学んだという方 正確 もしれません 3
関数型プログラミングと出会って考えの幅 広 ったこと 1. 型を『値の集合』として捉える 2. 代数的データ型の考え方 3. 関数を『状態遷移の許可ルール』として捉える 4
1. 型を『値の集合』として捉える とり得る値の組み合わせ 何通りある 、という捉え方 例えば... Boolean はtrue or falseの二通りの値を取り得る型
業務上の分類に対して、⾃分たちの作ったモデルが 広いか/狭いか みたいな視点が新しく⾝につきました 5
2. 代数的データ型の考え方 直積型 直和型 AとBの両方を持つ。取り得る値の数は |A| × |B| A 全通りの組み合わせを表現する
場合分 掛 算と足し算を使い分 て、型 Bのどちら 。取り得る値の数は |A| + |B| して、各場合に必要な要素だ 表す集合の広さを調節で 持たせる る 6
Before: nullableな配送情報を持つ注文 配送⽅法 配送先 業務上 悩み事 あり あり 配送が必要な注⽂ 型
なし なし 配送が不要な注⽂ あり なし ありえない 業務上ありえる組み合わせは2通り なし あり ありえない ありえない組み合わせを考慮せず済むようにしたい 表現している集合の範囲 広す る 7
After: 配送のあり/なしで型を分 る 直和型の表現に組み替える 配送あり or 配送なしの2通りに絞った表現 型 表す集合 業務上の分類と一致し、
業務上ありえない組み合わせ 作れない形になる 8
ここまでで 『業務上ありえない組み合わせ』を見つ た時 型を集合として捉えることで課題を言葉にで 代数的データ型の考え方を使って改善で るようになり るようになった 9
3. 関数を『状態遷移の許可ルール』として捉える 関数を定義する = その遷移を許可する 「業務上の分類と一致する集合」を関数で繋 入出力の型を絞れるので状態遷移の許可ルールとして機能する 10
まとめ 「型で表すと何 良いの 」 言葉にで るようになり、考え方の幅 広 った 1 型を「値の集合」として捉える
─ 型の広さ 2 代数的データ型の考え方 ─ 直積と直和を使い分 3 関数を『状態遷移の許可ルール』として捉える ─ 1, 2と併せて型で表すと何 適切 どう 、という視点を身につ た 、型の表現を業務上の分類に合わせる方法を身につ 嬉しいの た 理解で た 存在して良い値の組み合わせを絞り込むことでデータの状態を型に表現し、 どの状態 らどの状態への遷移を許可する を制御することで、堅牢なビジネスロジック 表現で る 11