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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Javadog
October 14, 2026
Programming
17
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
AI-Powered Domain-Driven Design
ziobrando
0
410
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
5
800
私なりのハーネスエンジニアリング ~独自の言語処理系の開発を通して~
seosoft
0
180
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
1.8k
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
170
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
160
Modernizing iOS Apps
seyfoyun
0
150
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.8k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
170
Crash Auto Pipelines
veronikapj
1
390
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
220
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
New Earth Scene 8
popppiees
4
2.8k
Technical Leadership for Architectural Decision Making
baasie
3
640
Testing 201, or: Great Expectations
jmmastey
46
8.4k
Are puppies a ranking factor?
jonoalderson
2
4.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
530
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.7k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
590
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
550
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
650
For a Future-Friendly Web
brad_frost
184
11k
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