Fluxはおもしろそう。

FacebookがUI部分をMVCではなくFluxという考え型(ライブラリ)で開発しているらしい。
Facebook の決断:MVCはスケールしない。ならば Flux だ。

まだソースを見たわけではないけれど、記事から得た印象を書いておく。


まず前提としてはDDDによるレイヤーがある気がする。UI層とドメイン層に橋を架ける形でDispatcherとStoreがあるというのが基本的な考えのように思える。

もちろんMVCでもViewとModelの橋渡しはCが担うのでコメントでMVCを取り違えているというのはわかるのだけれど、(MVC)^nをCを固定化して(M+α)^n(V+α)^nCの形で複雑性を取り除くことに挑戦したのではという感じがする。Dispatcherが配信もおこなうということなのでアプリケーション層を固定化してしまっている感じではないかとおもう。

その理由としてはJSではコールバックによる非同期での処理が一般的になっていて、その処理をわかりやすくするためにDeferredとかPromiseとかでてきていて、各処理を直列にすることはできた。
しかしいろんな機能を横断しようとすると無理がでてきたんではないだろうか?何が難しいのかはわからないが、無理とおもったのであればやはり何かあるのだろう。FacebookのUIに特有のことかもしれない。

その結果でてきたのが、UIイベントをドメイン領域への入力に変換していってドメイン領域のインタープリターで逐次実行するという方法なんじゃないかとおもった。Dispatcherがそれにあたるのであれば、もう少しドメイン入力への変換部分とドメイン入力を貯めるキューもしくは配信する機能に分かれる気がした。配信するといっているのでおそらくそうなんだろうけど、キューにしてStore側が自分でペースで消費していく方がいいんじゃないかともおもう。

今度じっくりソースをみてみよう。もしかしたら昔のGoogle Waveなんかに近いんじゃないだろうか?