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
my tools
Search
Yuta Hiroto
August 10, 2016
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
my tools
8/10の社内勉強会資料
Yuta Hiroto
August 10, 2016
More Decks by Yuta Hiroto
See All by Yuta Hiroto
Node8.3.0について
abouthiroppy
1
3.2k
ECMAScript
abouthiroppy
0
710
reflow/repaint
abouthiroppy
0
210
OSSを楽しむ話
abouthiroppy
0
200
React Nativeを触ってみた話
abouthiroppy
0
180
Other Decks in Technology
See All in Technology
人気商品が「ちゃんと買える」をつくる ー ECの負荷改善
ykagano
1
170
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
25k
いかに伝えるか 〜新卒エンジニアの教育のための、ライトノベル活用の一例
ikedon
1
140
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.3k
1.5時間を無駄にして学んだwsl2におけるaptとsnapの選択と仕組み
yosaka0123
0
480
markdown-poster Introduction
kazamori
0
450
顧客の要望は2次情報である 〜アンテナを張るFDEの構造論〜
noriakioji
5
1.1k
When Token Pruning is Worse than Random: Understanding Visual Token Information in VLLMs
sansantech
PRO
0
220
AI駆動開発を組織で促すために
lycorptech_jp
PRO
7
9.1k
Master Dataグループ紹介資料
sansan33
PRO
1
4.9k
The Django UUID Story - DjangoCon US 2026
pauloxnet
0
360
みてねにおけるAI-DLC導入活動とAIドリブン開発の現在地/JAWS-UG AI-DLC #2
isaoshimizu
2
320
Featured
See All Featured
Docker and Python
trallard
47
4.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
From π to Pie charts
rasagy
0
340
BBQ
matthewcrist
89
10k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
410
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
320
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Design in an AI World
tapps
1
290
Transcript
࠷ۙͷࣗͷ πʔϧࣄ frontier-dev-jsษڧձ
ҙ • ࠓճwebϑϩϯτΤϯυدΓͷΛ͠·͢ • ϑϨʔϜϫʔΫςετϥϯφʔͷ ͠·ͤΜ • 8ׂͰ͢(དྷिެ։͠·͢ɻɻ)
ࣗݾհ Github abouthiroppy times_about_hiroppy
ࠓͬͯͳ͍πʔϧͱ ࠓ͍ͬͯΔπʔϧ ͷ
ࠓͬͯͳ͍πʔϧ܈ etc.
ࠓ͍ͬͯΔπʔϧ܈ babel npm webpack eslint
ҠΓมΘΓ͕ ܹ͗ͯ͢͠Θ͔Βͳ͍…
࠷ݶɺ։ൃͰ΄͍͠ͷ • ύοέʔδཧπʔϧ • ৽͍͠ߏจͰॻ͍ͯݹ͍ϒϥβʹ ରԠͤ͞ΔΑ͏ʹ͢ΔτϥϯεύΠϥ • Ϟδϡʔϧղܾπʔϧ • lintπʔϧ(੩తݕূπʔϧ)
• ςετπʔϧ(࣌ؒͷ߹্ɺࠓճ͠·ͤΜ)
ύοέʔδཧ bower npm vs
bower vs npm • ੲϑϩϯτΤϯυbowerɺόοΫΤϯυ(node)npmͩͬͨ • ύοέʔδ͕྆ํ͋ΔͱݶΒͳ͍͠ɺόʔδϣϯҧ͏Մೳੑ͋ͬͨ • browserifyͷ͓͔͛Ͱnode.jsͱಉ͡ͰϑϩϯτΤϯυͷίʔυϞδϡʔϧػೳΛ͍ ॻ͚ΔΑ͏ʹͳͬͨͨΊɺnpmͰͷཧͷํָ͕ʹͳͬͨ
bower npm vs
τϥϯεύΠϥ traceur-compiler babel vs
τϥϯεύΠϥͱʁ • ৽͍͠ߏจΛࠓͷ࣌ͷ ϒϥβͰಈ͘Α͏ʹ ίʔυΛు͍ͯ͘ΕΔ πʔϧ • ϒϥβʹΑͬͯ৽͍͠ ߏจͷ࣮Ϩϕϧ͕ҟͳ Δ͕ɺ։ൃऀͦΕΛ
ؾʹ͠ͳͯ͘Α͘ͳΔ const post = (mail = 'tegami') => { const index = 0 } 'use strict'; var post = function post() { var mail = arguments.length <= 0 || arguments[0] === undefined ? 'tegami' : arguments[0]; var index = 0; };
࣌ES2015(ES6) େମαϙʔτ͞Ε͖͕ͯͨɺ աڈͷϒϥβIE11ͳͲͷରԠ͕͍ͷʹରͯ͠ ಈ͘Α͏ʹ͢Δ(ES5མͱ͢)ʹτϥϯεύΠϧΛ͢Δඞཁ͕͋Δ FYI: http://kangax.github.io/compat-table/es6/
ES2015 • ECMAScriptͱ͍͏JavaScriptͷඪ४ن֨Ͱ ES2015(ES6)ͱୈ6൛ͷϦϦʔε • arrows • classes • enhanced
object literals • template strings • destructuring • default + rest + spread • let + const • iterators + for..of • generators • unicode • modules • module loaders • map + set + weakmap + weakset • proxies • symbols • subclassable built-ins • promises • math + number + string + array + object APIs • binary and octal literals • reflect api • tail calls Ճ͞Εͨػೳ
traceur-compiler vs babel traceur-compiler babel vs • ϥϯλΠϜΛඞཁͱ͠ͳ͍ͷͰ࣮ߦ࣌ͷΦʔόϔου͕ͳ͍ • babelݸʑͷڥʹରͯ͠มΛ༗ޮɺແޮʹ͢Δ͜ͱ͕Ͱ͖Δ
• babelͷํ͕jsxͷαϙʔτ͕ૣ͔ͬͨ • ίϛϡχςΟ͕׆ൃ
Ϟδϡʔϧղܾ vs browserify webpack
ओͳϞδϡʔϧγεςϜ <script src="./index.js"></script> require('./book') define(function() { return function() {} });
import book from './book'; <script> CommonJS module AMD ES2015 module
࠷ۙͷಈ • ES2015 moduleͰॻ͖͍ͨʂ • cssͱ͔ը૾ͱ͔Λ·ͱΊ͍ͨʂ (importͯ͠JavaScriptͰѻ͍͍ͨ) • JavaScriptͰHTMLΛѻ͏reactͷӨڹ େ͖͍ͱࢥ͏
browserify vs webpack ͔͠͠ɺ͜ͷ2ͭత͕શ͘ಉ͡ͱ͍͏Θ͚Ͱͳ͍ͷͰ࣌ͱ߹ʹΑΔͱࢥ͏ • browserifyJavaScriptͷΈΛϞδϡʔϧͱͯ͠ѻ͏ͷ͕తͱ͢Δ͕ɺ webpackjs, css, imageͳͲΛͯ͢Ϟδϡʔϧͱߟ͑JavaScript͔Βݺͼग़͢͜ͱ͕Մೳ •
·ͨੜޙͷϑΝΠϧbrowserify1ͭʹͳΔ͕ɺwebpackׂ͠ੜ͢Δ͜ͱ͕ՄೳͰ͋Δ vs browserify webpack
webpack • σϑΥϧτͰAMDͱCommonJSΛαϙʔτ͍ͯ͠Δ • Sass, Less, Coffee, TypeScriptͳͲΛม • css,
imageͳͲΛϞδϡʔϧͱͯ͠ಡΈࠐΈ͜ͱ͕Մೳ • LoaderPluginΛ͏͜ͱʹΑΓ֦ு͕Մೳ • ެࣜͷϦετʹΑΔͱେମLoader228ݸ, Plugin56ݸଘࡏ͢Δ • ෳͷόϯυϧϑΝΠϧΛग़ྗ͢Δ͜ͱ͕Մೳ • ։ൃϓϩμΫγϣϯͷઃఆ͕σϑΥϧτͰ͋Δ(sourceMap, uglify…) • dev-serverެࣜͰఏڙ͞Ε͍ͯΔ ॻ͖͖Εͳ͍͙Β͍ͳΜͰͰ͖Δʂ
lint jshint eslint vs
jshint vs eslint • eslintϧʔϧͷՃઃఆ͕ࣗ༝ͰPlugin͕๛ • ·ͨɺ༷ʑͳελΠϧΨΠυΛ؆୯ʹ͍ΕΔ͜ͱ͕Ͱ͖Δ (༗໊Ͳ͜Ζͩͱairbnbgoogle) jshint eslint
vs
͋ΕλεΫϥϯφʔɾɾɾ? grunt gulp
λεΫϥϯφʔ • ࠷ۙnpm scriptsҠߦ͢Δಈ͖͕ଟ͍ • ͍͍ͩͨwebpackͰղܾͰ͖ΔͷͰઃఆϑΝΠϧΛ ॻ͘΄ͲͰͳ͍ • ϑΝΠϧࢹ, τϥϯεύΠϧ,
Ϗϧυ… • ͦͦgruntgulpͷઃఆϑΝΠϧΛॻ͘ͷ͕େม
npm-scripts "scripts": { "test": "ava", "test:watch": "ava -w", "lint": "eslint
src", "start": "webpack-dev-server", "build": "webpack --config ./webpack.production.config.js" } ͜ͷΑ͏ʹॻ͘͜ͱ͕ՄೳͰ͋Δ $ npm start $ npm run test:watch package.jsonʹίϚϯυΛॻ͘͜ͱ͕Ͱ͖Δ
։ൃͷྲྀΕ package.jsonΛ࡞Δ webpack, babel-loaderΛೖΕΔ webpack.config.jsΛॻ͘ ࠓճwebpackΛϕʔεͰ։ൃ͢ΔఆͰॻ͖·͢
package.jsonΛ࡞Δ $ npm init { "name": "test", "version": "1.0.0", "description":
"", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "abouthiroppy <
[email protected]
>", "license": "MIT" }
ϥΠϒϥϦΛೖΕΔ $ npm i webpack babel-loader -D # package.jsonՃ͞ΕΔ "devDependencies":
{ "babel-loader": "^6.2.4", "webpack": "^1.13.1" } -D(—-save-dev) option devDependenciesʹ Πϯετʔϧͨ͠ϥΠϒϥϦ ͕ొ͞ΕΔ
ઃఆϑΝΠϧΛॻ͘ 'use strict'; const path = require('path'); module.exports = {
// ҾͰ͢ͳΒentry, output, resolveॻ͔ͳͯ͘ྑ͍ entry: path.join(__dirname, 'index.js'), output: { filename: path.join(__dirname, 'bundle.js') }, resolve: { extensions: ['', '.js'] }, module: { loaders: [ { test: /\.js$/, loader: 'babel', exclude: path.join(__dirname, 'node_modules') } ] } } webpack.config.js
ಈ͔͢ { "scripts": { "test": "echo \"Error: no test specified\"
&& exit 1", "start": "webpack -w", "build": "webpack -p" } } ޙhtmlͰຒΊࠐΈϒϥβͰ͑Δঢ়ଶʹͳΓʂ package.jsonʹίϚϯυΛొ͢Δͱָ npm start Λߦ͏ͱϑΝΠϧࢹ͕Ͱ͖Δ npm run buildΛߦ͏ͱ ϓϩμΫγϣϯ༻ͷίʔυ͕ੜ͞ΕΔ
·ͱΊ babel npm webpack eslint
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·͢ʂ