なぜReactを使用するのか
#React
#技術の審美眼
WhyReact.md
プログラムを「計算機への命令」ではなく「関数を適用して値を得る計算」の定義と捉える
ステートフルなGUIを作るのが本質的に難しいという問題がある
歴史(過去)を話す
https://qiita.com/mqtsuo02/items/4bace06c85f5f1872db6
https://zenn.dev/silverbirder/articles/725370f2e1ae8e
---
#opinionated
koushisa.icon
Viewの
時空
抽象のアーキテクチャが優れている
宣言的UI
ミクロレベルのViewの更新が隠蔽される
全てが明示的 & ピュアな関数で書けるので
DX(Developer Experience)
が良い
テンプレートエンジン
のような独自記法や魔法が少なく
技術の螺旋
に耐えられる
関連:
Signal否定派
State as a Snapshot
であり、状態変化によってDOMは全て作り直されることが前提となっている
この
プログラミングパラダイム
は、
Vue
など他のライブラリと異なる
Immutable Model
と
参照透過性
のアプローチにより状態とレンダリングと結びついている
→レンダリングの
一貫性
と
整合性
を得られる
→開発者は時系列で変化していく
ドメイン
に集中できる
→
フロントエンドと時空
React Fiber
評価と実行の分離
パフォーマンス
チューニングの隙間を生む
Reactの特権
洗練された
Simple
さ
メンタルモデル
さえ覚えれば魔法が少ない
トレードオフで一定の
学習ハードル
がかかる
Simple
すぎて難しい問題を解決するのが
React Docs
Reactを学ぶ =
関数型プログラミング
のエッセンスを学べる
#opinionated
プログラミング
の
無形資産
も増えていく
DX(Developer Experience)
と
UI/UX
の両方に刺さることを率先する姿勢に共感できる
React Hooks
Streaming SSR
React > Concurrent Features
定期的にメンタルモデルを外部の
環境変化
に適応させるフェーズがくる
5年に一度
パラダイムシフト
を起こす
ex
Recomposeとは何だったのか、またはHooksが開けたパンドラの箱について
App Router(appDir)への反応
一瞬パニックにはなるかもしれないが、それは
技術の螺旋
や
ソフトウェア式年遷宮
によるもの
エンジニアとして生きるための必要経費
だと思う
新しい方法論の提示
プログラム以外にもあらゆる観点でメンタルモデルと一致した状態を目指す
選択肢を増やすには技術がいるが、減らすには哲学がいる
Reactの提供する哲学は一貫している
UIを開発するために必要な土台となる
メンタルモデル
と方法論
そのおかげで長く生き残ることができる
故に、
(自分の環境においては) React が Easy と Simple を両立していて理想的である
koushisa.icon
初心者にとって
学習ハードル
高いのは否めない
純粋性や不変性などのイデオロギーを「とりあえず完成させる」ことよりも重視する
Reactの学習ハードルの高さ
→
なぜNext.jsを使用するのか