EOF2019 で発表した学習する組織の作り方の話です。
ֶश͢Δ৫ͷ࡞Γํ2019/10/31 @ EOF2019
View Slide
ϦΫϧʔτςΫϊϩδʔζ ITEຊ෦HRE෦ASGݹཅհʢϑϧΧϫϤεέʣ2■৬ࣗݾհApplication Solution GroupͷάϧʔϓϚωʔδϟγχΞιϑτΣΞΤϯδχΞ͓ࣸਅ໌Δ͍දͷͷϓϥΠϕʔτՄ■GMͱͯͬͯ͠Δ͜ͱϝϯόʔͷΩϟϦΞ։ൃϓϩδΣΫτΞαΠϯશࣾݚमɾR-ISUCONɾϋοΧιϯͳͲ■γχΞͱͯͬͯ͠Δ͜ͱR&D- React/Redux/Node.jsΛͬͨϘΠϥʔϓϨʔτ- Consumer Driven Contract πʔϧ agreed࡞- ৽نٕज़։ൃ
Twitter: @yosuke_furukawaGithub: yosuke-furukawa
+4$POG+1UJDLFUͦΖͦΖϚδͰചΓΕ·͢ʂʂʂ
Q. ϦΫϧʔτςΫϊϩδʔζͬͯԿͬͯΔձࣾͳΜͰ͔͢ʁ
A. ϦΫϧʔτͷࣾ՝Λ ٕज़Ͱղܾ͢Δձࣾ
ͲΜͳ͜ͱΛͬͯΔ͔ʁ• Πϯϑϥߏங• ηΩϡϦςΟ૬ஊ• ΞϓϦέʔγϣϯ։ൃ• ػցֶश/ੳ• ։ൃϓϩηε࡞• ׂͱͳΜͰͬͯΔ
ͲΜͳ͜ͱΛͬͯΔ͔ʁ• Πϯϑϥߏங• ηΩϡϦςΟ૬ஊ• ΞϓϦέʔγϣϯ։ൃ• ػցֶश/ੳ• ։ൃϓϩηε࡞• ׂͱͳΜͰͬͯΔ"4(͕ओʹ୲Σϒൺߴ͍
ʮΞϓϦέʔγϣϯ։ൃʯͱݴͬͯࠓUI͕ͲΜͲΜϦονʹͳ͍ͬͯΔ࣌
ΞϓϦέʔγϣϯͷUIͷཁ͕݅Ϧονʹ• UIϢʔβʔ͕৮Δͱ͜ΖͳͷͰʮϓϥϯφʔɾϓϩμΫτΦʔφʔͷࢥ͍ʯ͕ೖΓ͍͢• ϞόΠϧɺλϒϨοτɺPCͳͲෳͷڥͰಈ࡞ͤ͞Δཁ͕݅૿͑ͨ• ϞόΠϧʹ͓͍ͯUIγϯϓϧ͕ͩɺೖྗͰ͖Δࣄ͕গͳ͍ɺཁ݅ϦονʹͳΓ͍͢• ύϑΥʔϚϯεSEOɺηΩϡϦςΟͳͲඇػೳཁ݅Ͱߟ͑ͳ͍ͱ͍͚ͳ͍͜ͱ૿͍͑ͯΔ
Ұੲલ
HTML CSS JS(jQuery)ΣϒΛߏ͢Δݴޠ͜ͷลΓͷ͋Δఔͷ͕ࣝ͋Ε6*࡞Εͨ
Ͱࠓ
DOM Cookie DevToolsϒϥβΛߏ͢Δ༰CSSOM window navigatorHeaders
DNS URL HTTP(S)ωοτϫʔΫWebSocket TCP TLSHTTP/3 QUIC
Cache Critical-Rendering PathMetrics ToolsύϑΥʔϚϯεMemory CPU I/O
XSS CSRF SQL InjectionηΩϡϦςΟDoS TLS/SSL
React Angular ReduxJS FrameworksVue.js Polymer
Mobile Tablet PCRuntime EnvironmentChrome Safari FirefoxIE Edge
HTML CSS JSDOM Cookie DevToolsCSSOM window navigatorHeadersDNS URL HTTP(S)WebSocketTCP TLSReact ReduxMemory CPUI/ODoS TLS/SSL
େมͰ͢Ͷ
Ͱɺ͜Ε͕(ϦΫϧʔτͷ) ΣϒΤϯδχΞ ʹͳΔɺͱ͍͏͜ͱ
Σϒͷϑϩϯτ͚ͩͰ͜Ε͚ͩͷ͕ࣝඞཁɺόοΫΤϯυؚΊΔͱ΄΅ແݶͷ͕࣌ؒඞཁ
ແݶͷதͰ༗ݶͷॲཧΛ͢ΔͷʹඞཁͳͷϚϯύϫʔͰղܾ͢ΔͷͰͳ͘ɺଉΛٵ͏Α͏ʹֶश͢Δ Ϟνϕʔγϣϯ
ͦΜͳંʹग़ձͬͨຊ
ֶश͢Δ৫• ʮֶश͢Δʯͱʮੜ͖Δ͜ͱͱಉٛʯͱݴ͍ͬͨຊ• ʮଉΛٵ͏Α͏ʹֶश͢Δʯͱ͍͏ࣄΛࢥ͍ͬͯͨࣗͷߟ͑ํͱϚονͨ͠• தΛΑ͘ಡΉͱ͍͍ࣄ͕ͨ͘͞Μॻ͍ͯ͋Δɻ
ֶश͢Δ৫• 5ͭͷσΟγϓϦϯ• 1. ࣗݾϚελϦʔ• 2. ڞ༗Ϗδϣϯ• 3. γεςϜࢥߟ• 4. ϝϯλϧϞσϧ• 5. νʔϜֶश
ֶश͢Δ৫• 5ͭͷσΟγϓϦϯ• 1. ࣗݾϚελϦʔ• 2. ڞ༗Ϗδϣϯ• 3. γεςϜࢥߟ• 4. ϝϯλϧϞσϧ• 5. νʔϜֶशख़ୡ͢Δࣄɺઈ͑ͣྗͯ͠ೳྗΛߴΊΔ͜ͱ͛͠ΔϏδϣϯΛෳͷਓʹڞ༗͢Δ͜ͱੈͷதͷγεςϜͷෳࡶ͞ʹ͖߹͍ɺཧղΛਂΊΔ͜ͱࣗͷΓํΛ͍ٙଓ͚ɺվળΛଓ͚Δ͜ΕΒΛνʔϜͰڞ༗͠ɺΈΜͳͰߟɺ୳ٻΛߦ͍ɺল͍ͯ͘͠
͜ΕΛࣗͳΓʹղऍͯ͠ɺࢼߦࡨޡ͠ͳ͕Β৭ʑࢼ͍ͯ͠Δ࠷தڞ༗ϏδϣϯɺࣗݾϚελϦʔɺνʔϜֶशʹ͍ͭͯհ
ڞ༗Ϗδϣϯ
ϏδϣϯΛग़ͯ͠ڞ༗͢Δ͜ͱ
͕ݴ͍ଓ͚ͯͨ͜ͱɿਖ਼͍͠ͷΛਖ਼͘͠࡞Δ
ਖ਼͠͞ʹ2࣠͋Δvalidation ͱ verification
validation => value ͔ΒདྷͯΔvalue ͭ·ΓՁ͕͋Δ͜ͱ
verification => very ͔Β͖ͯΔvery "ͱͯ" Ͱͳ͘ʮਖ਼͘͠ʯͱ͍͏ҙຯਖ਼͋͘͠Δ͖͔࢟Ͳ͏͔Λࢦ͢
͜Εཱ͕྆͢Δঢ়ଶ͕ཧͷঢ়ଶɺՁ͕͋Δ͜ͱΛਖ਼͋͘͠Δ͖࢟Ͱ࡞Δ͜ͱ
ྫ͑: ച্্͛ͭͭɺςετϨϏϡʔΛͯ͠ͷΫΦϦςΟอͭɺͦΜͳঢ়ଶ
Ұݟໃ६ͯ͠ΔΑ͏͕ͩɺ͜ΕΛཱ྆ͤ͞Δͷ͕ٕज़ྗͩͱ͍͏Λͯ͠ϝϯόʔΛಋ͍ͯΔɻ
ͳͷͰϝϯόʔʹʮৗʹٕज़ྗͷݚᮎΛͭͭ͠ɺ͋͘·ͰϏδωεϑΝʔετͰΔʯͱ͍͏͜ͱΛҙ͍ࣝͤͯ͞Δɻ
ࣗݾϚελϦʔ
͕ࣗݚᮎΛ͢Δ͜ͱ͔͠͠ɺݚᮎͯ͠ଞऀ͔ΒݟΔͱ͔Γʹ͍͘
͕ࣗݚᮎΛ͢Δ͜ͱ͔͠͠ɺݚᮎͯ͠ଞऀ͔ΒݟΔͱ͔Γʹ͍͘ීஈ͔ΒΞτϓοτΛ৺͕͚ΔΑ͏ʹΈͰղܾ
ଉΛు͍ͨΒٵΘͳ͍ͱ͍͚ͳ͘ͳΔΞτϓοτ͢ΔͱΠϯϓοτ͠ͳ͍ͱ͍͚ͳ͘ͳΔ
ྫ: ࣾϒϩά, Demo Day
ຖिάϧʔϓձͰຖճ࡞ͬͨͷΛσϞͤͯ͞ΔɻLTΈ͍ͨʹԿͰྑ͍͔Βຖि࡞ͬͨͷΛհ͢ΔΑ͏ʹ͍ͯ͠Δɻ
݁Ռͱͯ͠• ϝϯόʔ͔ΒͷΞτϓοτ͕૿͑ͨʢͪΖΜʣ• ͦΕ͚ͩ͡Όͳͯ͘Gձͷؔ৺͕ߴ͘ͳͬͨɻ• ਐḿใࠂͰԼΛ͍ͯΔϝϯόʔը໘ΛݟΔΑ͏ʹͳͬͨɻ• άϧʔϓձ͕ᮣୡʹͳͬͨɻ
νʔϜֶश
νʔϜͰݚᮎ͢Δ
ͬͯΔ͜ͱ:ࣾISUCON, εϐʔυϋοΧιϯ
R-ISUCON✕
R-ISUCONϦΫϧʔτͳΓͷΛ࡞ͬͯϦΫϧʔτͳΓͷύϑΥʔϚϯεΛղ͘✕
R-ISUCONୈҰճͷ• ϦΫϧʔτͰΑ͋͘Δձٞࣨ༧γεςϜ
R-ISUCONୈҰճͷ• ϦΫϧʔτͰΑ͋͘Δձٞࣨ༧γεςϜ• ϦΫϧʔτͰձ͕ٞࣨ1Q͔ͣͭ͠औΕͣɺ͔͠ΫΦʔλʔͷ։࢝ʹෛՙ͕ूத͢Δ• ෛՙ͕ूதͨ݁͠Ռࢮ͵
R-ISUCONୈҰճͷ• ϦΫϧʔτͰΑ͋͘Δձٞࣨ༧γεςϜ• ϦΫϧʔτͰձ͕ٞࣨ1Q͔ͣͭ͠औΕͣɺ͔͠ΫΦʔλʔͷ։࢝ʹෛՙ͕ूத͢Δ• ෛՙ͕ूதͨ݁͠Ռࢮ͵ϦΫϧʔτͬΆ͍ɻɻɻ
R-ISUCONୈҰճͷ• ຊՈISUCONͱҧͬͯϑϩϯτΤϯυνϡʔχϯάͷཁૉೖΕͨ• CSS/JSΛ͋͑ͯॏͨ͘͠Γɻ• ΩϟογϡΛޮ͔ͤͨΓɺը૾ѹॖͨ͠Γ͠ͳ͍ͱείΞ͕ग़ͳ͍Α͏ʹͨ͠ɻ
R-ISUCONͬͯΈͯ• ύϑΥʔϚϯε্ɺ࣮ࡍʹϦΫϧʔτͰى͖ͨোΛϕʔεʹຖճ৽͍͠ISUCONͷΛ࡞͍ͬͯΔɻ• ڭҭతͳଆ໘ڧ͍͕ɺোৼΓฦΓతͳଆ໘ڧ͍ɻ• ϦΫϧʔτશମͰ࣮ࢪ͢Δ͜ͱͰϦΫϧʔτશମͷαʔϏε͕Α͘ͳΔ͜ͱΛૂ͍ͬͯΔɻ
R-ISUCONͬͯΈͯ• ύϑΥʔϚϯε্ɺ࣮ࡍʹϦΫϧʔτͰى͖ͨোΛϕʔεʹຖճ৽͍͠ISUCONͷΛ࡞͍ͬͯΔɻ• ڭҭతͳଆ໘ڧ͍͕ɺোৼΓฦΓతͳଆ໘ڧ͍ɻ• ϦΫϧʔτશମͰ࣮ࢪ͢Δ͜ͱͰϦΫϧʔτશମͷαʔϏε͕Α͘ͳΔ͜ͱΛૂ͍ͬͯΔɻϦΫϧʔτͷαʔϏεΛྑ͘͢Εຊͷ8FCશମͷ͏͕ͪྑ͘ͳΔɻ
εϐʔυϋοΧιϯ• ԾͷαʔϏεͰͳ͘ɺ࣮ࡍͷϖʔδΛجʹϑϩϯτΤϯυ͚ͩͰͲ͜·ͰߴԽͰ͖Δ͔Λߦ͏ɻ
εϐʔυϋοΧιϯ• ࣮ࡍͷαʔϏεͰ੍ଟ͍͔ΒΕͳ͍͜ͱଟ͍• ͔͠͠ɺ੍Λ֎ͨ͠ঢ়ଶͰͲ͜·Ͱܰ͘ͳΔ͔ɺͲ͜·ͰLook & Feel͕มΘΔ͔Λ·ͣମݧͤͯ͋͛͞Δ• ͜ΕʹΑͬͯɺ࠷ऴΰʔϧΛݟਾ͑ͨঢ়ଶͰվળ׆ಈ͕Ͱ͖Δ
εϐʔυϋοΧιϯ• ࣮ࡍͷαʔϏεͰ੍ଟ͍͔ΒΕͳ͍͜ͱଟ͍• ͔͠͠ɺ੍Λ֎ͨ͠ঢ়ଶͰͲ͜·Ͱܰ͘ͳΔ͔ɺͲ͜·ͰLook & Feel͕มΘΔ͔Λ·ͣମݧͤͯ͋͛͞Δ• ͜ΕʹΑͬͯɺ࠷ऴΰʔϧΛݟਾ͑ͨঢ়ଶͰվળ׆ಈ͕Ͱ͖ΔμΠΤοτͱҰॹͰ࠷ॳʹཧͷ࢟ΛΠϝʔδͰ͖ΔΑ͏ʹ͔ͯ͠Βվળ͢Δͱΰʔϧ͍͢͠
εϐʔυϋοΧιϯ• ࣮ࡍʹόΠτݕࡧΞϓϦି݅ݕࡧΞϓϦͰޮՌ͕ग़͍ͯΔɻ•
ଞʹ
PIGICON• Programming and Intelligence: GreatestImprovement CONtest• ػցֶश x ISUCON• Ԡੑೳͱֶशਫ਼྆ํΛڝ͏ίϯςετ
PIGICON• Ϣʔβʔʹ࣭ͯ͠ɺͦͷ༰ΛجʹϢʔβʔ͕ߟ͑ͯΔͷΛਪଌ͢Δ• ࣭ճ͕গͳ͚Εগͳ͍΄ͲείΞߴ͍• ͨͩؒ͠ҧ͍Λ͢ʹ͍߹Θ͕ͤଟ͘ͳΔ• ԠੑೳΛ͋͛Α͏ͱੑೳΛ্͛Δͱࠓਫ਼͕͘ͳΔ
IMOCON• Iikanji ni MOdel CONtest• Kaggle Έ͍ͨͳػցֶशͷਫ਼ͷΈΛڝ͏ίϯςετ• ·ͩ͜Ε͔ΒΔίϯςετͳͷͰৄࡉ໌͔͞Εͯͳ͍ɻ
৭ʑ૿͖͑ͯͨ
ϋοΧιϯܗࣜͰΠϕϯτʹͯ͠Γ্͛Δ• ΈΜͳʹֶΜͰ΄͍͜͠ͱίϯςετܗࣜʹͯ͠ʢ xxxCONΛ࡞ͬͯʣ։࠵ͱ͍͏ྲྀΕ͕૿͑ͨɻ• ݁Ռͱͯ͠৭ΜͳόϥΤςΟͷڝٕ͕૿͑ͯɺΈΜͳҰڝٕΛ͢ΔΑ͏ʹͳͬͨɻ• ࣗൃతʹֶश͍ͯ͘͠৫ʹͳ͖ͬͯͨɻ• ࣮ࡍͷΞϓϦέʔγϣϯʹ׆͔ͤΔΑ͏ʹͳ͖ͬͯͨɻ
ৼΓฦͬͯ
ৼΓฦͬͯ• ࣗͳΓͷϚωδϝϯτελΠϧΛٻͨ݁͠Ռɺ΄΅ΤϯδχΞίϛϡχςΟͷษڧձͷελΠϧͱҰॹͩͬͨࣄʹؾ͍ͮͨ• ཁେࣄͳ͜ͱษڧձ͔ΒֶΜͩɻ• σϞσΠͰৗʹଉΛు͔ͤΔͷษڧձͷొஃͷϚω͝ͱ• ϋοΧιϯͰظؒʹνʔϜͰֶश͢Δͱ͔ΖΤϯδχΞίϛϡχςΟͷΓํ
ৼΓฦͬͯ• ࣗͳΓͷϚωδϝϯτελΠϧΛٻͨ݁͠Ռɺ΄΅ΤϯδχΞίϛϡχςΟͷษڧձͷελΠϧͱҰॹͩͬͨࣄʹؾ͍ͮͨ• ཁେࣄͳ͜ͱษڧձ͔ΒֶΜͩɻ• σϞσΠͰৗʹଉΛు͔ͤΔͷษڧձͷొஃͷϚω͝ͱ• ϋοΧιϯͰظؒʹνʔϜͰֶश͢Δͱ͔ΖΤϯδχΞίϛϡχςΟͷΓํͣʔͬͱ͖ͬͯͨΤϯδχΞίϛϡχςΟͰ͖ͬͯͨ͜ͱΛࣾͰద༻ͨ͠ɻ݁ՌɺࠓҰఆͷՌ͕ग़ͯΔɻ
ֶश͢Δ৫Λ࡞Δͷʹ৺͕͚ͯΔ͜ͱ• ࣗͳΓͷڞ༗ϏδϣϯΛݴ͏ʮਖ਼͍͠ͷΛਖ਼͘͠࡞Δʯ• ͦͷ্ͰϝϯόʔʹࣗݾݚᮎͱͱʹɺDemo DayࣾϒϩάͳͲৗʹൃ৴ͤ͞ΔΈΛ࡞Δ ʮৗʹଉΛు͔ͤͯٵΘͳ͍ͱ͍͚ͳ͘͢Δʯ• ϋοΧιϯISUCONͳͲͷऔΓΈΛੵۃతʹ౪Έɺੵۃతʹࢼ͢ɻʮνʔϜֶशͰେࣄͳ͜ͱΤϯδχΞίϛϡχςΟ͔ΒֶΜͩɻʯ
ֶश͢Δ৫Λ࡞Δͷʹ৺͕͚ͯΔ͜ͱ• ࣗͳΓͷڞ༗ϏδϣϯΛݴ͏ʮਖ਼͍͠ͷΛਖ਼͘͠࡞Δʯ• ͦͷ্ͰϝϯόʔʹࣗݾݚᮎͱͱʹɺDemo DayࣾϒϩάͳͲৗʹൃ৴ͤ͞ΔΈΛ࡞Δ ʮৗʹଉΛు͔ͤͯٵΘͳ͍ͱ͍͚ͳ͘͢Δʯ• ϋοΧιϯISUCONͳͲͷऔΓΈΛੵۃతʹ౪Έɺੵۃతʹࢼ͢ɻʮνʔϜֶशͰେࣄͳ͜ͱΤϯδχΞίϛϡχςΟ͔ΒֶΜͩɻʯࠓ·ͩಓɺֶश͢Δ͕Ͱ͖͖͚ͯͨͩɺ͔͜͜ΒՁ = ϏδωεΛ্͍͛ͯ͘ඞཁ͋Δ
͋Γ͕ͱ͏͍͟͝·ͨ͠ɻJSConf.jp ੋඇདྷ͍ͯͩ͘͞ɻ