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
Technical Selection for Surviving the Front End...
Search
gutchom
September 16, 2017
Technology
1
210
Technical Selection for Surviving the Front End Sengoku Period
フロントエンド戦国時代を生き延びるための技術選定
@Webフレーム品評会
gutchom
September 16, 2017
Tweet
Share
Other Decks in Technology
See All in Technology
AI開発の定着を推進するために揃えるべき前提
suguruooki
1
420
経営から紐解くデータマネジメント
pacocat
7
1.5k
組織の“見えない壁”を越えよ!エンタープライズシフトに必須な3つのPMの「在り方」変革 #pmconf2025
masakazu178
1
1k
プラットフォームエンジニアリングとは何であり、なぜプラットフォームエンジニアリングなのか
doublemarket
0
210
.NET 10のEntity Framework Coreの新機能
htkym
0
130
adk-samples に学ぶデータ分析 LLM エージェント開発
na0
3
830
国産クラウドを支える設計とチームの変遷 “技術・組織・ミッション”
kazeburo
6
10k
AWS re:Invent 2025 で頻出の 生成 AI サービスをおさらい
komakichi
3
240
履歴テーブル、今回はこう作りました 〜 Delegated Types編 〜 / How We Built Our History Table This Time — With Delegated Types
moznion
2
2.7k
IPv6-mostly field report from RubyKaigi 2026
sorah
0
210
Eight Engineering Unit 紹介資料
sansan33
PRO
0
5.6k
確実に伝えるHealth通知 〜半自動システムでほどよく漏れなく / JAWS-UG 神戸 #9 神戸へようこそ!LT会
genda
0
160
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Automating Front-end Workflow
addyosmani
1371
200k
The Cult of Friendly URLs
andyhume
79
6.7k
How GitHub (no longer) Works
holman
315
140k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Practical Orchestrator
shlominoach
190
11k
Context Engineering - Making Every Token Count
addyosmani
9
420
Code Review Best Practice
trishagee
72
19k
GraphQLとの向き合い方2022年版
quramy
49
14k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
We Have a Design System, Now What?
morganepeng
54
7.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Transcript
ϑϩϯτΤϯυઓࠃ࣌Λ ੜ͖ԆͼΔͨΊͷ ٕज़બఆ @gutchom 20179݄16 WebϑϨʔϜϫʔΫධձ
ࣗݾհ @gutchom (͙ͬͪΐΉ) ϑϩϯτΤϯυΤϯδχΞ TypeScript / JavaScript React.js / Vue.js
ࣗݾհ झຯ։ൃ ࣄແ৬
ࣗݾհ ͍·࡞ͬͯΔͷ: ݕࡧΫΤϦϏϧμʔ
None
ຊ͓͢͠ΔτϐοΫ̐
ͦͷϑϩϯτΤϯυɺ ϞμϯͰ͋Δඞཁ͕͋Γ·͔͢ʁ
React.jsͱVue.js
ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
ޙʹࢮͳͳ͍ͨΊͷ ϑϩϯτΤϯυڥ
ͦͷϑϩϯτΤϯυɺ ϞμϯͰ͋Δඞཁ͕͋Γ·͔͢ʁ
ͦͷϑϩϯτΤϯυɺ ϞμϯͰ͋Δඞཁ͕͋Γ·͔͢ʁ
⚠͜ͷ߲ࢲ͙ͬͪΐΉͷಠࣗݟղͰ͢⚠ ͦͷϑϩϯτΤϯυɺ ϞμϯͰ͋Δඞཁ͕͋Γ·͔͢ʁ
• jQueryແࡑ ͦͷϑϩϯτΤϯυɺ ϞμϯͰ͋Δඞཁ͕͋Γ·͔͢ʁ
• jQuery(DOMͷૢ࡞ʹݶΓ)ແࡑ ͦͷϑϩϯτΤϯυɺ ϞμϯͰ͋Δඞཁ͕͋Γ·͔͢ʁ
• jQuery(DOMͷૢ࡞ʹݶΓ)ແࡑ • ΩʔϙΠϯτView͕StateΛ͔࣋ͭ൱͔ ͦͷϑϩϯτΤϯυɺ ϞμϯͰ͋Δඞཁ͕͋Γ·͔͢ʁ
• jQuery(DOMͷૢ࡞ʹݶΓ)ແࡑ • ΩʔϙΠϯτView͕StateΛ͔࣋ͭ൱͔ • ϞμϯϑϩϯτΤϯυόζϫʔυ ͦͷϑϩϯτΤϯυɺ ϞμϯͰ͋Δඞཁ͕͋Γ·͔͢ʁ
• jQuery(DOMͷૢ࡞ʹݶΓ)ແࡑ • ΩʔϙΠϯτView͕StateΛ͔࣋ͭ൱͔ • ϞμϯϑϩϯτΤϯυόζϫʔυ ΫϥΠΞϯταΠυΞϓϦέʔγϣϯ։ൃ ͦͷϑϩϯτΤϯυɺ ϞμϯͰ͋Δඞཁ͕͋Γ·͔͢ʁ
ॏཁͳͷɺ
GUIΞϓϦέʔγϣϯ։ൃͷ ֮ޛ
GUIΞϓϦέʔγϣϯ։ൃͷ ֮ޛ
GUIΞϓϦέʔγϣϯ։ൃͷ ֮ޛ
GUIΞϓϦέʔγϣϯ։ൃͷ ֮ޛ
React.jsͱVue.js
React.jsͱVue.js ؆қൺֱରද
React.jsͱVue.js React.js Vue.js (v2.x) VirtualDOM YES YES Componentࢦ YES YES
JSX Must Not have to Ϗϧυπʔϧ Must Not have to σʔλόΠϯσΟϯά NO YES TypeScript Good Hmm… ؆қൺֱରද
React.jsͱVue.js ͦΕͧΕΛ༻͍࣮ͨࡍͷίʔυ
React.jsͰͷίʔυ
React.jsͰͷίʔυ ϥΠϑαΠΫϧϝιουɾΠϕϯτϋϯυϥ
React.jsͰͷίʔυ Ϩϯμʔؔ (ϚʔΫΞοϓ)
React.jsͰͷίʔυ Stateless Functional Component (ঢ়ଶͱϥΠϑαΠΫϧΛ࣋ͨͳ͍ίϯϙʔωϯτ)
Vue.jsͰͷίʔυ
None
ESΫϥεߏจ͡Όͳ͍…
ESΫϥεߏจ͡Όͳ͍… ͳͷͰ ΦϒδΣΫτʹهड़ͨ͠ ίϯϙʔωϯτఆٛΛ ίϯετϥΫλ
ESΫϥεߏจ͡Όͳ͍… ͳͷͰ ΦϒδΣΫτʹهड़ͨ͠ ίϯϙʔωϯτఆٛΛ ίϯετϥΫλ ੜͷJavaScriptͰهड़Մೳʂ
VueΠϯελϯεͷ࣋ͭػೳ
VueΠϯελϯεͷ࣋ͭػೳ • JSͰͷมߋΛViewʹࣗಈө • Viewͷೖྗ͕JSͷΛࣗಈมߋ • มߋ࣌ͷΠϕϯτൃՐ • getter/setter มͷํόΠϯσΟϯά
ͱ͜ΖͰ
Vueίϯϙʔωϯτ Ϟμϯʹॻ͖͍ͨ
(ຐվ)Vue.jsͰͷίʔυ Vueίϯϙʔωϯτఆٛ VueςϯϓϨʔτఆٛ (Pug/Jade)
(ຐվ)Vue.jsͰͷίʔυ VueςϯϓϨʔτఆٛ (Pug/Jade) VueςϯϓϨʔτఆٛ (Pug/Jade)
ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ։ൃڥ͕୲͏λεΫ ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ։ൃڥ͕୲͏λεΫ • ϒϥβͰಈ࡞͢ΔJS࣮ߦίʔυͷϏϧυ ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ։ൃڥ͕୲͏λεΫ • ϒϥβͰಈ࡞͢ΔJS࣮ߦίʔυͷϏϧυ (ECMAScript 6+, JSX, TypeScript…) ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ։ൃڥ͕୲͏λεΫ • ϒϥβͰಈ࡞͢ΔJS࣮ߦίʔυͷϏϧυ (ECMAScript 6+, JSX, TypeScript…) • ϝλݴޠ͔ΒCSSͷίϯόʔτ
ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ։ൃڥ͕୲͏λεΫ • ϒϥβͰಈ࡞͢ΔJS࣮ߦίʔυͷϏϧυ (ECMAScript 6+, JSX, TypeScript…) • ϝλݴޠ͔ΒCSSͷίϯόʔτ
(CSSnext, Sass, Less, Stylus…) ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ։ൃڥ͕୲͏λεΫ • ϒϥβͰಈ࡞͢ΔJS࣮ߦίʔυͷϏϧυ (ECMAScript 6+, JSX, TypeScript…) • ϝλݴޠ͔ΒCSSͷίϯόʔτ
(CSSnext, Sass, Less, Stylus…) • ϞοΫαʔόʔͷىಈ ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ։ൃڥ͕୲͏λεΫ • ϒϥβͰಈ࡞͢ΔJS࣮ߦίʔυͷϏϧυ (ECMAScript 6+, JSX, TypeScript…) • ϝλݴޠ͔ΒCSSͷίϯόʔτ
(CSSnext, Sass, Less, Stylus…) • ϞοΫαʔόʔͷىಈ • ࣗಈςετͷ࣮ߦ ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ։ൃڥ͕୲͏λεΫ • ϒϥβͰಈ࡞͢ΔJS࣮ߦίʔυͷϏϧυ (ECMAScript 6+, JSX, TypeScript…) • ϝλݴޠ͔ΒCSSͷίϯόʔτ
(CSSnext, Sass, Less, Stylus…) • ϞοΫαʔόʔͷىಈ • ࣗಈςετͷ࣮ߦ • etc… ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ओཁπʔϧ • Node.js: ։ൃϚγϯ্ͰJavaScriptιϑτΣΞΛ࣮ߦ • npm: ύοέʔδϚωʔδϟʔ • babel:
JSͷίϯόʔλʔ • webpack / browserify: ϥΠϒϥϦґଘؔղܾπʔϧ • Ճ͑ͯ ֤छTesting framework, ߏจνΣοΧʔ, ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ओཁπʔϧ • Node.js: ։ൃϚγϯ্ͰJavaScriptιϑτΣΞΛ࣮ߦ • npm: ύοέʔδϚωʔδϟʔ • babel:
JSͷίϯόʔλʔ • webpack / browserify: ϥΠϒϥϦґଘؔղܾπʔϧ • Ճ͑ͯ ֤छTesting framework, ߏจνΣοΧʔ, ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ओཁπʔϧ • Node.js: ։ൃϚγϯ্ͰJavaScriptιϑτΣΞΛ࣮ߦ • npm: ύοέʔδϚωʔδϟʔ • babel:
JSͷίϯόʔλʔ • webpack / browserify: ϥΠϒϥϦґଘؔղܾπʔϧ • Ճ͑ͯ ֤छTesting framework, ߏจνΣοΧʔ, ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ओཁπʔϧ • Node.js: ։ൃϚγϯ্ͰJavaScriptιϑτΣΞΛ࣮ߦ • npm: ύοέʔδϚωʔδϟʔ • babel:
τϥϯεύΠϥ (ίϯόʔλʔ) • webpack / browserify: ϥΠϒϥϦґଘؔղܾπʔϧ • Ճ͑ͯ ֤छTesting framework, ߏจνΣοΧʔ, ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ओཁπʔϧ • Node.js: ։ൃϚγϯ্ͰJavaScriptιϑτΣΞΛ࣮ߦ • npm: ύοέʔδϚωʔδϟʔ • babel:
τϥϯεύΠϥ (ίϯόʔλʔ) • webpack / browserify: ϥΠϒϥϦґଘؔղܾπʔϧ • Ճ͑ͯ ֤छTesting framework, ߏจνΣοΧʔ, ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
• ओཁπʔϧ • Node.js: ։ൃϚγϯ্ͰJavaScriptιϑτΣΞΛ࣮ߦ • npm: ύοέʔδϚωʔδϟʔ • babel:
τϥϯεύΠϥ (ίϯόʔλʔ) • webpack / browserify: ϥΠϒϥϦґଘؔղܾπʔϧ • Ճ͑ͯ ֤छTesting framework, ߏจνΣοΧʔ, ϞμϯϑϩϯτΤϯυ ڥߏஙͷপ
ޙʹࢮͳͳ͍ͨΊͷ ϑϩϯτΤϯυڥ
ޙʹࢮͳͳ͍ͨΊͷ ϑϩϯτΤϯυڥ • ϥΠϒϥϦͱϏδωεϩδοΫૄ݁߹ʹ
ޙʹࢮͳͳ͍ͨΊͷ ϑϩϯτΤϯυڥ • ϥΠϒϥϦͱϏδωεϩδοΫૄ݁߹ʹ • ݸʑͷπʔϧৗʹೖΕସ͑Մೳʹ
ޙʹࢮͳͳ͍ͨΊͷ ϑϩϯτΤϯυڥ • ϥΠϒϥϦͱϏδωεϩδοΫૄ݁߹ʹ • ݸʑͷπʔϧৗʹೖΕସ͑Մೳʹ • ڥߏஙͷ࣌ͰઃܭࢦΛ໌֬ʹ࣋ͭ
ͦΕͰΈͳ͞Μ ઃܭ͠·͠ΐ͏ɺ
࠷ߴͷ ϢʔβʔମݧΛʂ
͝੩ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ @gutchomͰͨ͠