なぜすべての人がReactを使うのに、私たちは使わなくてもいいのか?

なぜReactを使うのか、私たちはなぜ使わなくてもいいのか?Reactの必要性と複雑さについての話。フロントエンドの戦争の歴史とHotwireの誕生の理由。

bamchi 444

なぜ皆がReactを使うのに、私たちは使わなくてもいいのか?- フロントエンドの戦争の歴史とHotwireの誕生理由

最近のウェブ開発の話を聞くと
いつも同じ言葉が出る。

「フロントはReactでやらないと。」
「最近は全部Reactを使う。」
「Reactを学ばないと開発者になれない。」

しかし、本当でしょうか?
いいえ、正確に言うと半分だけ正しい言葉です。

Reactがいいライブラリであるのは事実です。
しかし問題は…

Reactが「必要な状況」は本当に全ウェブサービスの10〜20%程度だということです。

そして驚くべきことに、
Rails開発者が作るほとんどのサービスは
その10〜20%には含まれません。


#1. Reactが定着するまで多くのライブラリが壮絶に敗れた

初心者開発者たちは知らない事実が一つあります。

Reactは最初から「絶対的な強者」ではありませんでした。
それより前に存在した多くのフレームワークやライブラリは
今ではほとんど消えてしまいました。

  • AngularJS (死亡)

  • Ember.js (死亡寸前)

  • Backbone.js (ほとんど消えた)

  • Knockout.js

  • ExtJS

  • Meteorフロントエンドレイヤー

  • jQuery + SPAフレームワークたち

  • Mithril, Riot, Preact…

フロントエンドのエコシステムは
10年間で100以上の技術が台頭し、98%が消滅する難局でした。

Reactだけが生き残った理由は大きいです:

  • それなりに構造が良かったし

  • それなりにメンテナンスがしやすかったし

  • それなりに企業が採用したからです

しかしこれはReactもいつか消えることを意味します。
なぜならフロントエンド技術の本質はいつも同じだからです。


#2. Reactもだんだん大きく複雑になっている(現実)

初期のReactは本当に単純でした。
「UIは状態(state)の関数だ。」

しかし現在のReactはどうなっているでしょうか?

  • React

  • ReactDOM

  • JSX

  • Babel

  • Webpack

  • Vite

  • Next.js

  • Zustand

  • Redux

  • Suspense

  • Server Components

  • hydration

  • client/server boundary

  • streaming

  • routing

  • bundler

  • compilerベースのレンダリング…

これらすべてが
Reactエコシステム内で「必須の議論」になってしまいました。

Reactはもはや単純なライブラリではありません。

Reactは独自の複雑な世界になり、年々難しくなっています。

こうなるとどんな問題が生じるでしょうか?

  • 新人開発者の参入障壁が急増する

  • チーム全体がReactの専門家でないとメンテナンスが難しくなる

  • プロジェクトの初期速度が極端に遅くなる

  • サーバーは単純なのにフロントが核心的複雑さの原因になる

そしてこの質問が続きます。

「私のサービスは本当にReactが必要か?」


#3. ほとんどのSaaS、ウェブサービスにはReactは必要ありません

Reactが必要な状況は主に2つあります:

  1. リアルタイムでUIが継続的に変化する複雑なSPA

    (例: Figma, Slack(Web), Notion, Trelloなど)

  2. 大規模フロントエンド組織 + マルチチーム協力が必要な超大規模プロジェクト

しかしRails開発者が作るサービスはどうでしょうか?

  • CRUDサービス

  • ダッシュボード

  • ブログ

  • コミュニティ

  • データ検索中心サービス

  • フォーム中心サービス

  • 顧客管理

  • 内部ツール

  • SaaS

  • ECバックオフィス

このようなサービスは
Reactの半分の機能さえ必要ありません。

そしてReactを使うと
開発スピードはむしろ遅くなり
複雑さが急激に増します。


#4. この背景から生まれた技術がHotwireです

HotwireはRailsチームが提案した技術スタックであり
この哲学を中心にしています。

「フロントエンドの80%はReactのように複雑である必要はない。」

Hotwireの構成はシンプルです:

  • Turbo (HTMLストリーミング + 部分更新)

  • Stimulus (小さなJavaScriptエンジン)

  • Cable + Streams (リアルタイム)

しかし核心はこれです。

HTMLそのものを更新する方法がほとんどのウェブサービスで最も速く、最も簡単で、最もメンテナンス可能である。

Reactのように
状態 → 差分 → レンダリング → hydration…
このような複雑なプロセスはありません。

HotwireはRailsの哲学をそのまま受け継いでいます:

  • 単純さ

  • 生産性

  • 繰り返し速度

  • メンテナンス性

  • コードの少なさ

  • 開発者の幸福

そして驚くべき現実:

実際に作ってみるとReactよりも3倍速く、

コード量は1/5程度であり、

バグは劇的に減少します。


#5. Reactを使わなくてもいい理由 — Hotwireが既に解決している

Reactが解決しようとしていた問題の10個のうち

Hotwireは7〜8個をサーバー中心の方法で解決します。

例:

問題 Reactの方法 Hotwireの方法
UI更新 差分計算 → レンダリング 単にサーバーが送ってきたHTML断片
状態管理 Redux/Zustand サーバー状態 = UI状態
ルーティング フロントエンドルーター Turboでページ遷移最適化
リアルタイム WebSocket + クライアントレンダリング Turbo Streamで直接HTML更新
SEO 別設定 サーバーレンダリング100%
ビルド Babel/Webpack/Vite なし (ビルドなし!)
複雑さ 高度化 低い

HotwireはRails開発者の生産性を劇的に向上させます。


#6. ではReactはどうなるのか?いつか消える。ほぼ確実に。

なぜならフロントエンドの歴史は繰り返されてきたからです。

  • 最初は単純なUIライブラリ
    → 機能がだんだん大きくなり
    → 複雑になり
    → 組織は維持できず
    → 別の技術が登場
    → 世代交代が起こる

Reactもこの道を歩んでいます。

実際に既に兆候が見られます。

  • React Server Componentsは開発者が反発するほど複雑

  • パフォーマンスの問題

  • Next.jsがReactのルールを主導(React本体が独立していない)

  • 競合者(Solid, Qwik, Svelte, HTMXなど)が登場

  • 「ビルドなし + サーバー中心ウェブ」の流れが再浮上

現在むしろ開発者たちは言います:

「最近のウェブはあまりにも複雑になった。再び単純さが必要だ。」

この流れは歴史的に常に正しかったです。

  • メインフレーム → PC(単純性回帰)

  • SOAP → REST(単純性回帰)

  • jQuery時代の難局 → React(単純性回帰)

  • 複雑化したSPA → Hotwire/HTMX(単純性回帰)

Reactは最終的に消える。ただ「いつか」の問題だけです。


#結論 — 私たちは技術を選ぶのではなく、方向を選ぶのです

Reactを学ばないと言うのではありません。

Reactが必要な時は必ず使えばいいです。

しかしほとんどのサービスにはReactは必要ありません。複雑な技術を使う瞬間に速度が遅くなり、メンテナンスが難しくなります。

Rails + Hotwireはこう言います:

「ウェブは本来単純でなければならない。

サーバーがHTMLを提供し、ブラウザが表示すればいい。

すべての複雑さは必要な時だけ少しずつ重ねればいい。」

この哲学は

AI時代の開発方法とも完璧に一致します。

初心者なら特にHotwireを使う理由が強力です。

  • 速いです

  • 簡単です

  • 明確です

  • バグが少ない

  • サーバー状態 = UI状態

  • ビルドシステムがありません

  • メンテナンスが簡単です

  • 1人開発者に最適

そして最も重要な言葉:

HotwireはReactよりもはるかに長く続く技術です。Railsの哲学は20年を乗り越え、これからも変わらないでしょう。

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

続きを読む

Get notified of new posts

We'll email you when Bamchi Blog publishes new content.

Your email will only be used for new post notifications.