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.2k
ECMAScript
abouthiroppy
0
710
reflow/repaint
abouthiroppy
0
210
OSSを楽しむ話
abouthiroppy
0
200
React Nativeを触ってみた話
abouthiroppy
0
190
Other Decks in Technology
See All in Technology
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
1.4k
Antigravity SDK for the Java Developer
glaforge
0
190
SREは、MCPとAutopilotをこう使え!
kazumax55
3
960
時うどん〜Socket.getifaddrsで学ぶネットワーク編 / Tokiudon: The Socket.getifaddrs Edition
coe401_
4
260
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.7k
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
390
認知負荷を吸収し、プロダクトをまたぐPR Preview基盤の設計事例
taiki45
2
130
2026-09-08 そのJavaモダナイゼーション、AIに丸投げで大丈夫?IBM Bobで変わる品質と効率
yutanonaka
1
170
データ_AIの事業の勝敗をわけるもの
nek0128
1
480
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
710
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
140
事業課題から技術的負債に向き合う
sansantech
PRO
2
2.3k
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
Technical Leadership for Architectural Decision Making
baasie
3
580
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Git: the NoSQL Database
bkeepers
PRO
432
67k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
280
Mobile First: as difficult as doing things right
swwweet
225
10k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
WCS-LA-2024
lcolladotor
0
830
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·͢ʂ