Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
77
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
We Are The Robots
honzajavorek
0
120
Leo the Paperboy
mayatellez
0
1.2k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
RailsConf 2023
tenderlove
30
1.3k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
850
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
A better future with KSS
kneath
240
18k
Navigating Team Friction
lara
191
16k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
0
160
KATA
mclloyd
PRO
33
15k
The untapped power of vector embeddings
frankvandijk
1
1.5k
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!!