Slide 1

Slide 1 text

Ϋϩʔϥʔ࣮૷ͰֶͿGo Katsuya Kawabe 2018/4/15(೔) @ GoCon 2018 Spring 1

Slide 2

Slide 2 text

ࣗݾ঺հ ɹ 2 •Name := ઒෦উ໵ •Twitter := @KKawabe108 •GitHub := @Bo0km4n ✦ ॴଐ - ࣳӜ޻ۀେֶେֶӃ ిؾిࢠ৘ใ޻ֶઐ߈ M1 - גࣜձࣾ3-shake (Πϯλʔϯ) ✦ ීஈͷ׆ಈ - 3-shakeͰDMPͷόοΫΤϯυΛgoͰΨϦΨϦॻ͍ͯ·͢ - ࠷ۙ͸झຯͰ8086ͷσΟεΞηϯϒϥΛgoͰ࣮૷ͨ͠Γ

Slide 3

Slide 3 text

LTͷྲྀΕ ɹ 3 1. LTͷ૝ఆର৅ऀ 2. Ϋϩʔϥʔͷ࢓༷ 3. ֶ΂Δ͜ͱ 4. σϞ 5. ·ͱΊ

Slide 4

Slide 4 text

ର৅ऀ 4 GoΛֶΜͰΈ͍͚ͨͲ͍ ͖ͳΓOSSΛ৮Δͷ͸࠳ ંͦ͠͏ɻɻɻ ͱΓ͋͑ͣԿ͔࡞ͬͯ Goͷײ֮Λ௫Έ͍͚ͨͲ ΞΠσΟΞ͕෸͔ͳ͍ɻɻɻ GoΛֶͼ͍ͨܟ伲ͳΤϯδχΞ Ճ͑ͯ… ৽ਓϓϩάϥϜͷڭҭΛ୲͏ϕςϥϯΤϯδχΞ

Slide 5

Slide 5 text

Ϋϩʔϥʔͷ࣮૷ͱ͍͏͓୊ 5 ڭत ֶੜ ɾ৽͍͠ϓϩάϥϛϯάݴޠͷษڧ ɾ৽ਓ΍ֶੜͷϕϯνϚʔΫʹ΋ͳΔ Ϋϩʔϥʔ࡞Γͳ͍͞ Ϋϩʔϥʔͷ࢓༷

Slide 6

Slide 6 text

6 Ϋϩʔϥͷ࢓༷ WebϖʔδͷURLΛࢦఆͯ͠ϖʔδΛϩʔΧϧʹอଘɻ ϩʔΧϧͰhtmlΛ։͍ͯݟͨ໨Λ࠶ݱ͢Δ

Slide 7

Slide 7 text

Ϋϩʔϥ࣮૷ͷྲྀΕ Ϋϩʔϥʔͷ࢓༷ 7 ̍ஈ֊ URLΛࢦఆͯ̍͠ϖʔδͷΈ ΫϩʔϦϯά͢Δ ̎ஈ֊ ֊૚Λࢦఆͯ̍͠ϖʔδ໨ͷϦϯΫઌ͔ Β࠶ؼతʹΫϩʔϦϯά͢Δ ̏ஈ֊ ͜ΕΒͷॲཧΛฒྻԽ͠ɺߴ଎Խ͢Δ

Slide 8

Slide 8 text

8 ̍ஈ֊ ̍ϖʔδͷΈΫϩʔϦϯά͢Δ

Slide 9

Slide 9 text

̍ஈ֊໨ 9 HTMLύʔαϥΠϒϥϦΛ༻͍ͯɺ ࢦఆͨ͠WebϖʔδΛϩʔΧϧʹอଘͯ͠ ݟͨ໨Λ࠶ݱ͢Δɻ html, javascript, css, imgϑΝΠϧΛμ΢ϯϩʔυ ※ htmlͷύεΛϩʔΧϧͷύεʹॻ͖׵͑Δ Ϋϩʔϥʔͷ࢓༷ ͭ·Γ…

Slide 10

Slide 10 text

̍ஈ֊໨ 10 Ϋϩʔϥʔͷ࢓༷ Replace ύεΛFQDNʹඥ͚ͮͯμ΢ϯϩʔυ͢Δ

Slide 11

Slide 11 text

11 ̎ஈ֊ ֊૚Λࢦఆͯ̍͠ϖʔδ໨ͷϦϯΫઌ͔Β ࠶ؼతʹΫϩʔϦϯά͢Δ

Slide 12

Slide 12 text

̎ஈ֊໨ 12 $ go run main.go -root https://golang.org/doc/ -depth 2 Root (Depth 0) Depth 1 Depth 2 rootͷhtmlʹషΒΕ͍ͯΔ ϦϯΫͷϖʔδΛ Ϋϩʔϧ͢Δ ى఺ͱͳΔϖʔδ͸ https://golang.org/doc Ϋϩʔϧ͢Δਂ͞͸̎ Ϋϩʔϥʔͷ࢓༷

Slide 13

Slide 13 text

13 ̏ஈ֊ ͜ΕΒͷॲཧΛฒྻԽͯ͠ߴ଎ԽΛܭΔ

Slide 14

Slide 14 text

̏ஈ֊໨ Ϋϩʔϥͷ࢓༷ 14 cpus := runtime.NumCPU() runtime.GOMAXPROCS(cpus) c := make(chan bool, cpus) for i := 0; i < ֊૚਺; i++ { var wg sync.WaitGroup for _, p := range webϖʔδͷ഑ྻ { c <- true wg.Add(1) go func(p Page) { defer func() { <-c }() // ΫϩʔϦϯά wg.Done() }(p) } wg.Wait() } goroutineΛ༻͍Δ͜ͱͰൺֱత؆୯ʹ ฒྻॲཧΛ࣮૷Ͱ͖Δ ※ go func()಺ͷॲཧ͕͍ܰͱ Ή͠Ζ஗͘ͳΔՄೳੑ΋͋Δ ※ ੜ੒͢Δgoroutineͷ਺΋੍ޚ͠ͳ͍ͱ Ϋϩʔϧ͢Δϖʔδ͕ଟ͍৔߹panic͢Δ͜ͱ΋͋Δ ͔͠͠

Slide 15

Slide 15 text

ֶ΂Δ͜ͱ • GoͰͷιϑτ΢ΣΞઃܭ(ύοέʔδ΍ߏ଄ମ, ΠϯλʔϑΣʔε) • จࣈྻॲཧ (ύεपΓͰ݁ߏటष͍ॲཧΛ͢Δඞཁ͕͋Δ) • ඇಉظॲཧ (goroutineͷجຊతͳ࢖͍ํ) • ϑΝΠϧೖग़ྗ 15

Slide 16

Slide 16 text

σϞ 16

Slide 17

Slide 17 text

·ͱΊ 17 Go binary Goroutine Goroutine Goroutine Web Page Web Page Web Page HTML Img Css JS HTML Img Css JS HTML Img Css JS Download Download Download

Slide 18

Slide 18 text

·ͱΊ • ࠓճ࣮૷ͨ͠Ϋϩʔϥʔ͸ https://github.com/Bo0km4n/avarus ʹ͋Γ·͢ • ߦ਺͸600ߦ͙Β͍Ͱ͓खܰͰ͢(೔਺Ͱݴ͑͹Ұि͙ؒΒ͍ʁ) • ଞͷݴޠΛֶͿࡍʹ΋༗ޮͩͱࢥ͍·͢ • ੋඇ͓Ջͳ࣌ʹଉൈ͖ʹͰ΋࣮૷ͯ͠Έ͍ͯͩ͘͞ʂʂ 18

Slide 19

Slide 19 text

19 Have a good Golang life!!! Thank you for listening.