Skip to content

Commit 84e1f05

Browse files
committed
Merge pull request #103 from azu/redux-pros-cons
feat(redux): ReduxのMiddlewareのPros/Cons
2 parents 2e5fea0 + 9db8c5b commit 84e1f05

File tree

1 file changed

+39
-11
lines changed

1 file changed

+39
-11
lines changed

ja/Redux/README.md

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -195,26 +195,54 @@ _Middleware_ という仕組み自体は[Connect](../connect/README.md)と似て
195195
しかし、 _Middleware_ が直接的に結果(State)を直接書き換える事はできません。
196196

197197
Connectの _Middleware_ は最終的な結果(`response`)を書き換えできます。
198-
一方、Reduxの _Middleware_ は扱える範囲が`dispatch`からReducerまでと線引されている違いと言えます
198+
一方、Reduxの _Middleware_ は扱える範囲が`dispatch`からReducerまで」と線引されている違いと言えます
199199

200200
## どういう事に向いてる?
201201

202-
- アスペクト的に前後に処理を挟むことができる
203-
- ログへの利用
204-
- 値自体は直接操作できない
205-
- 受取るデータは変換できる
202+
Reduxの _Middleware_ そのものも三原則に基づいた仕組みとなっています。
203+
_Middleware_ はActionオブジェクトを自由に書き換えたり、Actionを無視したりできます。
204+
一方、Stateを直接は書き換える事ができません。
205+
206+
多くのプラグインの仕組みでは、プラグインに特権的な機能を与えている事が多いですが、
207+
Reduxの _Middleware_ は書き込みのような特権的な要素も制限されています。
208+
209+
_Middleware_ に与えられている特権的なAPIとしては、`getState()``dispatch()`ですが、
210+
どちらも書き込みをするようなAPIではありません。
211+
212+
このように、プラグインに対して一定の権限を持つAPIを与えつつ、
213+
原則を壊すような特権を与えない事を目的としている場合に向いています。
206214

207215
## どういう事に向いていない?
208216

209-
- [ ] TODO
210-
- 変換の仕組み上、書き換え等を行うプラグインを扱いにくい
217+
一方、プラグインにも書き込み権限を与えないためには、
218+
プラグイン間でやり取りする中間的なデータが必要になります。
219+
220+
ReduxではActionオブジェクトというような命令(コマンド)を表現したオブジェクトに対して、
221+
Reducerという命令を元に新しいStateを作り出す仕組みを設けていました。
222+
223+
つまり、プラグインそのものだけで全ての処理が完結するわけではありません。
224+
プラグインで処理した結果を受け取り、その結果を処理する実装も同時に必要となっています。
225+
Reduxでは _Middleware_ を前提とした処理を実装として書くことも多いです。
226+
227+
そういう意味ではプラグインと実装が密接といえるかもしれません。
228+
229+
そのため、プラグインのみで全処理が完結するような機能を作る仕組みは向いていません。
230+
231+
## まとめ
211232

212-
## この仕組みを使っているもの
233+
ここでは[Redux][]のプラグインアーキテクチャについて学びました。
213234

214-
- Connectに似ている
215-
- _Middleware_もStateそのものを直接書き換える事はできません
216-
- この部分が類似の仕組みを持つ[connect](../connect/README.md)との違いになっています
235+
- Reduxの _Middleware_ はActionオブジェクトに対する処理を書ける
236+
- _Middleware_ に対しても三原則が適応されている
237+
- _Middleware_ に対しても扱える機能の制限を適応しやすい
238+
- _Middleware_ のみで全ての処理が完結するわけではない
217239

240+
## 参考
218241

242+
- [Middleware | Redux](http://redux.js.org/docs/advanced/Middleware.html)
243+
- [10. Middleware · happypoulp/redux-tutorial Uncyclo](https://github.com/happypoulp/redux-tutorial/wiki/10.-Middleware)
244+
- [Brian Troncone – Redux Middleware: Behind the Scenes](http://briantroncone.com/?p=529)
245+
- [ReduxのMiddlewareについて理解したいマン | moxt](https://hogehuga.com/post-1123/)
246+
- [Understanding Redux Middleware — Medium](https://medium.com/@meagle/understanding-87566abcfb7a#.8fr4jmjwz)
219247

220248
[Redux]: https://github.com/reactjs/redux "reactjs/redux: Predictable state container for JavaScript apps"

0 commit comments

Comments
 (0)