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

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

react/fluxでデータの流れが一方向、一方向データバインディング、と説明されるのに違和感を感じる。それ普通のことだから。なにも説明してないから。

2016-06-22 21:47:09
uehaj @uehaj

何かが何かに対して起きたことと、それに対してどう処理するかを、結合しないで分けて考えて、前者をデータとして扱う、と言うことでしょ。一方向って言うことに、なんか意味あるの?>flux

2016-06-22 21:53:19
bouzuya @bouzuya

flux で出てきた一方向って「一方向データバインディング」という局所的な話なのかな。何かイメージと違う。

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

データバインディングは、データとビューをバインディングしましょう、一方向データバインディングはデータの変更をビューに一方向に伝える、双方向データバインディングはデータの変更をビューに、ビューの変更をデータに伝えるもの、という理解。

2016-06-23 08:13:42
bouzuya @bouzuya

双方向データバインディングも極端に言えば、一方向のデータのやりとりを持っているだけだよね。じゃあ、それ一方向データフローと呼ぶかって、違うはず。

2016-06-23 08:15:15
bouzuya @bouzuya

意味が分かりづらいな。双方向データバインディングをデータ→ビュー→データ→ビューに自動更新するものじゃん、一方向じゃん、って主張に違和感がある。

2016-06-23 08:16:38
bouzuya @bouzuya

そんな主張はない。

2016-06-23 08:20:41
bouzuya @bouzuya

ええと、違う違う。

2016-06-23 08:28:24
bouzuya @bouzuya

「Flux が一方向のデータフローを持つ」という説明でいいじゃん、という理由をぼくは考えようとしてたんだよな。

2016-06-23 08:29:05
bouzuya @bouzuya

まず Flux における「一方向」は「一方向データフロー」のことで「一方向データバインディング」のような局所的なものじゃない気がする。twitter.com/bouzuya/status… なぜそう思うのか。

2016-06-23 08:33:24
Yuki Kodama @kuy

@bouzuya 2つの説明に分けていいんじゃないかなぁ。commandパターンで状態の変化はaction投げてstore経由、obseverパターンでデータバインディング。

2016-06-23 08:36:02
bouzuya @bouzuya

一方向データフローと双方向データバインディングは両立できる。

2016-06-23 08:36:17
bouzuya @bouzuya

@kuy そうですよね。まず Flux の言う「一方向」と「一方向データバインディング」はまったく別のレベルでの話なんですよね。

2016-06-23 08:37:21
bouzuya @bouzuya

話をややこしくしている気はするけど、ビューが状態を持っていて、そこと双方向データバインディングしていても、一方向データフローになりうる。というか react は state を持てるようになっているので、それに近い構造をつくれる。

2016-06-23 08:40:50
Yuki Kodama @kuy

@bouzuya はい、まさに。個人的に一方向って言い方好きでないので、オブジェクト間の情報のやりとりの仕方を定めた(制限した)だけだと思ってます。

2016-06-23 08:45:21
bouzuya @bouzuya

@kuy いまのぼくの動機はもっといい表現が見つけたいとか、一方向だと感じる理由を自分の中で整理したいというあたりです。dispatcher 、store 経由に制限して、部分 View が個々にサイクルをつくるのではなく、全体でひとつのサイクルにしている、そのフローが一方向?

2016-06-23 08:53:51
bouzuya @bouzuya

@kuy 制限の仕方やその特徴を、一方向あるいはそれ以外の表現でうまく説明できればすることができれば勝利です。

2016-06-23 08:55:42
bouzuya @bouzuya

なぜ、一方向データフローみたいな説明が出てくるのか、どうなると一方向だと感じるのか。

2016-06-23 08:57:20
bouzuya @bouzuya

部分ビューが個々に動いても store 経由なら flux ?

2016-06-23 08:57:58
kameturu @kameturu

@bouzuya 個々のViewが(ほかのViewに影響しうる)modelを各々で持つとカオスというのがfluxが解決しようとしていた問題という認識 infoq.com/jp/news/2014/0…

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

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

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

twitter.com/bouzuya/status… を踏まえると、一方向以前に、データフローを集約することに意味がありそうだ。集約し、一本化するからこそ、一方向に見えるのではないか。逆にバラけていれば一方向に統一されているようには見えないのではないか。

2016-06-23 09:16:21
Yuki Kodama @kuy

@bouzuya 全体で1つの、という表現はいいですね。そもそもstateはstoreに置いてviewに持たせないというのも特徴だと思うので。

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

単に集約するだけではなく、方向性を重視するのはなぜか?それは直接 dispatcher を view が subscribe するわけでなく、store 経由で得るからだろうな。

2016-06-23 09:18:11