Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Vue にまつわる3つのよくある誤解と、私がVueを選ぶ4つの理由

Avatar for ytr0903 ytr0903
September 30, 2025
1.4k

Vue にまつわる3つのよくある誤解と、私がVueを選ぶ4つの理由

2025/09/30 Next.js vs Nuxt それぞれの良さを知る Frontend Night
https://offers-jp.connpass.com/event/367375/
の登壇資料です!

Avatar for ytr0903

ytr0903

September 30, 2025
Tweet

Transcript

  1. Yutaro Koizumi (Twitter:@ykoizumi0903) 所属: ERPフロントチーム テックリード 工事現場の見積・予算などを作成・確認する「原価管理」 (Nuxt) 承認フローを一元管理する「資料承認」 (React

    Router / Nuxt 併用)などを担当 Zenn や ANDPAD TECH BLOG で記事を書いています 祝・正式リリース!5つのテーマで理解する Nuxt3 の魅力 - Zenn GitHub Copilot Agent の力を借りて Next.js から React Router に移行しました - ANDPAD Tech Blog Vue・React マルチプロダクト開発を支える Vite - Speaker Deck 株式会社アンドパッド(ANDPAD)
  2. このLTの趣旨 「React より Vue を使うべき!」ではないが、 「それぞれに良さがある」と思ってもらいたい 主に React を使っている人に向けて、 Vue

    の良さを知ってもらい、Vue に関するネガティブイメージを 払拭することを目標にします Nuxt と Next.js よりも、 Vue と React の違いにフォーカスして話します React が使いたくて Next を選ぶ、Vue が使いたくて Nuxt を選ぶ、という順番であることが多いはず もちろん Nuxt の話も出てきます ※ボリューム多めなので駆け足で話します
  3. 誤解される理由:Vue 2 時代の印象に引きずられている Vue 2 時代は、 Template タグ内や emit などで型を付けづらい場面があったが、Vue

    3 では全て解消 React Hooks に近い記法である Composition API が登場して既に5年以上が経過 公式ドキュメントも新規作成時のテンプレートも、既に TypeScript が標準になっている 公式拡張機能や型チェックを提供する などのツールセット Vue Language Tools (Volar) 誤解1:Vue は TypeScript との相性が悪い?
  4. 誤解される理由:Vue 2 → 3 への移行は本当に大変だったから Vue 2 / Nuxt 2

    から 3 への移行は、関連ライブラリも含めた破壊的変更が非常に多く、 開発者の大きな負荷と コミュニティの混乱を招いた ※ Vue Fes Japan 2023 KeyNote より抜粋 誤解2:Vue はアップデートが大変?
  5. Vue 3 が登場した2020年以降、破壊的変更は導入されていない <script setup> 構文、 defineModel() など、選択肢としての便利な新記法 仮想 DOM

    を使わないコンパイル戦略 Vapor Mode は、コンポーネント単位で既存モードと併用可能 Rollup とほとんど完全な互換を保った、Rustベースの高速バンドラツール Rolldown の開発を主導 → API を維持したまま内部的な性能改善がどんどん進むのは、 Vue 3 の基盤の優秀さを示している 参考: 【Vue.js 3.2】<script setup> 構文がすごくすごい 【脱仮想 DOM !?】Vue.js が控えている進化 "Vapor Mode" の詳細 (2023/12) JavaScript の新しいバンドラ Rolldown について 誤解2:Vue はアップデートが大変?
  6. 誤解される理由:Vue と React の違いを説明する上で都合が良いから 「React と Vue は何が違うの?」と訊かれたら、 何らかのわかりやすい違いを挙げたくなる 「Vue

    は学習しやすいが複雑な開発に向かない、 React は難しいが大規模開発に向いている」という説 明は、明快で答えやすい → 多くの人が同様に説明することで、イメージが再 生産されてしまう この星取表は本当に正しい? 学習しやすさ △難しい ◎簡単 柔軟性・拡張性 ◎高い △低い 向いているアプリ 大規模 小~中規模 一言で表すと? Simple Easy React Vue 誤解3:Vue は大規模開発に向いていない?
  7. 誤解される理由:Vue と React の違いを説明する上で都合が良いから Vue と React の拡張性に大きな差はない React Hooks

    と Composition API が非常に似ているのに、その適性だけガラッと変わるわけがない そもそも「React で小規模開発するのは難しい」はあまり言われないのに、Vue だけ言われるのも変 大規模開発が困難なのは、フレームワークではなく開発者の設計力の問題 Vue でも React でも設計や実装で踏んではいけないアンチパターンが存在する Mixin、Provider、Global Store、非 TypeScript の多用、過度な共通化など Vue でも React でも、小規模なアプリケーションを作るのは簡単で、大規模な開発のためにはより多くの知 識を学ぶ必要があるというだけ 最初の学習コストが低いことと、その学習だけで全てのアプリケーションが作れることは別の話 誤解3:Vue は大規模開発に向いていない?
  8. React と Vue で異なるレンダリングの仕組み コードの見た目ではそこまで差がないが、 「値の変更がどう反映されるか」が違う import { useState, useEffect

    } from 'react'; export default function Counter() { const [count, setCount] = useState(0); function increment() { setCount((c) => c + 1); } const doubledCount = count * 2; return ( <button onClick={increment}> Count is: {count} </button> ); } <script setup> import { ref, computed } from 'vue' const count = ref(0) function increment() { count.value++ } const doubledCount = computed(() => count.value * 2) </script> <template> <button @click="increment"> Count is: {{ count }} </button> </template> 理由1:簡単に高いパフォーマンスを得られる
  9. React と Vue で異なるレンダリングの仕組み コードの見た目ではそこまで差がないが、 「値の変更がどう反映されるか」が違う 理由1:簡単に高いパフォーマンスを得られる import { useState,

    useEffect } from 'react'; export default function Counter() { const [count, setCount] = useState(0); function increment() { setCount((c) => c + 1); } const doubledCount = count * 2; return ( <button onClick={increment}> Count is: {count} </button> ); } <script setup> import { ref, computed } from 'vue' const count = ref(0) function increment() { count.value++ } const doubledCount = computed(() => count.value * 2) </script> <template> <button @click="increment"> Count is: {{ count }} </button> </template> React は state が更新されるたびにコンポーネント関数全体が再レンダーされ、 トップレベルに書かれた計算も再実行される Vue の setup は最初のレンダー時に一度だけ実行される ref が更新されると、 依存関係のある computed 関数だけが個別に再計算される
  10. レンダリングシステムの違いがもたらすもの React は state や props などの値が変わるたびに、コンポーネントと、その子コンポーネント全てを新し いものに置き換える再レンダーによって変更を反映する → 更新タイミングなどの挙動を開発者が制御しやすいので、パフォーマンスを自分でチューニングしやすい

    が、注意しないとパフォーマンスの低下に繋がる Vue は ref や props をリアクティブな値として自動的に追跡し、その値が更新されると、 computed や DOM 要素などの依存関係を特定して、変更箇所だけを細かく更新する → 依存変数を自分で宣言する必要がなく、自動でパフォーマンスが最適化されるが、 開発者が挙動を完全に制御することは難しい 参考: Composition API に関するよくある質問 | Vue.js 他のフレームワークとの比較 — Vue.js (※Vue 2 時代のドキュメントです) 理由1:簡単に高いパフォーマンスを得られる
  11. 理由1:簡単に高いパフォーマンスを得られる React より Vue の方がパフォーマンスは高い js-framework-benchmark のほとんどの結果で Vue 3 は

    React を上回って いるうえに、Vapor Mode で更なる最適化が進んでいる 多くの開発者にとっては、頑張って手動で最適化した React コードよりも、 自動最適化された Vue コードの方が高いパフォーマンスを出す可能性が高い 自動最適化は信用できない? 自動的に依存関係を追跡する仕組みは、Fine-Grained Reactivity(きめ細 やかな反応性)として SolidJS に採用され、流行しつつある React Compiler や react-hooks/exhaustive-deps lint ルールは、 結局コンパイル時に機械的な依存関係の検出を行っている → 「そういうもの」だと割り切れば慣れるはず
  12. 技術選定を楽にする環境 <style> タグがあるので CSS in JS ツールの導入や学習が不要 Nuxt は SSR・SPA・SSG

    などあらゆる環境に対応しているので、後で要件が変わってもフレームワークを 変更しなくて良い 200以上のユーティリティー関数の詰め合わせ VueUse のおかげで、機能ごとにライブラリを個別に入れな くて良い 例えば useElementVisibility や useMediaQuery など Vue / Nuxt を採用すると、ライブラリや実装で悩まずに、プロダクト本来の開発に集中できる 理由2:ライブラリ選定で悩まなくて済む
  13. Vue コミュニティ発のツールが、フロントエンド全体で使われている Vite Vue の作者でもある Evan You 氏が 2020 年にリリースした高速で拡張性の高いバンドラーツール

    Nuxt、 React Router 、Tanstack Router、SvelteKit など、様々なフレームワークが JavaScript のバンドラー・ビルドの基盤として Vite を採用している create-react-app に代わる SPA の推奨技術として React ドキュメントにも記載されている Vitest Vue コアコミッターである Anthony Fu 氏が開発した、Vite ベースのテストツール 高速さと Jest との高い互換性を備え、あらゆるフロントエンド開発で使われるツールに成長 他にも UnJS、 Oxlint、 Volar.js などがオープンソースで他のライブラリを支えている 理由3:JavaScript エコシステムへの貢献
  14. Vue コミュニティ発のツールがエコシステムを支えているメリット 汎用的に利用できるツールが発展することで、JS エコシステムの多様性が守られやすくなり、Vue もその 選択肢の1つとして維持されやすくなる Vue のコアメンバーが開発に関わっていることで、それらのツールの新機能も Vue との互換性を重視するこ

    とが期待できる Vue 開発チームの高い技術力は、Vue が将来的な時代の変化に対応できるという信頼にも繋がる 「SolidJS にインスパイアされて API そのままの Vapor Mode を開発します」ができる凄さ 理由3:JavaScript エコシステムへの貢献
  15. Vue Fes Japan 2024 年は 750 名以上が来場した、日本最大級のフロントエンドイベント Evan You 氏、Anthony

    Fu 氏、 Volar や alien-signals を手掛けたJohnson Chu 氏、 Nuxt コアチームリーダーの Daniel Roe 氏などが来日して講演を行う貴重な機会 現在は Vue コミュニティに関連する Vite や Oxc、Rolldown などの話題も扱っており、 Vue に限らずフロントエンド全体のお祭りとしての側面を強めている 理由4:活発で熱気のあるコミュニティ