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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
220
OSSを楽しむ話
abouthiroppy
0
210
React Nativeを触ってみた話
abouthiroppy
0
200
Other Decks in Technology
See All in Technology
Deep Data Security 機能解説
oracle4engineer
PRO
3
1k
生成AI時代のIAMのマニアックな話
takuros
6
2.4k
re:Invent の去年のスケジュールを公開します!
miu_crescent
PRO
0
300
2拠点SRE活動始めてみた | sogaoh's LT @ ホンマでっかSRE勉強会 #3
sogaoh
PRO
0
240
E2Eってつらくないですか?E2Eの管理コストを下げる手段とその実践
akaboshinit
6
3k
AWSを利用する上で知っておきたい名前解決の話 2026
nagisa53
4
3k
リアクションエンジニア ― 小さなリアクションから、話しかけやすい組織をつくる ―
ryuguyana
1
130
「いつか使う」の「いつか」は来ない 〜AI駆動開発における「作らない」判断について〜
ikki0006
0
130
You Have Agency(サンキュー、Ruby)
snoozer05
PRO
5
680
kintoneで在庫管理システムを作るときの要件定義・設計ポイント
kai0707
0
230
bpf_arenaとstruct_opsを使うのが難しかった話
masu_mi
0
200
OneLakeをデータソースにした AI Search(Foundry IQ)の ライフサイクル管理
ryuseiiida
0
230
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
2
12k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Building an army of robots
kneath
307
47k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
480
My Coaching Mixtape
mlcsv
0
380
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
Claude Code のすすめ
schroneko
67
230k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
550
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·͢ʂ