💡

Reactの思想は消えた、もうVueでもいいよね、ていうか他のはどこ行った...

に公開

はじめに

私はVue支持者、というかNuxt支持者で、普段はNuxtでWEBアプリの開発を行っているのですが、現在ReactでHPのチーム開発をしてます。現在の構成は「React × Tailwind4」で、一部CSSを書こうとしたときにSCSSで書きたいと思って調べると,,,びっくりする事実に気付いてしまいました。
つまりそれはTailwindは純粋なCSSではない、ということです。
おい!聞いた話と違うやんけ!!
と思ったので、ChatGPTに色々問いかけて、ついでに以下の記事を作ってもらいました。
ChatGPTのいうことなので正直どこまで信用できるか微妙ですが、まあご愛敬です。

「Nuxt.js、Vercelに合流」(参考)とかもありますし、一時期注目されていたNue.jsはどうなったんや、とか、JSフレームワーク周辺の謎の停滞感がある状況ではありますが、とりあえずはAIの書いた記事をどうぞ。

なんか変な言い回しをしてますが、AIなんで、気にしないで
誤りは指摘いただけると助かります、他のユーザの為にも

React純粋主義の終焉 ─ Tailwindとともに歩む実用主義への変遷

もしReactが「純粋なJavaScript主義」を捨てたのなら、
Vueでも良かったのではないか?

フロントエンド開発者が、
近年の React + Tailwind の流行を見て感じている根源的な違和感です。

本記事では、Reactがどのようにして「JS純粋主義」から「実用主義」へと変化したのか、
そしてなぜTailwindと結びついたのかを、年表と思想マップで解き明かします。


🏁 2013〜2014:React誕生 ― 純粋主義の始まり

キーワード:All in JavaScript

要点 内容
React初版(v0.3〜0.8)登場 Facebook内部ツールからOSS化
JSX導入 HTMLをJS構文で表現(テンプレートを排除)
Virtual DOM DOM操作をJSロジックで抽象化
思想 「UI = f(state)」 ─ すべてをJSで完結させる
CSSとの関係 CSS-in-JS が理想とされた

🧠 この時代のReactは、「HTMLもCSSもJSに従属させる」という立場でした。
JSが全ての中心であり、HTML/CSSは従属的存在です。


⚙️ 2015〜2017:普及期 ― 関数的UIの時代

キーワード:宣言的UI・One-way Data Flow

要点 内容
React 15リリース コンポーネント化が業界標準に
Redux, Flux 状態をJSで完全に制御するアーキテクチャ
CSS-in-JS流行 styled-components, emotion が台頭
競合 Vue 2登場:「テンプレートでよくない?」という潮流

🧠 Reactは「純粋関数でUIを表現する」哲学を貫いていましたが、
この頃から「複雑なJS構文を嫌う層」がVueに流れ始めます。


🪞 2018〜2020:Hooks登場 ― 構造的純粋性の崩壊

キーワード:useState, useEffect, useContext

要点 内容
React 16.8でHooks導入 クラス構文を廃止し、関数だけで状態管理
useEffect問題 副作用の扱いが難解に(純粋関数とは言いにくくなる)
styled-componentsの限界 パフォーマンス・複雑性が露呈
Tailwind 1.x登場 CSS-in-JSへの逆提案として注目され始める

🧠 「すべてをJSで完結させる」理想が、
現実の開発複雑性の中で破綻し始めた時期です。
ここから「JSの外に逃がしたい」という欲求が生まれます。
→ その出口が Tailwind CSS でした。


⚡ 2021〜2023:Next.js & Tailwind ― 実用主義の勝利

キーワード:DX(Developer Experience)

要点 内容
Next.js普及 SSR・SSGがReactと統合
Tailwind 2〜3系普及 React界のデファクトCSSフレームワークに
CSS-in-JS衰退 パフォーマンス・設定の複雑さが敬遠される
React Server Components構想 JSの外部化が再び進む

🧠 React開発者はこの頃から明確に、
純粋性よりも開発効率」を選ぶようになります。

Tailwindのユーティリティクラスが、
JSX内で動的にスタイルを構築するAPIのように機能し始めました。

React:「JSでUIを書く」
Tailwind:「CSSをJSXで書く」
→ 方向は逆なのに、結果的に補完関係が成立した。


🌍 2024〜現在:React 19 / Tailwind 4 ― ハイブリッド主義の時代

キーワード:調和・共存・自動化

要点 内容
React 19 (Server Components正式化) テンプレート的概念が再導入される
Tailwind v4 PostCSS廃止、純CSS構文でSass的表現力を持つ
Meta-framework時代 Next.js, Remix, Astro などが主戦場に
思想 「純粋さよりも協調性」

🧠 Reactは今や「JSの中にCSSを書かない」。
Tailwindは「CSSの中でJS的抽象化を行う」。
結果、両者は“再び中間点で出会った”のです。


🧭 React思想の変遷マップ(年表で見る思想の進化)

年代 思想段階 キーワード 方向性・変化のポイント
2013〜2014 🧩 純粋JS主義 「All in JavaScript」
「UI = f(state)」
HTML/CSSをJSに統合。
JSX・Virtual DOM登場。
2015〜2017 ⚙️ 関数的UI主義 宣言的UI・Redux 状態とUIの分離。
JSでアプリ全体を制御。
2018〜2020 🪞 複雑化期 Hooks・CSS-in-JSの限界 副作用の増加。
「JSが重すぎる」問題が浮上。
2021〜2023 実用主義 Next.js・Tailwind DX(開発体験)を最優先。
CSSを再び分離・効率化。
2024〜2025 🌍 調和主義 React19・Tailwind4 JSとCSSの再統合。
“純粋性”より“協調性”を重視。

🧠 補足解説

  • 純粋JS主義(2013〜)
    Reactは「UIをJSの関数で表現する」という革命的発想から始まった。
    HTMLやCSSは副次的な存在とみなされ、JSX が新しい標準となった。

  • 関数的UI主義(2015〜)
    ReduxやFluxによって、状態をJSで統一的に管理。
    「副作用のないUIレンダリング」という関数的思想が強調された。

  • 複雑化期(2018〜)
    Hooksの登場で純粋関数モデルが崩れ、
    副作用(useEffect)や依存関係管理が複雑化。
    開発者の間に「JSに詰め込みすぎでは?」という反発が起きる。

  • 実用主義(2021〜)
    CSS-in-JSが重くなり、Tailwindが“逆方向の解決策”として登場。
    React開発者は**「JSの中でCSSを書く」から「JSXでCSSを組み合わせる」**へ転換。
    「All in JS」から「JS中心+CSS協調」へのパラダイムシフト。

  • 調和主義(2024〜)
    React19ではServer Componentsが導入され、
    再びテンプレート的な構造が評価されるように。
    Tailwind4もCSSを標準構文に回帰し、
    ReactとCSSは「分離ではなく調和」の関係に戻った。


🧩 一文でまとめると

Reactは「JSが全て」という純粋主義から出発し、
Hooksで複雑化し、Tailwindと出会って実用主義へ転じ、
そして今は「JS・HTML・CSSの調和」という成熟した中庸に辿り着いた。

⚖️ React vs Vue vs Tailwind ― 思想対比表

項目 React(当初) React(現在) Vue Tailwind
哲学 JS純粋主義 実用主義(中庸) 調和主義 抽象主義
UI構築方法 JSX(JS拡張構文) JSX + DSL テンプレート構文 ユーティリティクラス
開発者体験 関数的・抽象的 柔軟・高速 宣言的・直感的 組み合わせ的・即時的
CSSとの関係 CSS-in-JS Tailwind主流 <style>共存 独自CSS構文
現代的役割 JSの基盤 Webアーキテクチャのコア バランス型 UI層のミドルウェア

🧩 結論:純粋主義は否定されたが、調和主義が勝利した

ReactがTailwindを受け入れた瞬間、
Reactはもはや「純粋なJavaScript哲学の体現者」ではなくなった。

しかし同時にそれは、
フロントエンドが“JSの覇権”から“協調的Web設計”へ進化した証拠でもある。

  • Vueは最初から調和主義だった
  • Reactは純粋主義から実用主義へ歩み寄った
  • TailwindはCSSをAPI化し、両者の接点を作った

🧭 結局のところ──
純粋主義は否定されたが、調和主義が勝利した。


📘 まとめ

  • Reactはかつて「JSで全てを制御する」純粋主義だった
  • HooksとCSS-in-JSの混乱を経て、その思想は実用主義へ移行
  • TailwindがReactの「JS中心思想」に現実的な出口を与えた
  • 現代のReactは「JS・HTML・CSSが協調するハイブリッド主義」
  • Vueの原点と再び交差し、フロントエンドは“調和の時代”に入った

というわけで終わりに

ここに書いてあることは本当なのだろうか、、、
うーん疑わしい、が
当初React信者が口にしていたのは、JSXはJS標準仕様だから純粋であるといった論調であった。
私は「純粋=良い」はそもそも意味が通じていないと思った。おかしいと思った。もしかしたらReact信者もそんなことは思っていなかったかもしれない。
そして、Tailwind が流行った、私はこれも意味が分からなかった、Styleに書けばよいことを、或いはUIフレームワークを使えばもっと便利なものを、なぜわざわざクラスにするのか理解できない。
そしてここにきて、Tailwindは純粋なCSSではない、ということも知った。

全部が全部矛盾している、それでも使い続けられるのは
1つは既に覇権を取って、周辺環境も整っているということ
1つはサポート体制、主導者がVueのように脆弱ではなかったということ
1つはVue3がその複雑な仕様により勝手に瓦解したということ
1つは結局何らかの直感的な使いやすさにおいてReactに優位があったということ

なのだろう

けれどな、私はどう考えてもNuxtが優れていると思うよ。少なくとも思想的にはReactである理由はなくなったし、JSXにはいまだに違和感しかない。
Reactユーザを否定はしないけれど。

Nuxt はどうなる

正直わからない。
でも、性能は良いにしても資金面や体制に問題があったNuxtが救われたのは非常に大きい。
そして、一応今のところは、統合できるところは統合して、それぞれの良いところはばらばらに共存する方針らしい。
個人的には、VueのOptions APIを廃止して、JSX、ないしはTSXにすれば、お互い満足なのではないかな。

Nue はどうなった

以下、AI談
うーん、期待した感じにはならないかなあ
兎に角、HPをみると内容がペテン的で信用に足らない

  • Nue.jsが「ライトウェイトUIライブラリ/フレームワーク」として一定のニッチを確保していく可能性が高いです。特に「静的サイト/シンプルUI/低依存」を重視する場面で。
  • 既存の大手フレームワークに比べて「学習コスト」「開発者供給」「ライブラリ互換性」が弱いため、これらが改善されると採用が広がる可能性があります。
  • Web開発トレンドとして「依存を減らす」「ビルドサイズを抑える」「標準技術(HTML/CSS/JS)を活かす」という流れがあるため、それに乗る形でNueが評価を受けるかもしれません。
  • 逆に、機能拡張・サードパーティ統合・大規模支援が遅れると、“実験的/趣味的”な枠を抜けられずに終わる可能性もあります。

Discussion