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
2020-11-05-side-effects-composition__1_.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Nkowne63
November 05, 2020
1
460
2020-11-05-side-effects-composition__1_.pdf
Nkowne63
November 05, 2020
Tweet
Share
More Decks by Nkowne63
See All by Nkowne63
TypeScriptのコード生成をつらくしないために
neutron63zf
1
780
vueで中規模以上のフロントエンドを組んでいて 役に立ったtips
neutron63zf
5
3.4k
20200128_nkowne63
neutron63zf
0
43
Vueで「見た目」「振る舞い」を分離してみよう
neutron63zf
0
610
20190523_nkowne63zf_1.pdf
neutron63zf
0
410
「つなぎこみ」を自動化する
neutron63zf
0
520
for文禁止縛り in JS
neutron63zf
0
760
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
200
Raft: Consensus for Rubyists
vanstee
141
7.4k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
300
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
93
Everyday Curiosity
cassininazir
0
180
30 Presentation Tips
portentint
PRO
1
260
The Cost Of JavaScript in 2023
addyosmani
55
9.8k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
91
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
660
Design in an AI World
tapps
0
180
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
390
Embracing the Ebb and Flow
colly
88
5k
Transcript
Reduxに依存しない 副作用の合成
背景
背景 • Mobx、Recoilなどの、Reduxに代わりうる状態管理ライブラリが普及してきた • 一方で、Redux-Sagaのような複雑な副作用合成システムを使いたければ、 Reduxしか選択することが (実質)できない • Redux-Sagaとは違う、「状態管理システムとは独立した副作用合成システム 」が必要
関数合成による 副作用の合成 https://github.com/neutron63zf/weakref-function-composer-sample
シンプルな合成 APIはinject/wrappedの2つのみ 副作用を合成したい関数と同じ型の値を返す関数を 受け取り、副作用を実行する関数 (g1, g2) injectは第一引数の関数に副作用を結びつける wrappedは副作用が結びついた関数を返す
多段合成 wrappedは実行された時点での合成された関数を返 すので、 右のように記述すれば副作用の関数の中でさらに 別の副作用を呼び出す事もできる。
特徴と課題
特徴(Pros) • 小さい(40行程度) • 関数に副作用となる関数をラップしていくだけの直感的な動作(シンプル) • 型フレンドリーである • 使う側が「副作用を発生させるかどうか」を制御可能 •
副作用をRedux-Sagaのように仮想的な別プロセスで回すのではなく、関数の合成をしているだけなの で、「次の行に移ったときには副作用の実行は終わっている 」(実行タイミングがわかりやすい)
課題(Cons) • Redux-Sagaほど表現力は高くない(yieldによるチャンネルの合成など) ◦ 書けない事もないが結局 Redux-Sagaの再実装になってしまう • コールスタックを消費するので、無限ループができない ◦ trampolineなどのテクニックを使う事で回避可能
まとめ
まとめ • Reduxに依存しない副作用の合成の仕方が求められている • シンプルな関数合成で副作用を合成するというやり方がある • 一定の課題はあるものの、特定の局面では力を発揮するかもしれない