Redux
Not Posted
2017年記事にしそこねたやったこと
- コマンドプロンプト(バッチファイル)
- コマンドプロンプトからPowershell実行
- シェルスクリプト
- AWS System Manager Run Command (sum)
- VagrantでSQL Server他DBもセットアップしたよ
- Nano Server試そうとした
- React Redux…etc
- Webpack
- Docker再入門とWP開発環境の作成
- WordPressテーマ開発用のベースを作成した
- AWS Lambda をPythonで
- AWS Lambda をNode.jsで
- CakePHP 3 tutorial 少しやった
- Vagrant でPHP開発環境作成
- Terraform試した
- Hugo用テーマを作成した
忙しいというよりは怠惰だったのと、Hugoのテーマを変えてからやろうと言い訳してるうちに忘れてしまった。
コマンドプロンプト(バッチファイル)
Windowsサーバーでバッチファイルで操作しようとした時に少しおぼえた。
例えばこんなこと。実行結果を変数に入れるのが面倒。
setlocal enabledelayedexpansion
for /f %%a in ('whoami') do @set watashi=%%a
echo %date% %time% !watashi! >> execute.log
別プロセスで実行する方法
think about redux
Reduxについて感化されたこと
Reduxについて不満に思っている部分について考察している記事を見かけた。
自分もReduxを少し触ってみて「?」と思っていたことなどが言語されていた。
理解して納得していること
Reactの場合は上からもらうプロパティはPropsで読み取り専用。
要素ごとにstateという読み書き可能なプロパティを持つ。
ReduxはFluxアーキテクチャの実装。
1つの状態を管理するStoreのみ。
Actionを呼びReducerが状態を更新する。それぞれはプレーンなjavacsriptで書く。
ここまではいい。とても素敵に感じた。
受け入れがたいところ
javascriptといえば、画面上の何かを触ったらイベントを拾って画面を変えたりとか、非同期で外からデータを持ってくるとかですよね。
その非同期処理をReduxではどう書くのか、実はActionは処理のオブジェクトを生成するだけだし、Reducerは更新結果の状態を同期処理で作るだけ。
ビジネスロジック的なものや非同期処理はどこに書くのか?
基本的には無い。なので後付け?でてきたMiddlewareてのを作る。
Reduxの思想では、非同期の処理前、処理中、処理結果(成功・失敗)をそれぞれ状態として更新する。
その処理をMiddlewareに書くのだけれど…書くのだけれど、これがすごく気持ち悪いと感じていた。
いろいろ他の書き方が無いのかとか本来自分はどう書きたいのかということを考えると、乖離が大きく、辛い。
その辺りをReducerの状態を更新する処理のところで非同期処理を呼び出して結果を入れる書き方を考えた方がいらっしゃって、外国のReduxのコミュニティに投稿したら、disられてた。
Reduxの基本設計に不備があって、それをごまかすためのMiddlewareは許されて、Reducerに非同期処理結果を突っ込むのは違うとかって言うの、どうなの?
まとめ
ReduxのMiddlewareがいまいち気に入らないので、非同期処理も考慮されたFluxアーキテクチャのオレオレ実装を作るしか無いのか。。。