Slide 1

Slide 1 text

ࠓߋGoͷWebϑϨʔϜϫʔ ΫΛ࡞Ζ͏ͱ͍ͯ͠Δϫέ @macopy Asakusa.go 2024-09-13

Slide 2

Slide 2 text

https://github.com/mackee/tanukirpc

Slide 3

Slide 3 text

ಛ௃1: ܕ҆શϋϯυϥʔ

Slide 4

Slide 4 text

ಛ௃2: ϦΫΤετείʔϓDI

Slide 5

Slide 5 text

ಛ௃3: ΫϥΠΞϯτίʔυੜ੒

Slide 6

Slide 6 text

ಛ௃3: ΫϥΠΞϯτίʔυੜ੒

Slide 7

Slide 7 text

GoͷWebΞϓϦέʔγϣϯ ϑϨʔϜϫʔΫ ଞʹ΋ͨ͘͞Μ͋Δ ͳͥ࡞ͬͨͷ͔ʁ

Slide 8

Slide 8 text

1. Easy͔ͭఆ൪͕ͳ͍ • GoͷϑϨʔϜϫʔΫ͸͍͍ͨͯsimpleدΓ • ϑϨʔϜϫʔΫͱ͍͏ΑΓϥΠϒϥϦ(ϧʔλʔͳͲ) • Ұͭͷ͜ͱΛ͏·͘΍ΔύʔπΛબΜͰ࢖͏ܗʹͳΔ • બͿࣗ༝͕͋ͬͯྑ͍…͕Կճ΋΍ΔͱϥΠϒϥϦಉ࢜Λͭͳ͙άϧʔ ίʔυΛຖճॻ͍͍ͯΔ͜ͱʹؾ͕͍ͭͨ • ͍͜͜ΒͰԶͷߟ͑ͨ࠷ڧͷϥΠϒϥϦͷ૊Έ߹ΘͤΛ࡞ͬͨΒͲ͏͔ʁ

Slide 9

Slide 9 text

2. ৽ͨʹϥΠϒϥϦΛಋೖ͢Δ൥Θ͠͞Λ࡟ݮ ͢Δ • tanukirpc͸go-playground/validator͕࠷ॳ͔Βೖ͍ͬͯΔ • structλάʹॻ͚ͩ͘Ͱػೳ͢Δ • ͜͏͍͏ͷͬͯόϥόϥʹೖΕΔͱޙճ͠ʹͳΓ͕ͪ • ʮೖΕΔͷʹࠊ͕ॏ͍ͳΒ࠷ॳ͔ΒϑϨʔϜϫʔΫʹ૊ΈࠐΉʯͱ͍ ͏ࢥ૝

Slide 10

Slide 10 text

3. ΧελϚΠζੑ • ࠷ॳ͸σϑΥϧτڍಈͰྑ͍͕ɺ࡞͍ͬͯ͘ͱཁ݅ʹΑͬͯΧελϜ ͍ͨ͜͠ͱ͕͋Δ • ࠷ۙͩͱΤϥʔ࣌ͷϨεϙϯε • ͦ͏͍͏ͷ΋શ෦ΧελϜͰ͖ΔΑ͏ʹ࡞ͬͯ͋Δ • ϩΨʔ΋࠷ॳ͔Β࢖͍෺ʹͳΔʢΞΫηεϩά΋ʂʣ͕ɺΧελϜͰ ͖ΔΑ͏ʹͳ͍ͬͯΔ

Slide 11

Slide 11 text

࠷ۙ࡞ͬͨػೳ • tanukiupίϚϯυ͕HTTPϦΫΤετΛ·ͣड͚Δػೳ • tanukiup: ϑΝΠϧΛ؂ࢹͯ͠Ϗϧυͱαʔόʔϓϩηε࠶ىಈΛ͢ Δ։ൃ༻ίϚϯυ • tanukiup͕αʔόʔͱͳΓɺUnixυϝΠϯιέοτͰ։ൃதͷαʔ όʔʹϓϩΩγ͢ΔػೳΛ࡞ͬͨ

Slide 12

Slide 12 text

࠷ۙ࡞ͬͨػೳ UBOVLJVQ TCP 8080 BQQ UDS ϑΝΠϧ͕ߋ ৽͞ΕΔͨͼʹϏ ϧυɾ࠶ىಈ

Slide 13

Slide 13 text

ͳ͍ͥͬͨΜtanukiup͕ड͚Δʁ • ΞϓϦαʔόʔʹੜ͍͑ͯΔAPIύεҎ֎ΛϑϩϯτΤϯυ։ൃαʔ όʔʹ޲͚ΔͨΊ • tanukiup͸੩తղੳΛͯ͠ͲͷύεΛrouterʹొ࿥͍ͯ͠Δ͔Λ ஌͍ͬͯΔ • routerʹొ࿥͞Ε͍ͯΔύεҎ֎Λvite dev serverͳͲʹྲྀ͢͜ͱ ͰɺϑϩϯτΤϯυΛؚΊͨ։ൃαʔόʔΛ·Δͬͱಉ͡ϙʔτͰ ड͚ΒΕΔ

Slide 14

Slide 14 text

tanukiupͰvite΁΋proxy UBOVLJVQ TCP 8080 BQQ UDS tanukirpcͰੜ΍ͨ͠ύεͷΈ WJUFEFW TFSWFS TCP 5173

Slide 15

Slide 15 text

Web։ൃ͓ࠔΓ͝ͱΛશ෦΍͍ͬͯͬͯΈΔ • ͍ͬͨΜ΍Γ͗͢ͱ͍͏ͱ͜Ζ·Ͱ΍ͬͯ΋ྑ͍ͷͰ͸ͳ͍͔ • Ώ͘Ώ͘͸ORM΍DBϚΠάϨʔγϣϯɺϑϩϯτΤϯυελοΫؚ Ίͨscaffolding͘Μ΋࡞Δ༧ఆͰ͢ • ΋ͪΖΜORM͸ࣗ࡞ͷsqlla • ͋ͱೝূ΍ηογϣϯपΓ΋૊ΈࠐΉ༧ఆͰ͢

Slide 16

Slide 16 text

for { select { case <-question: answer() case <-feedback: listen() case <-ctx.Done(): break } }