Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
VueエンジニアがReactを触って感じた_設計の違い
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kouki.miura
April 08, 2026
Programming
170
0
Share
VueエンジニアがReactを触って感じた_設計の違い
Reactの基本3機能について、Vueと比較して、設計の違いを再確認するためのLT発表資料です。
kouki.miura
April 08, 2026
More Decks by kouki.miura
See All by kouki.miura
認証統合から始めるフロントエンドの機能単位開発 — マイクロサービス思想の適用
koukimiura
0
70
Fiberとは何か?PHPが“非同期言語”になった瞬間
koukimiura
0
61
Laravel入門:最小構成で理解するMVC
koukimiura
0
100
VueSapporo#1
koukimiura
0
44
Vue.jsを10分で再定義する
koukimiura
1
52
なぜVue開発は速いのか?-Vite入門
koukimiura
0
70
Vueでつくるシングルページアプリケーション(SPA)入門
koukimiura
0
45
スライドもVueで書く時代? Slidev入門
koukimiura
0
56
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
300
Other Decks in Programming
See All in Programming
ハンズオンで学ぶクラウドネイティブ
tatsukiminami
0
120
ルールルルルルRubyの中身の予備知識 ── RubyKaigiの前に予習しなイカ?
ydah
1
140
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
4
860
おれのAgentic Coding 2026/03
tsukasagr
1
140
Codex CLIのSubagentsによる並列API実装 / Parallel API Implementation with Codex CLI Subagents
takatty
2
890
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
300
Vibe하게 만드는 Flutter GenUI App With ADK , 박제창, BWAI Incheon 2026
itsmedreamwalker
0
550
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
180
YJITとZJITにはイカなる違いがあるのか?
nakiym
0
200
感情を設計する
ichimichi
5
1.4k
Swift Concurrency Type System
inamiy
0
460
ファインチューニングせずメインコンペを解く方法
pokutuna
0
300
Featured
See All Featured
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.8k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
120
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
710
How STYLIGHT went responsive
nonsquared
100
6k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
670
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
エンジニアに許された特別な時間の終わり
watany
106
240k
HDC tutorial
michielstock
1
610
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Transcript
LIGHTNING TALK / 5 min Vueエンジニアが Reactを触って 感じた “設計の違い ”
kouki.miura / ドゥウェル株式会社 (NIHON KOHDEN Group) 2026.04.08 / React .study vol.01@sapporo
01 / SELF INTRODUCTION VueエンジニアがReactを触って感じた設計の違い / kouki.miura 自己紹介 kouki.miura Vue.js
Engineer COMPANY ドゥウェル株式会社 NIHON KOHDEN Group STACK TypeScript / Vue.js / Node.js COMMUNITY VueSapporo, さっぽろ医療 IT勉強会(MIT_sapporo) Vue.js community in Hokkaido
02 / GOAL VueエンジニアがReactを触って感じた設計の違い / kouki.miura このLTのゴール Vue と React
の 設計思想 の違いを理解する コードの書き方ではなく、なぜそう書くのか?に注目
03 / CONCLUSION (先に結論) VueエンジニアがReactを触って感じた設計の違い / kouki.miura 結論 先に答えだけ言うと── React
自由 / 設計は自分で決める ▪ ライブラリ寄り 必要なものは自分で組む ▪ UI = 関数 状態を渡すと画面が返る ▪ プロジェクトの裁量大 ベストプラクティスは現場次第 “Just the View Layer.” Vue 統一感 / 設計が用意されている ▪ フレームワーク寄り 公式が道筋を示す ▪ テンプレート + リアクティブ 直感的な書き味 ▪ 推奨パターンがある チームで揃えやすい “The Progressive Framework.”
04 / DESIGN PHILOSOPHY VueエンジニアがReactを触って感じた設計の違い / kouki.miura 設計思想の違い React ライブラリ寄り
UI = 関数 状態を入れて画面を返す純粋関数の発想 最小コア + エコシステム ルーティング/状態管理は別ライブラリ プロジェクトの裁量大 構成・命名・パターンは現場で決める Vue フレームワーク寄り テンプレート + リアクティブ HTMLに近い構文 + ref / reactiveで自動追従 推奨パターンがある 公式ルータ/状態管理/スタイルガイドが揃う 書き方が揃いやすい .vue 単一ファイル構成が標準
05 / STATE VueエンジニアがReactを触って感じた設計の違い / kouki.miura 状態の持ち方 — setState /
ref 「カウンタを1つ増やす」だけでも、書き方の発想が違う React / useState import { useState } from 'react' export const Counter = () => { const [count, setCount] = useState(0) // 値ではなく『更新関数』を呼ぶ return ( <button onClick={() => setCount((count) => count + 1)} > {count} </button> ) } Vue / ref <script setup lang="ts"> import { ref } from 'vue'; // .value で読み書きする変数 const count = ref(0); </script> <template> <button @click="count++"> {{ count }} </button> </template> POINT React は『次の状態を返す』、 Vue は『値を直接書き換える』。リアクティブの入口が違う。
06 / VIEW VueエンジニアがReactを触って感じた設計の違い / kouki.miura ビューの書き方 — JSX /
SFC Reactは『JSの中にUI』、Vueは『1ファイルにHTML/JS/CSS』 React / .tsx type Props = { name: string } export const Hello = ({ name }: Props) => { // JSは式、JSXもただの式 return ( <div className="card"> <h1>Hello, {name}!</h1> </div> ) } Vue / .vue (SFC) <script setup lang="ts"> defineProps<{ name: string }>(); </script> <template> <div class="card"> <h1>Hello, {{ name }}!</h1> </div> </template> <style scoped>.card { padding: 1rem; }</style> POINT React は『JS世界の延長』、Vue は『HTML世界の延長』。どちらも一長一短。
07 / SIDE EFFECTS VueエンジニアがReactを触って感じた設計の違い / kouki.miura 副作用 — useEffect /
onMounted・watch マウント時のフェッチ + 値の変更検知を例に React / useEffect import { useEffect, useState } from 'react' interface User { id: number name: string } export const User = ({ id }: { id: number }) => { const [user, setUser] = useState<User | null>(null) // 依存配列で『いつ実行するか』を制御 useEffect(() => { fetch(`/api/users/${id}`) .then((r) => r.json()) .then(setUser) }, [id]) return user } Vue / onMounted + watch <script setup lang="ts"> import { ref, watch, onMounted } from 'vue'; const props = defineProps<{ id: number }>(); const user = ref(null); // 役割ごとにAPIが分かれている const load = async () => user.value = await (await fetch( `/api/users/${props.id}`)).json(); onMounted(load); watch(() => props.id, load); </script> POINT Reactは1つのフックに集約/Vueは『初回マウント』『監視』が別 APIに分かれる。
08 / SUMMARY VueエンジニアがReactを触って感じた設計の違い / kouki.miura まとめ どちらが良い/悪いではなく、思想が違う React 自由
設計は自分で決める → 柔軟さと引き換えに、判断コストを払う Vue 統一感 設計が用意されている → 揃えやすい代わりに、レールに乗る前提 Thank you! / ご清聴ありがとうございました