👌

React でできて Vue にできないことはあるのか?

に公開

設計思想の違いから見る React の強み

フロントエンド開発をしていると、よく比較されるのが React と Vue。

どちらもコンポーネントベースで UI を構築できる人気ライブラリですが、実際に触ってみると「思想」がかなり違います。

特に React は、

  • 自由度が高い
  • JSX が強力
  • エコシステムが巨大
  • Web 以外にも広がっている

という特徴があり、Vue とは別方向の強みを持っています。

この記事では、

「React でできて Vue にできないこと」

というより、

「React の設計だからこそ強みになる部分」

を整理してみます。


React と Vue の思想の違い

まず前提として、React と Vue はどちらも優秀です。

ただし、設計思想がかなり違います。

項目 React Vue
思想 UIライブラリ フレームワーク寄り
テンプレート JSX Template構文
状態管理 自由選択 公式推奨あり
ルーティング 別ライブラリ Vue Router
柔軟性 非常に高い 統一感が高い
学習コスト やや高い 比較的低い

Vue は「統一された開発体験」を重視しています。

一方 React は、

必要なものを自分で選択する

という思想です。

この違いが、React の強みにつながっています。


JSX の自由度が圧倒的に高い

React 最大の特徴は JSX です。

function App({ user }) {
  return (
    <>
      {user ? (
        <Dashboard user={user} />
      ) : (
        <Login />
      )}
    </>
  )
}

JSX は見た目は HTML ですが、実態は JavaScript です。

つまり、

  • 条件分岐
  • ループ
  • 関数
  • 配列操作
  • 高階関数
  • オブジェクト操作

などをそのまま UI に統合できます。


Vue の template は読みやすいが制約がある

Vue の template は HTML に近く、直感的です。

<template>
  <Dashboard v-if="user" />
  <Login v-else />
</template>

学習しやすい反面、複雑なロジックを書くと分離が必要になります。

例えば、

  • computed
  • methods
  • setup()

へロジックを逃がすケースが増えます。

これはメリットでもありますが、React のように

JavaScript の表現力をそのまま UI に持ち込む

という柔軟性は弱めです。


React はエコシステムを自由に選択できる

Vue は公式でかなり整っています。

  • Vue Router
  • Pinia
  • Nuxt
  • VueUse

などがあり、統一感があります。

一方 React は、

  • 状態管理
  • SSR
  • ルーティング
  • データ取得

などを自由に選択できます。

例えば状態管理だけでも、

  • Redux Toolkit
  • Zustand
  • Jotai
  • Recoil
  • MobX

など大量に存在します。


React は「最適構成」を組みやすい

これは大規模開発でかなり重要です。

例えば、

  • 超大規模SPA
  • マイクロフロントエンド
  • 高頻度更新UI
  • 管理画面
  • SaaS

などでは、用途によって最適な構成が変わります。

React はコアが小さいため、

必要なものだけ採用する

という設計ができます。

Vue は統一感が強い反面、React ほど「完全自由」ではありません。


React Native の存在が大きい

React の強みとしてかなり大きいのが React Native。

React の思想をそのままモバイルへ持ち込めます。

<View>
  <Text>Hello</Text>
</View>

Web の React と考え方がかなり近いため、

  • Hooks
  • Component設計
  • State管理

などを共有できます。


Vue はモバイル展開が弱い

Vue にもモバイル系ソリューションはあります。

  • NativeScript
  • Ionic Vue

など。

ただし、React Native ほどの巨大エコシステムや実績はありません。

特に企業開発では、

  • React Web
  • React Native

をセットで採用するケースがかなり多いです。


大規模開発で React が選ばれやすい理由

React はエンタープライズ開発でかなり採用されています。

理由は、

  • 柔軟性
  • 分離性
  • ライブラリ資産
  • TypeScript親和性
  • Meta製という安心感

など。

特に、

「チームごとに最適化しやすい」

という特徴が大きいです。


マイクロフロントエンドとの相性も良い

React は分離しやすい設計なので、

  • Module Federation
  • 単位ごとの独立デプロイ
  • チーム別管理

などとも相性が良いです。

これは大企業で重要になります。

Vue でも可能ですが、React のほうが事例・ライブラリ・知見が豊富です。


React は「ライブラリ」だからこそ強い

React はよく、

「自由すぎる」

と言われます。

実際その通りです。

ただ、その自由さが、

  • 複雑な要件
  • 独自設計
  • パフォーマンス最適化
  • 大規模化

に強い理由でもあります。

Vue は「決められたレール」が強いので、学習コストは低いです。

一方 React は、

自由度を武器にできる中〜上級者向け

とも言えます。


どちらが優れているのか?

結論として、

「どちらが上か」ではなく「何を作るか」

です。

例えば、

向いているケース 技術
学習コスト重視 Vue
小〜中規模 Vue
統一感重視 Vue
大規模SPA React
柔軟な設計 React
モバイル連携 React
ライブラリ資産重視 React

という傾向があります。


まとめ

React の強みをまとめると、

  • JSX の圧倒的自由度
  • JavaScript と UI の統合
  • 柔軟なエコシステム
  • React Native
  • 大規模開発との相性
  • マイクロフロントエンド対応

などがあります。

Vue は「学習しやすく統一感がある」ことが強み。

React は「自由度と拡張性」が強み。

この違いを理解すると、技術選定の見え方がかなり変わってきます。

参考文献

https://www.thefrontendcompany.com/posts/vue-vs-react
https://progneer.net/programming-language/react-vue/
https://note.com/zenshin_inc/n/n63311230bb2a
https://note.com/zenshin_inc/n/n63311230bb2a
https://cloudinary.com/guides/vs/react-js-vs-vue-js

Discussion