なぜ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を使用するのか