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
3
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
R8 の設定見直しでアプリサイズ削減
andpad
0
190
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
200
Workers Cache を知る
syumai
0
350
contenteditable と日本語入力に向き合う
colorful12
0
180
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
470
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
180
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
200
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
370
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
SREの越境 / SRE Collaboration
y0hgi
2
300
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.1k
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
A better future with KSS
kneath
240
18k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
260
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
510
Documentation Writing (for coders)
carmenintech
77
5.6k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
400
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
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