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
Flutter Redux の内部構造を考える
Search
Kotaro Kamashima
October 30, 2022
Programming
0
280
Flutter Redux の内部構造を考える
2021年7月10日に社内向けに行なった勉強会資料です。
実験用リポジトリ:
https://github.com/Kotaro666-dev/flutter_redux_presentation
Kotaro Kamashima
October 30, 2022
Tweet
Share
More Decks by Kotaro Kamashima
See All by Kotaro Kamashima
Navigation Bar と権限管理
kotaro666
0
16
パイプラインによるプロセス間通信を理解する
kotaro666
0
380
Other Decks in Programming
See All in Programming
データベースのオペレーターであるCloudNativePGがStatefulSetを使わない理由に迫る
nnaka2992
0
130
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
chettub
3
1k
Pulsar2 を雰囲気で使ってみよう
anoken
0
230
ソフトウェアエンジニアの成長
masuda220
PRO
10
1.1k
ペアーズでの、Langfuseを中心とした評価ドリブンなリリースサイクルのご紹介
fukubaka0825
2
320
SwiftUIで単方向アーキテクチャを導入して得られた成果
takuyaosawa
0
270
Unity Android XR入門
sakutama_11
0
150
Multi Step Form, Decentralized Autonomous Organization
pumpkiinbell
1
730
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
170
iOSエンジニアから始める visionOS アプリ開発
nao_randd
3
130
ASP. NET CoreにおけるWebAPIの最新情報
tomokusaba
0
370
Lottieアニメーションをカスタマイズしてみた
tahia910
0
120
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Done Done
chrislema
182
16k
Speed Design
sergeychernyshev
27
790
Transcript
© Nzigen, Inc. Flutter Redux の内部構造を考える 釜島光太郎 1
本日のアジェンダ 1. Redux とは? 2. きっかけ 3. なぜ Redux は難しいのか?
4. 内部構造を見てみる 5. 実際に実験してみよう! 2
Redux とは? 3
きっかけ
GNTV起動直後の処理で、 Redux を使ったチャンネル設定のコードが複雑でよく わからないな..... Action が dispatch される、なんか Middleware みたいなのがある、新しい state を作る Reducer はどこで行われているの? 4
きっかけ
某パイセン Redux では、Action が Dispatch されると、最初に Middleware での処理、最後に Reducer での処理が実行される。 Middleware は Reducer で新しい state を作る前の準備を行う役割を担っていて、 EDIA プロジェクトでは Notifier でそれを行っている。 こうした概要は公式ドキュメントに詳しく書いてあるから、あとで読んでみるといいで すね。 5
きっかけ Middleware とは? Redux middleware provides a third-party extension point
between dispatching an action, and the moment it reaches the reducer. People use Redux middleware for logging, crash reporting, talking to an asynchronous API, routing, and more. 出典:https://redux.js.org/ 6
きっかけ Middleware 7
きっかけ
流れが一通り分かったし、デバッグモードでも確認してみると、 Middleware の処理 が行われた後に、Reducer が呼ばれているのが分かった。 でも、Dispatch しただけで、どうやって Middleware を見つけて、処理して、 Reducer が最後に実行されるようにするのだろうか? 8
なぜ Redux は難しいのか?
実行し、それが処理されて、最終的に状態が更新されるのは分かった。 でも、内部で実際に何が起きているのか見えない。 だから、一連の処理がどのように行われているのかが理解できない。 9
内部構造を見てみる 10
内部構造を見てみる 11
内部構造を見てみる 12
内部構造を見てみる Middleware 1 Middleware 2 Middleware 3 Middleware 4
Middleware 5 Dispatch Action Reducer 13
内部構造を見てみる 14
内部構造を見てみる 15
内部構造を見てみる 16
内部構造を見てみる Middleware 1 Middleware 2 action 17
内部構造を見てみる 18
内部構造を見てみる 1 19
内部構造を見てみる 1. [reduceAndNotify] 20
内部構造を見てみる 21
内部構造を見てみる 2 22
内部構造を見てみる List orignal [middleware1, middleware2, middleware3] List original.reversed
[middleware3, middleware2, middleware1] 23
内部構造を見てみる 3 24
内部構造を見てみる 1. [reduceAndNotify] 2. [reduceAndNotify, middleware3] 3. [reduceAndNotify, middleware3,
middleware2] 4. [reduceAndNotify, middleware3, middleware2, middleware1] 25
内部構造を見てみる 4 26
内部構造を見てみる List orignal [reduceAndNotify, middleware3, middleware2, middleware1] List
original.reversed [middleware1, middleware2, middleware3, reduceAndNotify] 27
内部構造を見てみる 5 28
内部構造を見てみる 1. middleware1(store, action, middleware2(store, action, next)) 2. middleware2(store,
action, middleware3(store, action, next)) 3. middleware3(store, action, reduceNotifier(state, action)) middleware1(store, action, middleware2(store, action, middleware3(store, action, reduceNotifier(state, action)))) 29
内部構造を見てみる 準備はできた。 あとは、どうやって現在の middleware から次の middleware を呼んで 移動するのか? Middleware
の第 3 引数に入っている次の middleware == next をコールするだけ。 30
実際に実験してみよう! 31
実際に実験してみよう! 32
END END 33