Slide 1

Slide 1 text

©2022 Wantedly, Inc. GoͱRust - ฒߦॲཧฤ \ඇެࣜ/ Go Conferenceޙ໷ࡇ 2022/4/27 nasa (Asan Kondo)

Slide 2

Slide 2 text

©2022 Wantedly, Inc. ࣗݾ঺հ • nasa Ͱ͢ • Backend engineer / Wantedly, in c • ਪનج൫ͷӡ༻։ൃ • DSͷੜ࢈ੑര্͛ • কདྷͷເ͸nasaͱ͍͏ϋϯυϧωʔϜΛ΋͗औΔ͜ͱ • GitHub: k-nas a • Twitter: nasa_desu • Zenn: nasa 🎉 🎉 🎉 🎉 🎉

Slide 3

Slide 3 text

©2022 Wantedly, Inc. ࿩͢͜ͱ • goroutineͱ͸ͳʹ͔ • Goͷฒߦॲཧͷ࢓૊Έ • goroutine(Go)ͱasync/await(Rust)ͷൺֱ • GoͷϥϯλΠϜɺRustͷϥϯλΠϜͷ࿩

Slide 4

Slide 4 text

©2022 Wantedly, Inc. ࿩͞ͳ͍͜ͱ • Ͳ͕ͬͪ༏Ε͍ͯΔͱ͍͏࿩Λ͢Δͭ΋Γ͸ͳ͍ • ߏจͷҧ͍ʹ͍ͭͯ͸ಛʹ৮Εͳ͍ • ϕʔεʹͳ͍ͬͯΔࢥ૝ʹ͍ͭͯ͸ಛʹ৮Εͳ͍

Slide 5

Slide 5 text

©2022 Wantedly, Inc. ໨࣍ 1. ͦΕͧΕͷฒߦϓϩάϥϛϯά 2. ͦΕͧΕͷλεΫ 3. ϥϯλΠϜ 4. εέδϡʔϦϯά

Slide 6

Slide 6 text

©2021 Wantedly, Inc. ͦΕͧΕͷฒߦϓϩάϥϛϯά

Slide 7

Slide 7 text

©2022 Wantedly, Inc. • goΩʔϫʔυͰΒ͘Β͘ • ϥϯλΠϜ͕͍͍ײ͡ʹޮ཰త ʹॲཧͯ͘͠ΕΔ ͦΕͧΕͷฒߦϓϩάϥϛϯά (Pͷฒߦϓϩάϥϛϯά

Slide 8

Slide 8 text

©2022 Wantedly, Inc. • RustͰ͸ϥϯλΠϜ͕૊Έ ࠐΈͰೖͬͯͳ͍ͷͰϥϯ λΠϜϥΠϒϥϦΛ࢖͏ඞ ཁ͕͋Δ • ຊൃදͰ͸tokioͱ͍͏ϥΠ ϒϥϦΛ࢖͏ ͦΕͧΕͷฒߦϓϩάϥϛϯά 3VTUͷฒߦϓϩάϥϛϯά

Slide 9

Slide 9 text

©2022 Wantedly, Inc. • ͳΜ͔mainͷલʹมͳͷ͍ͭͯΔ • tokio::spawn?? ͦΕͧΕͷฒߦϓϩάϥϛϯά 3VTUͷฒߦϓϩάϥϛϯά

Slide 10

Slide 10 text

©2022 Wantedly, Inc. mainલͷσΟϨΫςΟϒ͸ϥϯλ ΠϜΛىಈ͢Δ + mainΛasyncؔ ਺ʹग़དྷΔ͓·͡ͳ͍ ͦΕͧΕͷฒߦϓϩάϥϛϯά 3VTUͷฒߦϓϩάϥϛϯά

Slide 11

Slide 11 text

©2022 Wantedly, Inc. tokio::spawn͸goΩʔϫʔυͱ ಉ͘͡λεΫΛىಈ͢Δؔ਺ ͦΕͧΕͷฒߦϓϩάϥϛϯά 3VTUͷฒߦϓϩάϥϛϯά

Slide 12

Slide 12 text

©2022 Wantedly, Inc. • ඇಉظؔ਺Λఆٛ͢Δ͔൱͔ • ϥϯλΠϜ͕ඪ४Ͱ͋Δ͔ • ޙʹݟΔҧ͍͸ඪ४͔൱͔ ʹΑΔ΋ͷͩͱࢥ͍ͬͯΔ ͦΕͧΕͷฒߦϓϩάϥϛϯά (Pͱ3VTUൺֱ

Slide 13

Slide 13 text

©2021 Wantedly, Inc. λεΫʹ͍ͭͯ ͦΕͧΕ͕ੜ੒ͨ͠λεΫʹ͍ͭͯݟ͍ͯ͘

Slide 14

Slide 14 text

©2022 Wantedly, Inc. • ͦΕͧΕ͕ੜ੒ͨ͠φχΧΛλε Ϋͱݺͼ·͢ • ͜ΕΒʹ͍ͭͯݟ͍͖ͯ·͠ΐ͏ λεΫʹ͍ͭͯ

Slide 15

Slide 15 text

©2022 Wantedly, Inc. • GoͰىಈͨ͠λεΫΛgrouting λεΫʹ͍ͭͯ • Tokio::spawnͰىಈͨ͠λεΫΛ ඇಉظλεΫ

Slide 16

Slide 16 text

©2021 Wantedly, Inc. ·ͣHPSPVUJOFʹ͍ͭͯݟ͍͖ͯ·͠ΐ͏

Slide 17

Slide 17 text

©2022 Wantedly, Inc. HPSPVUJOFͱ͸ ίϧʔνϯͷந৅Խ

Slide 18

Slide 18 text

©2022 Wantedly, Inc. HPSPVUJOFͱ͸ 🤔🤔🤔🤔

Slide 19

Slide 19 text

©2022 Wantedly, Inc. • ίϧʔνϯͷงғؾΛ௫Ή • ؔ਺͸ݺͼग़ͨ͠Β࠷ޙ·Ͱ࣮ߦ • ίϧʔνϯ͸ॲཧΛதஅग़དྷΔɺ ్ͦͯ͠த͔Β࠶։Ͱ͖Δ ίϧʔνϯͱ͸

Slide 20

Slide 20 text

©2022 Wantedly, Inc. • goroutine΋్தͰதஅͱ࠶։Λ܁ Γฦ͍ͯ͠Δ • ͜ΕΒͷ؅ཧ͸GoϥϯλΠϜ͕ ΍͍ͬͯΔ ίϧʔνϯͱ͸

Slide 21

Slide 21 text

©2022 Wantedly, Inc. • Ͳ͜Ͱதஅɾ࠶։͢Δͷ͔? HSPVUJOH ࠶։தஅͷ࿩

Slide 22

Slide 22 text

©2022 Wantedly, Inc. • ๻Β͸࠶։ɾதஅϙΠϯτ͸໌͍ࣔͯ͠ͳ͍ HSPVUJOH ࠶։தஅͷ࿩

Slide 23

Slide 23 text

©2022 Wantedly, Inc. • զʑϓϩάϥϚʔ͕໌ࣔͤͣͱ΋ϥϯλΠϜ͕ӨͰ͏·͍͜ ͱ΍ͬͯ͘Ε͍ͯΔ • ͏Ζ֮͑Ͱ͕͢Լهͷ࣌ʹ੾ΓସΘΔ͸ͣ • time.Slee p • I O • Memory allocation HSPVUJOH ࠶։தஅͷ࿩

Slide 24

Slide 24 text

©2022 Wantedly, Inc. HSPVUJOH ࠶։தஅͷ࿩

Slide 25

Slide 25 text

©2021 Wantedly, Inc. ඇಉظλεΫʹ͍ͭͯݟ͍͖ͯ·͠ΐ͏

Slide 26

Slide 26 text

©2022 Wantedly, Inc. • Ͳ͜Ͱதஅɾ࠶։͢Δͷ͔ ? • awaitͱॻ͍ͨͱ͖ • ϓϩάϥϚʔ͕໌ه͢Δ ඇಉظλεΫ ࠶։தஅͷ࿩

Slide 27

Slide 27 text

©2022 Wantedly, Inc. • ϒϩοΩϯάॲཧΛࠞೖͤ͞Δͱ ଞͷλεΫʹ੾ΓସΘΒͣ1ͭͷλ εΫ͕ઐ༗ͯ͠͠·͏ • ৻ॏ͕͞ඞཁ ඇಉظλεΫ ࠶։தஅͷ࿩

Slide 28

Slide 28 text

©2022 Wantedly, Inc. • ੑೳͷ੹೚͸ϥϯλΠϜ͕͔࣋ͭϓϩά ϥϚʔ͕͔࣋ͭ • Go͸ϓϩάϥϚʔϑϨϯυϦʔײ͕͋Δ • ҰํͰΦʔόʔϔου͕͋Δ(Β͍͠ ) λεΫʹ͍ͭͯ

Slide 29

Slide 29 text

©2021 Wantedly, Inc. ϓϦΤϯϓςΟϒɾϊϯϓϦΤϯϓςΟϒ

Slide 30

Slide 30 text

©2022 Wantedly, Inc. w ·Ͱ (PͰ΋·Ͱ͸ແݶϧʔϓͳͲ͕͋ͬͨ৔߹ʹ ଞͷHPSPVUJOF͕࣮ߦ͞Εͳ͍ͱ͍͏໰୊͕͋ͬ ͨΑ͏ ϓϦΤϯϓςΟϒɾϊϯϓϦΤϯϓςΟϒ

Slide 31

Slide 31 text

©2022 Wantedly, Inc. w ͔Β λεΫ͕͠͹Β࣮͘ߦ͞Ε͍ͯΔ͜ͱΛݕ஌ͯ͠ϥ ϯλΠϜʹ໭ΔίʔυʯΛૠೖ͢Δ༻ʹͳͬͨΑ͏ Ͱ͢ɻศརʂ ϓϦΤϯϓςΟϒɾϊϯϓϦΤϯϓςΟϒ

Slide 32

Slide 32 text

©2022 Wantedly, Inc. w (PͷΑ͏ʹϥϯλΠϜ͕λεΫͷ࣮ߦΛதஅͯ͠ଞͷλεΫͷ࣮ߦʹҠΔΑ ͏ͳϚϧνλεΫํ๏ΛϓϦΤϯϓςΟϒϚϧνλεΫ w 3VTU ͱ͍͏͔BTZODBXBJUʁ ͷΑ͏ʹλεΫ͕ࣗൃతʹ࣮ߦݖΛ໌͚౉͢ Α͏ͳϚϧνλεΫํ๏ΛϊϯϓϦΤϯϓςΟϒϚϧνλεΫ·ͨ͸ɺڠௐత ϚϧνλεΫ ϓϦΤϯϓςΟϒɾϊϯϓϦΤϯϓςΟϒ

Slide 33

Slide 33 text

©2022 Wantedly, Inc. w (P w ϓϦΤϯϓςΟϒϚϧνλεΫ w ࠶։ɾఀࢭϙΠϯτ͸ϥϯλΠϜ͕͍͍ײ͡ʹؤுΔ w 3VTU w ϊϯϓϦΤϯϓςΟϒϚϧνλεΫ w ࠶։ఀࢭ͸ϓϩάϥϚʔ͕࣮૷ ϓϦΤϯϓςΟϒɾϊϯϓϦΤϯϓςΟϒ

Slide 34

Slide 34 text

©2021 Wantedly, Inc. λεΫεέδϡʔϦϯά

Slide 35

Slide 35 text

©2022 Wantedly, Inc. λεΫεέδϡʔϦϯά ͋·Γҧ͍͕ͳ͍ͷͰ(PϥϯλΠ ϜΛݟ͍ͯ͘ ͜͜Ͱઆ໌͍ͯ͠ΔϥϯλΠϜͷಈ࡞͸ݹ͍΋ͷ͔΋͠Ε·ͤΜ

Slide 36

Slide 36 text

©2022 Wantedly, Inc. λεΫεέδϡʔϦϯά w λεΫ͸ʹ.ݸͷ04εϨου্ʹ ߏங͞Εͨ/ݸͷάϦʔϯεϨου ্Ͱ࣮ߦ͞Ε·͢ɻ w ./Ϟσϧͱݺ͹ΕΔ΋ͷͰ͢ ./Ϟσϧ

Slide 37

Slide 37 text

©2022 Wantedly, Inc. λεΫεέδϡʔϦϯά ϫʔΫεςΟʔϦϯάεέδϡʔϦϯά w HMPCBMUBTLRVFVFͦͷ໊ͷ௨Γάϩʔ όϧͳλεΫΩϡʔ w MPDBMUBTLRVFVFPTεϨουʹ͖ͭͭ ͷϩʔΧϧλεΫΩϡʔ͕͋Δ w QSPDFTTPS$16Λந৅Խͨ͠΋ͷɻλε Ϋͷ࣮ߦ͸͍͕ͭ͜ߦ͍ͬͯΔ w 04UISFBE

Slide 38

Slide 38 text

©2022 Wantedly, Inc. λεΫεέδϡʔϦϯά ϫʔΫεςΟʔϦϯάεέδϡʔϦϯά w λεΫΛফԽͨ͠ͱ͖ͷಈ͖

Slide 39

Slide 39 text

©2022 Wantedly, Inc. λεΫεέδϡʔϦϯά ϫʔΫεςΟʔϦϯά w λεΫͷ୳ࡧ͕࢝ΊΔ w ୳ࡧॱং͸ϥϯλΠϜʹΑͬͯҧ͏͔΋

Slide 40

Slide 40 text

©2022 Wantedly, Inc. λεΫεέδϡʔϦϯά ଞͷQSPDFTTPS͔Β౪Ή w ଞͷQSPDFTTPSͷϩʔΧϧΩϡʔ͔Β λεΫΛ౪Ή͜ͱ͔Β͜ͷΞϧΰϦζ Ϝ͸ϫʔΫεςΟʔϦϯάͱݺ͹Εͯ Δ w ͜ΕʹΑΓɺͭͷQSPDFTTPSʹλε Ϋ͕ूதͨ͠ͱͯ͠΋ଞͷQSPDFTTPS ʹॲཧΛ෼ࢄ͢Δ͜ͱ͕ग़དྷɺޮ཰త ʹλεΫΛॲཧ͍ͯ͘͜͠ͱ͕Ͱ͖Δ

Slide 41

Slide 41 text

©2021 Wantedly, Inc. νϟΠϧυεςΟʔϦϯάɾܧଓεςΟʔϦϯά

Slide 42

Slide 42 text

©2022 Wantedly, Inc. νϟΠϧυεςΟʔϦϯάɾܧଓεςΟʔϦϯά w ͜ͷΑ͏ͳΠϝʔδͷํ͕ଟ͍ͱ༧૝͍ͯ͠·͢

Slide 43

Slide 43 text

©2021 Wantedly, Inc. Goͩͱ͜Ε͸ؒҧ͍Ͱ͢ Page Title Page Subtitle

Slide 44

Slide 44 text

©2022 Wantedly, Inc. νϟΠϧυεςΟʔϦϯάɾܧଓεςΟʔϦϯά w QSPDFTTPSͰ͸AHPTBZ lIFMMPz A͕ಈ࡞͢Δ w λεΫੜ੒ޙͷॲཧ͕λεΫͱͯ͠ΤϯΩϡʔ͞ΕΔ

Slide 45

Slide 45 text

©2022 Wantedly, Inc. νϟΠϧυεςΟʔϦϯάɾܧଓεςΟʔϦϯά w ܧଓεςΟʔϦϯά͸ੑೳ্ͷར఺͕͋ΔͨΊ (PͰ࠾༻͞Ε͍ͯ·͢ w ܧଓεςΟʔϦϯά͸ίϯύΠϥͷαϙʔτ͕ ඞཁʹͳΔΒ͘͠ɺ3VTUͰ͸࠾༻Ͱ͖͍ͯͳ ͍ͷ͕ݱঢ়Ͱ͢ w 3VTUͰ͸εέδϡʔϦϯάͷͱ͖ʹઆ໌ͨ͠ λεΫ͕ΩϡʔΛग़ೖΓ͢ΔνϟΠϧυε ςΟʔϦϯάͱ͍͏ํࣜΛऔ͍ͬͯ·͢ɻ

Slide 46

Slide 46 text

©2021 Wantedly, Inc. ·ͱΊ

Slide 47

Slide 47 text

©2022 Wantedly, Inc. ·ͱΊ w (Pʹ͸ඪ४ͷϥϯλΠϜ͕͋ΔΑɺ3VTUͰ͸ϥϯλΠϜϥΠϒϥϦΛ࢖͏ඞཁ͕͋ΔΑ w (P͸ϥϯλΠϜ͕தஅ࠶։Λ؅ཧ͢ΔΑɺ3VTUͰ͸ϓϩάϥϚʔ͕؅ཧ͢ΔΑ w ϒϩοΩϯάॲཧΛࠞೖͪ͠Ό͏ͱةݥͩͶ w (P͸ϓϦΤϯϓςΟϒͩΑ 3VTUͩͱϊϯϓϦΤϯϓςΟϒͩΑ w Ͳͬͪ΋λεΫͷεέδϡʔϦϯά͸ϫʔΫεςΟʔϦϯάͱ͍͏ઓུͩΑ w (P͸λεΫຊମͰ͸ͳ͘ܧଓΛ౪Έ߹͍ͬͯΔΑ ܧଓϫʔΫεςΟʔϦϯά w 3VTU͸λεΫຊମΛ౪Έ߹͍ͬͯΔΑ νϟΠϧυϫʔΫεςΟʔϦϯά

Slide 48

Slide 48 text

©2022 Wantedly, Inc. Wantedly Engineering Handbook ෺ཧຊΛϓϨθϯτʂ ࣾ಺ͷΤϯδχΞ͕஌Δ΂͖৘ใͷ͏ͪ֎෦ʹ΋ެ։Ͱ͖Δ৘ใΛ ମܥతʹ·ͱΊͨ)BOECPPLͰ͢ IUUQTEPDTXBOUFEMZEFW ٕज़తͳ࿩Λ͍ͨ͠ํ͸ΦϯϥΠϯ໘ஊ΋େ׻ܴʂ