LoginSignup
26
10

More than 5 years have passed since last update.

Redux先輩ミーリマシン説

Last updated at Posted at 2017-01-18

ここ数日、Reduxとはなんぞやということについてさんっざん検索して調べまわっていました。ふとミーリ・マシンっぽいなと思って"Redux Mealy Machine"でググり、Redux-sagaの中の人のこのツイートにたどり着いて、ようやくストンと腑に落ちました。参考1参考2

ReduxでReducerの中で作用を使うなとかActionCreatorを純粋にしろとか言われてどうすりゃいいんだよウッセーなお前はおれのかーちゃんかよって思った人は多いでしょう。Reduxが何なのか理解できていないと、Reduxが要求する制限や規則は単に窮屈で複雑、難解なだけです。でもReduxが何を表現しているのかがわかったら、あのような厄介な規則もとたんに前向きに受け入れられるようになりました。

Reduxとは何か。Reduxはミーリ・マシンだ。アプリケーションから状態遷移の部分のみを切り離して抽象化した、有限状態機械だ。Actionとは入力記号$\rm Σ$であり、Reducerとは状態遷移関数$\rm S × Σ → S$だ。Reduxは状態遷移のみを取り扱う純粋な機械であり、現実世界との相互作用とは独立してその状態遷移をテストできる。

Reduxだけでは計算は進んでいかない。Redux-Sagaはselecttakeで$\rm S$と$\rm Σ$を取り出し、$\rm S × Σ$から現実世界との相互作用$\rm Λ$を計算する出力関数$\rm S × Σ → Λ$として振る舞う。それからSagaは作用$\rm Λ$を現実世界に作用させ、その結果に応じて$\rm Σ$をputで再びReduxの中に投げ入れることで、ミーリ・マシンたるReduxを駆動する役目を持つ。

まとめ

React/Reduxは難しいのでElmを使おう!

26
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
10