「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>React#i6a6e2f6]]

*目次 [#x722733e]
#contents

*概要 [#u1f5d48d]
Facebookの提唱する

-observerパターン。
-MV*とは全く違う概念ではなく、延長線上。
-MVVM的だが、バインディングが一方向。
-MVVM的だが、バインディングが(出力の)一方向のみ。

*特徴 [#df153daf]
-アプリケーションを以下の4つの[[ドメイン>#l38142a7]]で構築する。
--[[Action>#da7c8dc8]]
-- -> [[Dispatcher>#o1ac7ccf]]
-- -> [[Store>#p3c60442]]
-- -> [[View>#q866d736]]

-[[ドメイン>#l38142a7]]間のやり取りを疎結合な機構を用いて以下のように行う。
--ユーザの入力が[[View>#q866d736]]に対して発生したことをロジック側に伝える。
--ロジック処理の結果にデータが変更したことを[[View>#q866d736]]に伝える。

-各[[ドメイン>#l38142a7]]間のメッセージの送信方向は、~
組み合わせによって必ず一方向に決定される。

 Views ---> (Action) ----> Dispatcher ---> (registered callback) ---> Stores -------+
 ∧                                                                                  |
 |                                                                                   ∨
 +-- (Controller-Views "change" event handlers) ---- (Stores emit "change" events) --+

*ドメイン [#l38142a7]

**Action [#da7c8dc8]
-[[View>#q866d736]]に対するユーザー入力やネットワーク経由の入力を待ち受ける。
-入力を基に[[Dispatcher>#o1ac7ccf]]にメッセージを発行する。

**Dispatcher [#o1ac7ccf]
-シングルトンで、インスタンスの管理不要。
-[[Store>#p3c60442]]に向けてメッセージを発行する場合に経由する。
-[[Store>#p3c60442]]間の処理順序の依存性を解決する。

**Store [#p3c60442]
-データ処理の領域を取り扱う。
-内部は完全に隠蔽されている。

**View (Controller-View) [#q866d736]
Facebookの流儀では、ここで[[React]]を用いて描画コストの問題を解消する。

-ユーザからの入力と
-データの出力(表示)を
--[[Store>#p3c60442]]のメッセージを購読する。
--[[Store>#p3c60442]]の入力データを出力する。

>取り扱う。

-複数インスタンス作成可能。

-過剰なコンポーネント化~
複雑な状態の保持や、予期せぬ[[Action>#da7c8dc8]]の呼び出しを発生させる。

*メリット [#q3fb1e2f]
「データが更新された」というメッセージが発行されれば、~
そのメッセージを購読しているビューが勝手に更新される。

-[[ドメイン>#l38142a7]]間の依存性地獄の回避し、煩わしい管理をする必要が無くなる。
-データフローが常に一つになり、処理の予測が可能になる。
-[[ドメイン>#l38142a7]]間の連携が非同期(疎結合)。

*参考 [#t65160af]
-Fluxアーキテクチャの概要 | Simplie Post~
http://post.simplie.jp/posts/36

-Fluxアーキテクチャについて調べてみた - しめ鯖日記~
http://www.cl9.info/entry/2016/04/18/233316

-Fluxとはなんなのか~
https://qiita.com/knhr__/items/5fec7571dab80e2dcd92

**[[Redux]] [#p7e2906a]

**メリット・事例 [#dcd62a04]
-Fluxアーキテクチャの覚え書きを書いた - saneyuki_s log~
https://saneyukis.hatenablog.com/entry/2014/09/26/174750

-Facebook の決断:MVCはスケールしない。ならば Flux だ。~
https://www.infoq.com/jp/news/2014/05/facebook-mvc-flux

-Androidアプリ開発にFluxアーキテクチャを導入したら~
保守性も品質も上がりました - Start Today Technologies TECH BLOG~
http://tech.starttoday-tech.com/entry/android-flux

**POSTD [#cdf1604a]
-FacebookのFluxアーキテクチャの始め方
--Part 1~
https://postd.cc/introduction-to-facebooks-flux-architecture-1/
--Part 2~
https://postd.cc/introduction-to-facebooks-flux-architecture2/

-さらに多くのことが変化する – Fluxは新しい”WndProc”である~
https://postd.cc/the-more-things-change/

-Reactを用いたアプリケーションアーキテクチャ:Fluxを再考する~
https://postd.cc/application-architecture-with-react-rethinking-flux/

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS