前提: 当時の私の Redux に対する認識や知識
- Flux: MVC, MVP, MVVM などと同じレイヤーで扱われるアーキテクチャパターン
- Redux: Flux を実現するための具体的な実装、ライブラリ
- つまり https://github.com/reduxjs/redux のこと
- Flux については 2014年末くらいに割としっかり調べてて情報を追っていたりした
- Redux はそういうライブラリがあって今メジャーな存在になってるな程度の知識
- あとは Elm から影響を強く受けているとかそういう話くらい
疑問
モバイル (Android, iOS) 界隈で "redux" について言及する時に特定の実装を指していないような気がするんだけどこの場合の "redux" って何だ?
投げた一連のツイート
私の認識だと redux って js の具体的な実装っていうかライブラリという感じなんだけどアーキテクチャパターンになったの?
— •••••••• (@nashcft) December 23, 2018
その場合、"redux" というライブラリ (https://t.co/FyUnHlcOr1) を使ってその作法に則って web アプリを構築したらそのアプリのアーキテクチャは "flux" と呼びますか? それとも "redux" と呼びますか? 私は前者の認識なのですがiOS含むモバイルの文脈では後者で語られるので 🤔となっています
— •••••••• (@nashcft) December 23, 2018
ああー、なんか理解できました。モバイル界隈はその状態から redux という実装 (= ライブラリ) が抜けた形で輸入されているので、「flux というパターン」に対して「redux というパターン」って存在の仕方になって私がJS界隈を見て作った認識とずれて違和感を抱いたみたいです。
— •••••••• (@nashcft) December 23, 2018
今調べてみたらiOSには ReSwift というのが 実装としての redux として存在しているようですhttps://t.co/BjW5Fnu2Wp
— •••••••• (@nashcft) December 23, 2018
Android 界隈では「実装してみた」系 repo はありますが決定的なのはなさそうでした
「モバイル界隈」ってのは主語が大きすぎましたね...
初めて知ったこと
- https://github.com/ReSwift/ReSwift の存在
- Redux の motivation とか core concepts とか three principles とかそういった思想的な部分の詳細
誤解? してたこと
- Android にも iOS にも reduxjs/redux に相当するような "redux" という実装 (= ライブラリ) は存在しない
- "redux" という語は特定の実装を指す
- Three principles に則っていればそれは redux と呼べるみたいな認識っぽい
- つまり一種のパターンとして認識されていることになる
Android 界隈に関しては reduxjs/redux のコンセプトだけ輸入して各々実装をしているという状況のように見えるので私の混乱の原因はそれっぽい。上に書いたように iOS は ReSwift (ReduxKit) が redux の実装として使われているようだけど、実装と共に redux が伝えられたのかは調べてないので不明なのと、あと名前が変わって "redux" という語がなくなってしまったので結局 "redux" はコンセプトだけを指すようになっていると認識している。
結局 reduxjs/redux がJS界隈でどのように普及・認識されていって、それがどのような形でモバイル界隈に輸入されていったのか知らないまま適当な発言をしていたという感じで、今もよくわかっていない。