Slide 1

Slide 1 text

jsconf.eu 2018 2018/06/20 @ Recruit Technologies

Slide 2

Slide 2 text

Twitter: @yosuke_furukawa Github: yosuke-furukawa

Slide 3

Slide 3 text

jsconf.eu 2018

Slide 4

Slide 4 text

Ұ൪໘ന͔ͬͨͷ

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Ұ൪໘ന͔ͬͨͷ͸ίϨ ͚ͩͲɻɻɻ

Slide 7

Slide 7 text

ৄࡉ͸͜͜Ͱ࿩͠·͢

Slide 8

Slide 8 text

͓΋͠Ζ͔ͬͨηογϣϯ 3ͭ঺հ EFOPҎ֎ͷ

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

૊৫ͷͨΊͷഉଞతͳߦҝͷݮ Β͠ํ • ܭଌͰ͖ͳ͍΋ͷ͸؅ཧͰ͖ͳ͍ • Ͳ͏΍ͬͯ૊৫Λվળ͢Δ͔ɺͱ͍͏૊৫վ ળͷ࿩ • ·͔͞ JavaScript ͷΧϯϑΝϨϯεͰ૊৫վ ળωλΛฉ͘ͱ͸ɻɻɻ

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

૊৫ͷͨΊͷഉଞతͳߦҝͷݮ Β͠ํ • ͢΂ͯͷεςʔΫϗϧμʔ͕Ͳ͏ײ͡Δ͔Λ૝ ૾ͯ͠ɺͦͷίΞόϦϡʔΛఆٛ͠ͳ͍͞ • ܭଌͰ͖ͳ͍΋ͷ͸੒ޭ͔ͨ͠Ͳ͏͔΋ଌΕͣɺ ͦΕʹΑͬͯݕূ΋Ͱ͖ͳ͍ͷͰɺܭଌͯ͠ς ετ͠ͳ͍͞ • ςετͨ͠Βͦͷ݁ՌΛඪ४Խͯ͠޿Ίͳ͍͞

Slide 13

Slide 13 text

૊৫ͷͨΊͷഉଞతͳߦҝͷݮ Β͠ํ • ૝૾͢Δ͜ͱ • ఆٛ͢Δ͜ͱ • ద༻͢Δ͜ͱ • ݕূ͢Δ͜ͱ • ඪ४Խ͢Δ͜ͱ • ͜ΕΒΛܧଓతʹ࣮ࢪ͢Δ͜ͱ

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

https://ejzimmer.github.io/event-loop-talk/#/

Slide 16

Slide 16 text

Event Loop ͬͯΑ͘ฉ͚͘Ͳ Կʁ • Taskͷ؅ཧͷͨΊͷΩϡʔʢΈ͍ͨͳ΋Μʣ • TaskͬͯͳʹΑʁ document.body.addEventListener('keydown', (event) => { if (event.key === 'PageDown') { location.href = "/#/36"; } }); ͜͜ͷ͜ͱ

Slide 17

Slide 17 text

Event Loop ͬͯΑ͘ฉ͚͘Ͳ Կʁ

Slide 18

Slide 18 text

Event Loop ͬͯΑ͘ฉ͚͘Ͳ Կʁ • Taskͷ؅ཧͷͨΊͷΩϡʔʢΈ͍ͨͳ΋Μʣ • TaskͬͯͳʹΑʁ document.body.addEventListener('keydown', (event) => { if (event.key === 'PageDown') { location.href = "/#/36"; } }); ͜͜ͷ͜ͱ

Slide 19

Slide 19 text

Event Loop ͬͯΑ͘ฉ͚͘Ͳ Կʁ • Πϕϯτϧʔϓʹ͍ͭͯղઆͯ͠Έͨ • ࠷ۙ͸Taskͱ͍ͬͯ΋simpleͰ͸ͳ͘ɺPromise ͷmicrotask΍webworkerΛ࢖ͬͨผεϨου΋ ଘࡏ͢Δ • Node.jsͷEventLoop΋·ͨಛ௃త setImmediate ΍ process.nextTick ͕͋ͬͨΓɻ

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

TCPͷղઆ • ΊͪΌͪ͘Ό໘ന͔ͬͨɻ • Slow Start ͷղઆͱͯ͜͠ΕҎ্ແ͍͘Β͍ຊ࣭ Λଊ͑ͯͨɻ • Head of Line blocking ΛύϯέʔΩΛ৯΂͗ͯ͢ ৯΂ΒΕͳ͘ͳͬͨঢ়ଶͱදݱͯͨ͠ͷ͸ਧ͍ͨ • രস͠ͳ͕ΒݟΕͨؾ͕͢Δɻ

Slide 26

Slide 26 text

No content