Flux の特徴は何か、その説明として「一方向」という表現は適切か

Flux の特徴を説明する「一方向」という表現が適切かや、そもそも特徴がどこにあるのかを検討した一連の tweet 。 @bouzuya の結論は不適切ではない。ただ説明不足の感はある。Flux はデータフローを集約・整理した。その印象を伝えるために「一方向」という表現を使っている。 具体的には Flux には次のような特徴がある。 続きを読む
0
bouzuya @bouzuya

@kuy view に state を持たないの観点で言うと、厳密には react という選択は中途半端なのでは、とのアンチ react ユーザー(ぼく) の声が。→ でも集約する点について似たようなことを書きました。 twitter.com/bouzuya/status…

2016-06-23 09:21:02
bouzuya @bouzuya

@kameturu ありがとうございます。store (元図でのmodel) の分離自体は flux に限らずあること、dispatcher を hub として使うことが分かりました。store よりは dispatcher 経由に集約することこそ重点が置かれてそうな気がします。

2016-06-23 09:11:31
bouzuya @bouzuya

data flow を single dispatcher での observer pattern を使って集約し、さらに subscribe を store に限定することで、 store -> view -> dispatcher -> store に制限して整理した。

2016-06-23 09:26:21
bouzuya @bouzuya

この整理されたデータフローを指して、「一方向」とか「一方向データフロー」などと呼んでいる、と。

2016-06-23 09:28:27
Yuki Kodama @kuy

@bouzuya reactはデータフローに関して意見を持っていたっけ?という認識です。階層作って親に持たせたりしますけど、MVWの域を超えてないなぁって。その意味では差分ってcommandパターンによる分離くらいなのかな。

2016-06-23 09:29:39
bouzuya @bouzuya

@kuy React 自体は持っていないですよ。React/Flux という構成をとった場合には view に state を云々を厳格に守ると不適切じゃないか、というアンチっぽい意見です。↓こう整理してみたんですけど、いかがです? twitter.com/bouzuya/status…

2016-06-23 09:31:15
bouzuya @bouzuya

@kuy command pattern についての言及はしていないです。

2016-06-23 09:31:40
Yuki Kodama @kuy

@bouzuya むむ、viewにstate〜を厳密に守るとReact/Flux的にどう不適切なのかがわかりません・・・。

2016-06-23 09:38:25
bouzuya @bouzuya

@kuy React は View 内に state を持てるようにするためにいろいろ持ってるよねという話は以前したと思います。 一方で Flux では理想的には View に state を持たせないほうが良いという話があるなら、Flux に React を使うのは不適切では?

2016-06-23 09:43:09
bouzuya @bouzuya

@kuy React が state を持つこと自体は問題ないですし、Flux で view に state を程度によっては持ってもいいと思っているので、必ずしもダメというわけではないですが、厳密に考えるとどうなの、という。

2016-06-23 09:45:52
Yuki Kodama @kuy

@bouzuya ReactはReact単体で使うことも想定しているからなのでは? Reactはビューレンダラーとしての役割と状態管理の2つの役割がありますが、Fluxと併用したときビューレンダラーとしての役割だけを使ったからといって不適切と判断するのは行き過ぎでは?と思います。

2016-06-23 09:47:42
Yuki Kodama @kuy

@bouzuya たぶんその「厳密に」という言葉の意味が噛み合ってないのかもしれないです。

2016-06-23 09:48:22
bouzuya @bouzuya

@kuy いや、なので React 単体で使う場合に state を持てるという判断はここでは問題視していないです。

2016-06-23 09:48:36
Yuki Kodama @kuy

@bouzuya ですよね。つまり、bouzuyaさん的にはそもそもstateを持てないReactみたいなやつがあればその方が理想的じゃん、ってことですよね? Fluxの設計に合致するという意味で。

2016-06-23 09:50:12
bouzuya @bouzuya

@kuy 無駄な機能は持たないほうがいいし、最適とはいいづらいです。ただあって困るものでもないので、無理やり噛み付いているあたりが「アンチっぽい意見」とした理由ですし、「View に state を持たない」を「厳格」に守るなら、という前提もあります。

2016-06-23 09:50:34
bouzuya @bouzuya

@kuy そうですそうです。React が state を持てる判断は問題ないですし、Flux においても View に state を一部持たせる判断をするなら React は良い選択肢です。

2016-06-23 09:52:10
bouzuya @bouzuya

@kuy それを踏まえつつも、「ただ View に state を絶対に持たせないなら React どうなの?」と噛み付いていくのはいかにも「アンチっぽい意見」なわけです。

2016-06-23 09:52:51
Yuki Kodama @kuy

@bouzuya だからこそ、その部分を明確にするためにStateless Functional ComponentとかPureComponentの議論が進んで実装されつつあるんでしょうね。

2016-06-23 09:56:45
bouzuya @bouzuya

@kuy アンチにぐぬぬと言わせる形になるといいですね。

2016-06-23 09:59:44
bouzuya @bouzuya

完全にピュアのくだりは、 flux は〜で kuy さん側が出した話なんだけどな……。

2016-06-23 10:32:28
bouzuya @bouzuya

そもそも、 flux は view に state を持ってはいけないまでは言ってないはずだし、今回のまとめた範囲でも store 経由ってくらいで、そこにどれだけ持つかは触れてないんだよね。

2016-06-23 10:36:13