概要
- 2010年のBackbone と 最新のReact の比較
- コード量や目的はほぼ同じ
- Reactの抽象化 による複雑性の増加
- 実装の分かりやすさ と デバッグの難しさ
- 今後求められる 新しいモデル への期待
15年の進歩
- Backbone(2010年) と React(最新) の実装比較
- コードの長さや機能はほぼ同等
- Reactは巨大なエコシステム と 多大な開発工数 を背景
- 進歩の本質は「どれだけ良くなったか」ではなく「どれだけ変わっていないか」
- 進化の実感の薄さ が浮き彫り
シンプルさの錯覚
- Reactは見た目がクリーン で読みやすい印象
- その可読性は 抽象化による複雑性 の代償
- Backboneは処理の流れが明確 で、初学者でも追いやすい
- 「このイベントが起きたら、この処理をする」という 直感的なモデル
- Reactは多くを隠蔽 し、内部の理解がなければ問題解決が困難
React特有の落とし穴
- リストアイテムのkey をindexにしたことで stateが消える 現象
- inputのvalueがundefined になり、制御不能・制御済みの切り替えでリセット
- useEffectで無限ループ :依存配列に毎回新しいオブジェクトが入る
- useMemoやuseCallback で「識別子の安定化」が必要
- クリックハンドラが古いstateを見る :クロージャの罠
- setStateの関数型更新 や依存配列の調整が必要
- どれも 本質的な課題 ではなく、 React固有の対処法 を強いられる
魔法の代償
- これらの問題は 珍しいものではなく日常的
- デバッグにはReact内部の深い理解 が必要
- 「なぜ動くのか分からないまま動く」ことの危うさ
- 仮想DOMのdiffやスケジューリング の知識が求められる
- BackboneやjQueryはハックしやすく、透明性が高い
次に求められるもの
- 本質は「 イベント+状態=UI」のシンプルな方程式
- 大規模アプリ にはReactの複雑さも意義あり
- しかし 大多数の小規模アプリ には過剰な魔法
- 直感的かつ堅牢、ハック可能な新しいモデル への期待
- BackboneやjQueryのように中身が見える開発体験 の復権
出典: panphora