- k_bigwheel
- 982
- 3
- 0
- 0
React(nextjs)をまた触っているんだけど、これFunctionalなのは計算機工学の進化上正しい道だとして、関心事の分離、具体的にはカプセル化やDependency Injectionがやりづらいのは微妙に感じる。 根本的には、JavaScript上でFunctionalをやろうとしていることに無理があるんだと思う。
2024-01-07 00:03:17その辺の歪みがめちゃくちゃ扱いが特殊なsetXxxxだったり、容易に発生する無限ループだと思う。 react(nextjs)は膨大なリソースで持ってそれを抑え込んでいるけど、WASMなどで関数言語使えばよりシンプルな解決ができるかもね。
2024-01-07 00:03:18やっぱりreact(nextjs)はトリッキーだなあ。 フレームワークの理想は言語機能を従前に活用した上で言語でできること = フレームワークで表現できること、であることだと思っているけど、reactはjavascript言語の表現力に変な制約と固有のルールを持ち込んじゃうんだよな。
2024-01-07 00:26:08例えばsetXxxの変な制約やfunctional componentでイデオム的にclassが使えない(使えなくはないけどspread演算子が使えなくてすごく書きづらい)など。
2024-01-07 00:26:09理想論を言うなら、フレームワーク側で変な迂回策取るんじゃなくてJavaScriptの言語機能を拡張するのが正道なんだろうけど、JSは政治的に面倒すぎて変えるのが辛い。だからこんな魔改造をしている。
2024-01-07 00:26:09考えてみると、reactもnextjsも大したことしてないんだよな。nextjsがやったのはフロントエンドとバックエンドの言語を統一したことと、そのFE/BEの処理を透過的にしたことだけ(エッジコンピューティングなんかも最近やるらしいけど、まあBE処理の派生だよね)。
2024-01-07 00:36:03フロントエンドとバックエンドの言語を適当な関数型言語にできれば、nextjs相当に必要なのはBE/FEの処理の透過化ぐらい。めっちゃ薄いフレームワークになると思う。 なのにnextjsがあれほど巨大なフレームワークになっているのは、それがJavaScriptだと難しいからなわけで。
2024-01-07 00:36:04やっぱり、nextjsの課題はJavaScriptという古くて歪んだ制約の中でモダンで高機能な開発を行おうとしている点なんだと思う。だから、nextjs単体での解決は難しい。
2024-01-07 00:36:04class componentからfunctional componentへ移行できたことで、今後もよりsimpleになる可能性があるのかなと思ったけど、nextjsの複雑性の源泉が前述の理由なので、たぶんこの複雑性は永久に変わらなんだろうなという結論になった。
2024-01-07 00:36:05