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
230
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Technical Selection for Surviving the Front End Sengoku Period
フロントエンド戦国時代を生き延びるための技術選定
@Webフレーム品評会
gutchom
September 16, 2017
Other Decks in Technology
See All in Technology
AI-DLC実践録_フルサイクル開発への挑戦
miyuc
0
360
LLM Internals: 언어 모델의 계보와 알고리즘 진화 (2023~2026)
inureyes
PRO
1
880
型落ちシンクライアント端末のPoEモジュールを自作したかった話
logica0419
0
310
2027年のMetricKit
kantacky
0
160
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
160
VLMで2.3万枚のPyCon JP写真を検索!
terapyon
1
270
LanceDB入門
mocobeta
9
670
内製AIチャットボット開発で学んだ Datadog Agent Observability活用術
mkdev10
0
100
属人化を叩き割れ!「制作加速」と「安定化」の矛盾を打破する:8年目プロダクトが辿り着いた「ミスが起こり得ない」アセット制作フローの全貌
gree_tech
PRO
0
120
トークンマネジメントでAIにとって働きやすい環境を実現する
hikaruegashira
0
140
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
640
ハッカソンで入賞した話 @ Findy LT
asari194617
0
1.5k
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
280
Automating Front-end Workflow
addyosmani
1369
210k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
250
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
680
Building an army of robots
kneath
306
46k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
480
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
380
Code Review Best Practice
trishagee
74
20k
Making the Leap to Tech Lead
cromwellryan
135
10k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
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Ͱͨ͠