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
関数型プログラミングに出会って考え方の幅が広がった話 / server_side_kotlin...
Search
コドモン開発チーム
PRO
October 14, 2026
3
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
関数型プログラミングに出会って考え方の幅が広がった話 / server_side_kotlin_meetup_20_functional_fujimura
コドモン開発チーム
PRO
October 14, 2026
More Decks by コドモン開発チーム
See All by コドモン開発チーム
夫婦で子育てするための育児標準化
codmoninc
PRO
0
150
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
670
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
400
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
620
「正解の仕様」を求めて、決断する
codmoninc
PRO
0
97
AI時代のPHP開発にASTクエリツール で コードベースの地図を作る / ast-query-tool-php-codebase-map
codmoninc
PRO
0
460
コネクションをピン留めさせずに SELECTクエリのタイムアウトを設定した話
codmoninc
PRO
0
460
コドモンに入社してAI活用により、 設計がより重要だと感じた背景
codmoninc
PRO
0
150
実装・設計だけでなく、運用・保守にもAIを広げてみた / We Took AI Beyond Coding and Into Operations and Maintenance
codmoninc
PRO
0
120
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Amusing Abliteration
ianozsvald
1
340
Designing Powerful Visuals for Engaging Learning
tmiket
1
600
Building Flexible Design Systems
yeseniaperezcruz
330
41k
KATA
mclloyd
PRO
35
16k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
430
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
740
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
400
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
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