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
Reactでのマルチストア運用を考察する
Search
Hayashi Takao
August 08, 2019
0
220
Reactでのマルチストア運用を考察する
Effectorにを触ってみてマルチストアの運用について考察してみました。
Hayashi Takao
August 08, 2019
Tweet
Share
More Decks by Hayashi Takao
See All by Hayashi Takao
今日から始めるWeb Components
remrem0090
0
74
Reactで始めるsencer入門
remrem0090
0
48
今日から始めるgithub actions
remrem0090
0
43
effectorを使い倒してReduxのかわりになるか検証する
remrem0090
1
780
React code Splitting
remrem0090
1
550
Featured
See All Featured
Music & Morning Musume
bryan
46
7k
Faster Mobile Websites
deanohume
310
31k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
Agile that works and the tools we love
rasmusluckow
331
21k
Optimizing for Happiness
mojombo
379
70k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Unsuck your backbone
ammeep
671
58k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
How to Ace a Technical Interview
jacobian
280
24k
Scaling GitHub
holman
464
140k
Transcript
Reactでのマルチストア運用を 考察する
自己紹介
自己紹介 Hayashi Takao (れむ@9almondchocola) software engineer / React, Scala, Go
Cyberbuzz,inc.
マルチストアというユートピア
ドメインが適切に切られていて、 ドメインは自分の関心ごとに必要な情報だけを更新し 必要なコンポーネントがその情報を取りに行くって最高じゃね? Reduxのシングルストアはでかくなりすぎる! ミドルウェアのメンテキッツ! 同じような情報がストア内にいるしいらない情報まで取りに行って欲しくない! となったのでマルチストアでのフロントエンド開発をしてみました。
今回はマルチストアを実現するために Effectorというライブラリを使用しました。 Effector : https://effector.now.sh/
今回注目してみているポイント
注目ポイント - ストアの予測はしやすいか? - メンテナンスコストは低いか? - テストしやすいか?またはテストカバレッジを阻害されないか?
ストアが予測しやすいか?
ストアの予測 EffectorにはDomainという実装がある。 DomainはそのDomainの中で発生する通信やイベント、状態変化を サブスクライブするがDomainの外の情報には干渉しない。 また、Domainの中にDomainを作ることができる。
❌ App User Likes Follower
micro serviceがBfFからのリクエストに応じる感覚に近く てとてもすき。 データ設計がシンプルなほど強い。
Domainは名前空間 親は子のDomainをサブスクライブできるが、子は親の状態を知らない。 つまり名前空間をきちんと切って通信して APIの戻り値や状態をストアリングしてくれる!!
メンテナンスしやすい?
メンテナンス性 DomainごとにEventやEffectがあるので責務が明確。 明確な責務のものほどメンテナンスがしやすい! 発行されたEventの処理は一つの関数が担うため、Domainがわかれてるから 関係ない値を選別したりする必要はない。
テストしやすい?
テストのしやすさ マルチストアはテストしにくい! ストアの状態が色々あるためテストパターンを用意するのが大変。 特にコンポーネント単位になってくるとカオス。 テスト性能に置いてReduxはすごく快適。
ここまでを振り返る
振り返り - ストアの予測 ◦ - メンテナンス性能 ◦ - テスト ✖
でもよく考えると辛い本質はストアの形ではない気がする。。。
Reduxのときつらいなと思ったこと - 不必要にでかいオブジェクト - 責務があやふやなaction - 巨大すぎるMildeWear - コンポーネントテストつらい!
翻って見てみればきつい原因は - とりあえずで作った計画性のないaction - 責務が不明確なままつくったMiddleWear - デザイナーに適当に振ってしまったコンポーネント ...etc
ごめんなさい、ちゃんと設計をすべきでした。 銀の弾丸を望んですいまんせんでしたm(_ _)m
まとめ
- そもそも論、情報設計が悪かった(Redux) - 情報設計の筋の悪さはマルチストアでも解消されない!! - マルチストアにしてテストカバレッジ下がるくらいならしないほうがいい - ミドルウェア部分のメンテナンス性は抜群 - ストアの中身の予測もしやすい
マルチストアは全然銀の弾丸ではなかった。 基本的な設計がすごく大切。 関わる人全員で知見を深め作り上げてく必要がある。
Thank you!!