Slide 1

Slide 1 text

Leveling Up Front-end Skills Yuya Saito @ Frontrend in Fukuoka #frontrend_ff

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

Hands On Multi Tracks &

Slide 4

Slide 4 text

Yuya Saito Frontend Developer @ CyberAgent

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Agenda Front-end Development is Easy!? ϑϩϯτΤϯυ։ൃ͸؆୯ No, it’s not! ϑϩϯτΤϯυ ɾ εΩϧΛϨϕϧΞοϓ͠Α͏ There are actually more… ͞ΒͳΔਂ෵΁ʜ How to learn all this? ϑϩϯτΤϯυ ɾ εΩϧͷֶͼํ

Slide 8

Slide 8 text

Front-end Development is Easy!? ϑϩϯτΤϯυ։ൃ͸؆୯

Slide 9

Slide 9 text

ͭͷڞ௨఺͕͋Δ HTML, CSS & JavaScript

Slide 10

Slide 10 text

ͷߴ͞ Learnability

Slide 11

Slide 11 text

WWW is Only 20 Years Old

Slide 12

Slide 12 text

HTML

Slide 13

Slide 13 text

< > TAG NAME

Slide 14

Slide 14 text

TAG NAME About 100 of

Slide 15

Slide 15 text

CSS

Slide 16

Slide 16 text

selector { property: value; }

Slide 17

Slide 17 text

selector { color: red; }

Slide 18

Slide 18 text

JavaScript

Slide 19

Slide 19 text

JavaScript ͸؆୯Ͱ͸ͳ͍ͷͰ͸

Slide 20

Slide 20 text

function if var for {} while [] try {} catch (e) {}

Slide 21

Slide 21 text

JavaScript ͸γϯϓϧͰ׮༰ͳݴޠ

Slide 22

Slide 22 text

JavaScript ͸ϒϥ΢β͑͋͞Ε͹࣮ߦͰ͖Δ

Slide 23

Slide 23 text

Learnability ͕ٕज़ͷ޿͕ΓΛੜΈग़ͨ͠ɻ

Slide 24

Slide 24 text

No, it’s not! ϨϕϧΞοϓ͠Α͏ ϑϩϯτΤϯυ ɾ εΩϧΛ

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

ϒϥ΢βͷ಺෦ߏ଄Λ஌Δ Browser Learn:

Slide 27

Slide 27 text

Browser͸։ൃ؀ڥ

Slide 28

Slide 28 text

Browser͸ϓϥοτϑΥʔϜ

Slide 29

Slide 29 text

Browser͸ιϑτ΢ΣΞ

Slide 30

Slide 30 text

html5rocks.com/en/tutorials/internals/howbrowserswork

Slide 31

Slide 31 text

Google Chrome Developer Relations Paul Irish

Slide 32

Slide 32 text

❞ As a web developer, learning the internals of browser operations helps you make better decisions and know the justifications behind development best practices. While this is a rather lengthy document, we recommend you spend some time digging in; we guarantee you'll be glad you did. - Paul Irish

Slide 33

Slide 33 text

❞ ϒϥ΢β಺෦ͷಇ͖ΛֶͿࣄ͸ 8FC։ൃऀʹͱͬͯΑΓΑ͍ղܾΛߦ͏͜ͱɺ ͦͯ͠։ൃʹ͓͚ΔϕετϓϥΫςΟεͷഎޙʹ͋Δ ࠜڌΛཧղ͢Δ͜ͱʹͭͳ͕Γ·͢ɻ ͜ͷهࣄ͸௕͍΋ͷͰ͸͋Γ·͕͢ɺ গ࣌ؒ͠Λׂ͍ͯಡΜͰΈ͍ͯͩ͘͞ɻ ͦͷ͕࣌ؒແବʹͳΒͳ͍͜ͱ͸อূ͠·͢ɻ - Paul Irish

Slide 34

Slide 34 text

chromium.org/developers/design-documents/gpu-accelerated-compositing-in-chrome

Slide 35

Slide 35 text

ۜͷ஄ؙ͸ଘࡏ͠ͳ͍ɻ ͔͠͠஄ؙͦͷ΋ͷ͸ଘࡏ͍ͯ͠Δɻ ஄ؙͷબͼํΛֶͿ͜ͱ͕େ੾ɻ Learn:

Slide 36

Slide 36 text

ߏ଄΍ઃܭͷํ๏Λ஌Δ JavaScript Learn:

Slide 37

Slide 37 text

jQuery͚ͩͰ͸΋͸΍े෼Ͱ͸ͳ͍ɻ Not Just jQuery

Slide 38

Slide 38 text

jQuery͸ͲΜͳ໰୊Λղܾ͠Α͏ͱ What jQuery is? ͍ͯ͠Δͷ͔

Slide 39

Slide 39 text

JavaScriptʹ͓͚ΔΞϓϦͷઃܭ Architecture

Slide 40

Slide 40 text

໾ׂ෼୲ΛͲ͏෼཭ɾ݁߹͢Δͷ͔ MV*

Slide 41

Slide 41 text

Backbone.js Angular.js Ember.js ͦΕͧΕʹར఺ͱܽ఺͕͋Δɻ

Slide 42

Slide 42 text

ίϝϯτΛؚΊͯ΋1,600ߦఔ౓ Read: Backbone.js

Slide 43

Slide 43 text

TODOΞϓϦҎ֎ͷαϯϓϧΛ ࡞ͬͯΈΔɻ with Backbone.js

Slide 44

Slide 44 text

Angular.jsͰॻ͖׵͑ͯΈΔɻ

Slide 45

Slide 45 text

MV*͕ͲΜͳ໰୊Λ ղܾ͠Α͏ͱ͍ͯ͠Δͷ͔ Learn:

Slide 46

Slide 46 text

Fail Fast Fail Often

Slide 47

Slide 47 text

ߏ଄΍ઃܭͷํ๏Λ஌Δ CSS Learn:

Slide 48

Slide 48 text

CSS: Style Layout Animation

Slide 49

Slide 49 text

CSS needs Architecture, too ͦͷͨΊͷػೳ͸ଘࡏ͠ͳ͍ͱ͍͏ໃ६

Slide 50

Slide 50 text

Learn: CSS Preprocessor

Slide 51

Slide 51 text

CSS Preprocessor Learn: Doesn’t Solve it! CSSͷઃܭΛ༰қʹͯ͘͠ΕͨΓ͸͠ͳ͍

Slide 52

Slide 52 text

OOCSS SMACSS BEM by Nicole Sullivan by Jonathan Snook by Yandex

Slide 53

Slide 53 text

They’re just An Example. ͜ΕΒͷํ๏࿦͸͋͘·Ͱ΋ྫɻ

Slide 54

Slide 54 text

ͳΜͲ΋܁Γฦ͞ΕΔɺ ͋Δ͍͸܁Γฦ͢͜ͱ͕Ͱ͖Δɺ ύλʔϯΛͲͷΑ͏ʹ ൃݟ͠ɺ ࣮૷͠ɺ ໋໊͢Δͷ͔ɻ

Slide 55

Slide 55 text

by ୩ ୓थ 15:30~ @ ձٞࣨ5 Goal of Better CSS Architecture

Slide 56

Slide 56 text

youtu.be/BlSFXdnuq5E

Slide 57

Slide 57 text

Modularity Learn: ϞδϡϥʔԽΛ஌Δ

Slide 58

Slide 58 text

More Than A Few Thousand Lines of Codes ਺ઍߦʹ΋ٴͿίʔυ΋௝͘͠ͳ͍ɻ

Slide 59

Slide 59 text

ͳΜͷσβΠϯઃܭ΋ͳ͘ɺ ୯७ʹϑΝΠϧΛ෼ׂͯ͠࡞ۀΛߦ͑͹ ϖʔδϩʔυͷ࠷దԽͷجຊݪଇͰ͋Δɺ HTTPϦΫΤετΛ ૿΍͢͜ͱʹͳͬͯ͠·͏ɻ

Slide 60

Slide 60 text

CSSͳΒ·ͩ͠΋ɺ JavaScriptʹ͸ղফ͠ͳ͚Ε͹ͳΒͳ͍ ґଘؔ܎΋࣮֬ʹଘࡏ͢ΔͰ͠ΐ͏ɻ

Slide 61

Slide 61 text

Modular Design

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

Module Design JavaScriptʹ΋CSSʹ΋ݱ࣌఺Ͱ͸ ͜ͷϒϩοΫ޻๏Λ࣮ݱ͢ΔͨΊͷ ػೳ͸ݴޠͱͯ͠༻ҙ͞Ε͍ͯͳ͍ɻ

Slide 64

Slide 64 text

There are Tools (a lot)

Slide 65

Slide 65 text

Require.js by James Burke

Slide 66

Slide 66 text

Learn: Asynchronous Module Definition

Slide 67

Slide 67 text

Require.js is Good But... Require.jsʹ΋໰୊͸͋Δ...

Slide 68

Slide 68 text

Node.js IS JavaScript But... Node.jsͰ͸ฉ͔ͳ͍໰୊...?

Slide 69

Slide 69 text

CommonJS

Slide 70

Slide 70 text

Browserify.js by James Holiday AKA substack

Slide 71

Slide 71 text

ES6 import / export

Slide 72

Slide 72 text

CSS?

Slide 73

Slide 73 text

Testing Learn: ϢχοτςετΛ஌Δ

Slide 74

Slide 74 text

Linting is First Step to Test ·ͣLint͔Β࢝ΊΔ

Slide 75

Slide 75 text

ࣗ৴Λ࣋ͬͯؒҧ͍Λਖ਼͢ ϫʔΫϑϩʔΛ࣋ͭɻ

Slide 76

Slide 76 text

Refactoring

Slide 77

Slide 77 text

Learn: Jasmine Mocha or

Slide 78

Slide 78 text

CSS?

Slide 79

Slide 79 text

CSS needs Testing

Slide 80

Slide 80 text

Not Yet

Slide 81

Slide 81 text

speakerdeck.com/studiomohawk/testable-javascript

Slide 82

Slide 82 text

speakerdeck.com/studiomohawk/unit-testing-with-jasmine

Slide 83

Slide 83 text

Performance Learn: ύϑΥʔϚϯεΛ஌Δ

Slide 84

Slide 84 text

ύϑΥʔϚϯε͸ػೳ

Slide 85

Slide 85 text

Tools, not Rules. - Paul Lewis

Slide 86

Slide 86 text

ϕετ͕ৗʹϕετͱ͸ݶΒͳ͍ɻ

Slide 87

Slide 87 text

-webkit-transform: translate3d(0,0,0);

Slide 88

Slide 88 text

What we can measure, we can optimize! - Ilya Grigorik

Slide 89

Slide 89 text

No content

Slide 90

Slide 90 text

Network Panel

Slide 91

Slide 91 text

Timeline Panel

Slide 92

Slide 92 text

Profile Panel

Slide 93

Slide 93 text

developers.google.com/chrome-developer-tools/

Slide 94

Slide 94 text

There are actually more… ͞ΒͳΔਂ෵΁ʜ

Slide 95

Slide 95 text

Quick Peek ͘͝؆୯ʹɻ

Slide 96

Slide 96 text

Cross Brower Platform Device

Slide 97

Slide 97 text

Test Early

Slide 98

Slide 98 text

$49, Mac Only GhostLab

Slide 99

Slide 99 text

github.com/shakyShane/browser-sync

Slide 100

Slide 100 text

Progressive Enhancement

Slide 101

Slide 101 text

ৗʹ৽͍ٕ͠ज़Λ࠾༻͢Δ͜ͱΛ ظ଴͞Εͳ͕Βɺ աڈͷϒϥ΢β΁ͷରԠΛഭΒΕΔໃ६ɻ

Slide 102

Slide 102 text

Progressive Enhancement͸ ϑϩϯτΤϯυ։ൃऀͷಠஃ৔ɻ

Slide 103

Slide 103 text

ϒϥ΢β΍σόΠεͰ੍ݶΛ ߟ͑ΔͷͰ͸ͳ͘ɺ ίϯϙʔωϯτ୯ҐͰઓུΛߟ͑Δɻ

Slide 104

Slide 104 text

!lamentgroup.com/lab/grade_components/

Slide 105

Slide 105 text

Template

Slide 106

Slide 106 text

HTMLΛͦͷ··هड़͢Δ͜ͱ͕ ݮ͖͍ͬͯͯΔɻ

Slide 107

Slide 107 text

No Choice on Server Side αʔόαΠυͷςϯϓϨʔτʹ͍ͭͯ͸ զʑʹબ୒ࢶ͕༩͑ΒΕΔ͜ͱ͸ͳ͍ɻ

Slide 108

Slide 108 text

CMSΛؚΊͯɺ ϝδϟʔͳϑϨʔϜϫʔΫͰ ࠾༻͞Ε͍ͯΔςϯϓϨʔτݴޠʹ͍ͭͯ͸ ͓֮͑ͯ͘΂͖ɻ

Slide 109

Slide 109 text

Too Many on Client Side ΫϥΠΞϯταΠυʹ͸΋͸΍ બ୒͢Δ͜ͱ͕೉͍͠΄Ͳଘࡏ͢Δɻ

Slide 110

Slide 110 text

Handlebars.js Underscore.js

Slide 111

Slide 111 text

Research

Slide 112

Slide 112 text

Advocate for the Open Web Molly Holzschlag

Slide 113

Slide 113 text

❞ If you want to be doing the same things for the next 10 years, you're in the wrong job. - Molly Holzschlag

Slide 114

Slide 114 text

❞ ࣍ͷ೥ؒɺ ಉ͜͡ͱΛ͍͍ͯͨ͠ͱ ࢥ͏ͳΒɺ ͜ͷۀք͸޲͍͍ͯͳ͍ɻ - Molly Holzschlag

Slide 115

Slide 115 text

Web will be always Changing.

Slide 116

Slide 116 text

Inovation

Slide 117

Slide 117 text

Self Learning

Slide 118

Slide 118 text

Πϊϕʔγϣϯʹରͯ͠ ৗʹහײͰ͋Γ͚ͭͮΔ͜ͱ͸ ϑϩϯτΤϯυ։ൃऀͷ੹຿ɻ

Slide 119

Slide 119 text

৘ใऩू͸श׳Խ͕伴ɻ

Slide 120

Slide 120 text

How to learn all this? ϑϩϯτΤϯυ ɾ εΩϧͷֶͼํ

Slide 121

Slide 121 text

֫ಘͰ͖Δͷ͔ Ͳ͏ͨ͠Β͜ΕΒͷεΩϧΛ

Slide 122

Slide 122 text

ਫ਼௨͍ͯ͠Δͷ͔ ࢲࣗ਎͢΂ͯͷεΩϧʹ Better Question

Slide 123

Slide 123 text

No.

Slide 124

Slide 124 text

͋Δ͸ͣͰ͢ɻ օ͞Μʹ΋ಘҙͳδϟϯϧ͸ ूத͢Δ΂͖ɻ ·ͣ͸ͦ͜Λ৳͹͍ͯ͘͜͠ͱʹ

Slide 125

Slide 125 text

T ❌

Slide 126

Slide 126 text

I

Slide 127

Slide 127 text

No content

Slide 128

Slide 128 text

No content

Slide 129

Slide 129 text

ଞͷεΩϧʹֶ͍ͭͯͿඞཁੑ͕ Կ͔ͭͷεΩϧΛਂߞ͢Δ্Ͱɺ ඞͣग़͖ͯ·͢ɻ

Slide 130

Slide 130 text

No content

Slide 131

Slide 131 text

No content

Slide 132

Slide 132 text

Homework Կ͕ಘҙͳͷ͔ Կʹڵຯ͕͋Δͷ͔

Slide 133

Slide 133 text

What’s your Goal?

Slide 134

Slide 134 text

Apple CEO Steve Jobs

Slide 135

Slide 135 text

❞ You can't connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. - Steve Jobs

Slide 136

Slide 136 text

❞ ઌΛಡΜͰ఺ͱ఺Λͭͳ͙͜ͱ͸Ͱ͖·ͤΜɻ ޙ͔ΒৼΓฦͬͯॳΊͯͰ͖ΔͷͰ͢ɻ ͦΕΒͷ఺͸ඞͣͲ͔͜ͷະདྷͰ ͭͳ͕Δ͜ͱΛ৴͡ͳ͚Ε͹ͳΒͳ͍ͷͰ͢ɻ - Steve Jobs

Slide 137

Slide 137 text

One More Thing...

Slide 138

Slide 138 text

Ask Why, Not How.

Slide 139

Slide 139 text

Thank You! Follow me @ cssradar