Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
my tools
Search
Yuta Hiroto
August 10, 2016
Technology
180
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.3k
ECMAScript
abouthiroppy
0
720
reflow/repaint
abouthiroppy
0
210
OSSを楽しむ話
abouthiroppy
0
210
React Nativeを触ってみた話
abouthiroppy
0
190
Other Decks in Technology
See All in Technology
事業活動を AI Ready にする攻めと守りのデータエンジニアリング / data-engineering-for-ai-ready-business
pei0804
7
2.8k
osaka-claude-meetup-20261019
namiki64
0
220
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
180
AI駆動で「他アプリの音を加工できる」アプリを作った
satomasahiro2005
0
110
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.8k
Metadata - Section 1: HTML Basics
mohab1
0
110
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
190
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
120
AIカンパニーへの転換を支えた、エンジニアの仕事の再定義
kworkdev
PRO
2
1.1k
遠藤な_めぐろLT #38 「社内のAI活用推進」@麻布台_20261009
endonanana
0
130
Optunaの最新リリースv5.0について
pfn
PRO
0
110
⾮構造化データを価値に変える AI エージェント基盤とその組織
ivry_presentationmaterials
0
180
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
410
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
The Language of Interfaces
destraynor
162
27k
Agile that works and the tools we love
rasmusluckow
331
22k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
410
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
750
Large-scale JavaScript Application Architecture
addyosmani
516
110k
First, design no harm
axbom
PRO
2
1.3k
Raft: Consensus for Rubyists
vanstee
142
7.8k
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·͢ʂ