Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GoConference_人生いろいろモノレポもいろいろ

 GoConference_人生いろいろモノレポもいろいろ

More Decks by 株式会社ビットキー / Bitkey Inc.

Other Decks in Technology

Transcript

  1. Bitkey Inc. Connect Product Noriki Takahashi ਓੜ͍Ζ͍ΖϞϊϨϙ΋͍Ζ͍Ζ♪

  2. Outline 1. ࣗݾ঺հ 2. എܠͱͯ͠ͷ͘͠͡Γ 3. Go ϞϊϨϙͷ෼ྨ 4. ϞϊϨϙҠߦͱࠓޙ

    5. ·ͱΊ 2 2
  3. 1. ࣗݾ঺հ 3 • ∁ڮయੜ(Noriki Takahashi) ◦ Twitter: @norinoriki0 ◦

    GitHub: nrnrk • גࣜձࣾBitkey ◦ bitkey platform ͱ͍͏”ΧΪ”ͷϓϥοτϑΥʔϜͷ։ൃ • 2೥൒ Go Ͱ։ൃ͍ͯ͠·͢ • झຯ: ਺ֶɾ෺ཧֶ ◦ zk-SNARKs ͷ਺ֶతͳଆ໘ΛטΈࡅ͘هࣄΛॻ͍ͨΓͯ͠·͢
  4. • Bitkey ͷ3ͭͷࣄۀυϝΠϯ ◦ Homeʢ฻Β͠ʣ ◦ Workspaceʢಇ͘ʣ ◦ Experienceʢඇ೔ৗͷମݧʣ •

    bitkey platform ◦ 3ͭͷ hub ΞϓϦέʔγϣϯͷج൫ 1. ࣗݾ঺հ 4
  5. എܠͱͯ͠ͷ͘͠͡Γ 5 5

  6. ϞϊϨϙԽ͕ඞཁʹͳͬͨഎܠ 6 6 2. എܠͱͯ͠ͷ͘͠͡Γ

  7. গ͠લʹࢥ͍ͬͯͨ͜ͱ͕͋Δ 7 7 2. എܠͱͯ͠ͷ͘͠͡Γ

  8. ͳΜ͔։ൃͰ໘౗ͳ͜ͱ͕ଟ͍ͧ... 8 8 2. എܠͱͯ͠ͷ͘͠͡Γ

  9. ͳΜ͔ϦϙδτϦ΋ଟ͍͠
 Ϛʔδͷॱ൪ͱ͔ؾʹ͠ͳ͖Ό ͍͚ͳ͍෦෼͕͋Δ... 9 9 2. എܠͱͯ͠ͷ͘͠͡Γ

  10. ࢥ͍ग़͢ͱ... 10 10 2. എܠͱͯ͠ͷ͘͠͡Γ

  11. <2೥લͷαʔϏεϩʔϯνͷ͜Ζ> 11 11 2. എܠͱͯ͠ͷ͘͠͡Γ

  12. “Αͬ͠ΌɺϚΠΫϩαʔϏεͰ΍Δͥ”
 12 12 2. എܠͱͯ͠ͷ͘͠͡Γ

  13. “Αͬ͠ΌɺϚΠΫϩαʔϏεͰ΍Δͥ”
 ͷ੎͍Ͱ...
 ϦϙδτϦ΋ͨ͘͞Μ࡞ͬͪΌͬͨ
 ※ ܦҢ͸Ұ෦؆ུԽ͍ͯ͠·͢ 13 13 2. എܠͱͯ͠ͷ͘͠͡Γ

  14. ϦϙδτϦ͹Β͹Β໰୊ൃੜ 14 14 2. എܠͱͯ͠ͷ͘͠͡Γ

  15. 15 15 2. എܠͱͯ͠ͷ͘͠͡Γ

  16. ͦͷ݁Ռ... 16 16 2. എܠͱͯ͠ͷ͘͠͡Γ

  17. ։ൃ્֐ཁҼ͕ͨ͘͞Μੜ·Εͨ... 17 17 2. എܠͱͯ͠ͷ͘͠͡Γ

  18. ϦϙδτϦ͹Β͹Β໰୊
 ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ 18 18 2. എܠͱͯ͠ͷ͘͠͡Γ

  19. 2. എܠͱͯ͠ͷ͘͠͡Γ 19 ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ ◦ ֤ϦϙδτϦͰಉ͡Α͏ͳϩδοΫ͕ग़ͯ͘Δ ▪ → ϘΠϥʔϓϨʔτԽ

  20. 2. എܠͱͯ͠ͷ͘͠͡Γ 20 ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ ◦ ֤ϦϙδτϦͰಉ͡Α͏ͳϩδοΫ͕ग़ͯ͘Δ ▪ → ϘΠϥʔϓϨʔτԽ

    ◦ ղܾ͠Α͏ͱɺڞ௨ϥΠϒϥϦԽ͢Δ
  21. 2. എܠͱͯ͠ͷ͘͠͡Γ 21 ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ ◦ ֤ϦϙδτϦͰಉ͡Α͏ͳϩδοΫ͕ग़ͯ͘Δ ▪ → ϘΠϥʔϓϨʔτԽ

    ◦ ղܾ͠Α͏ͱɺڞ௨ϥΠϒϥϦԽ͢Δ ▪ → ڞ௨ϥΠϒϥϦΛઌʹमਖ਼ͯ͠Ϛʔδ͠ͳ͍ͱ࢖͑ͳ͍... ▪ → ʮ͜Εमਖ਼ͨ͠Βଞʹ΋Өڹ͋ΔΜ͡Ό...ʯ ◦ → ڞ௨ϥΠϒϥϦ͕ൃల͠ͳ͍ & ϘΠϥʔϓϨʔτ΋ੜ·Ε΍͍͢
  22. ϦϙδτϦ͹Β͹Β໰୊
 ᶄ Go ͷόʔδϣϯ΍ϥΠϒϥϦͷߋ৽͕େม 22 22 2. എܠͱͯ͠ͷ͘͠͡Γ

  23. ᶄ Go ͷόʔδϣϯ΍ϥΠϒϥϦͷߋ৽͕େม ◦ ʮ͋ɺ͜ͷϥΠϒϥϦ service A Ͱ͸ v2 ͚ͩͲɺ

    service B ͸ v1 ͳΜͩʯ ▪ service A Λ্͛ͨλΠϛϯάͰ্͓͚͛ͯΕ͹... ◦ ʮ͊͞ɺGo 1.17 ͕ϦϦʔε͞Εͨͧʯ ▪ → ֤ϦϙδτϦͰͪΐͪ͜ΐ͜PRΛग़͢͜ͱʹ... ◦ Dependabot PR ϙνϙν... 2. എܠͱͯ͠ͷ͘͠͡Γ 23
  24. ϦϙδτϦ͹Β͹Β໰୊
 ᶅ ϚʔδͷλΠϛϯάΛ͋Θͤͳ͍ͱ͍͚ͳ͍ 24 24 2. എܠͱͯ͠ͷ͘͠͡Γ

  25. ᶅ ϚʔδͷλΠϛϯάΛ͋Θͤͳ͍ͱ͍͚ͳ͍ ◦ ͜ͷ։ൃ service A ͱ service B ͷमਖ਼͕ඞཁͩ

    ▪ → ͋ɺͰ΋ service A ͸ service B ʹґଘ͍ͯ͠Δ͔Βɺservice B Λઌ ʹϚʔδ͠ͳ͍ͱ service A ͷ CI ͕ࣦഊ͢Δͧ... ◦ ͞ΒʹɺgRPC ͷͨΊͷ proto ϑΝΠϧΛαʔόʔଆ ஔ͍ͨ͜ͱͰෳࡶԽ ▪ ΫϥΠΞϯτଆͰίʔυੜ੒͢Δࡍʹ proto ϑΝΠϧΛμ΢ϯϩʔυ͢ Δߏ੒ʹͳͬͯ͠·ͬͨ... 2. എܠͱͯ͠ͷ͘͠͡Γ 25
  26. ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍
 ᶄ Go ͷόʔδϣϯ΍ϥΠϒϥϦͷߋ৽͕େม
 ᶅ ϚʔδͷλΠϛϯάΛ͋Θͤͳ͍ͱ͍͚ͳ͍ 26 26 2.

    എܠͱͯ͠ͷ͘͠͡Γ ͜ΕΒΛͳΜͱ͔ղফ͍ͨ͠...!
  27. ͹Β͹ΒͷϦϙδτϦΛ·ͱΊΑ͏ʂ 27 27 2. എܠͱͯ͠ͷ͘͠͡Γ

  28. ϞϊϨϙԽ΍Δͧʂ 28 28 2. എܠͱͯ͠ͷ͘͠͡Γ

  29. ϞϊϨϙԽ΍Δͧʂ 29 29 2. എܠͱͯ͠ͷ͘͠͡Γ

  30. Go ϞϊϨϙͷ෼ྨ 30 30

  31. ϞϊϨϙͱ͸ 31 31 3. Go ϞϊϨϙͷ෼ྨ

  32. • ϞϊϨϙ(Mono Repository) ◦ ෳ਺ͷύοέʔδ(Ϟδϡʔϧ)ΛҰͭͷϦϙδτϦͰ؅ཧ͢Δ͜ͱ ◦ ϝϦοτ ▪ Ұׅ؅ཧ͕͠΍͍͢ ◦

    σϝϦοτ ▪ ಛఆͷύοέʔδ͔Β͢Δͱແؔ܎ͳ΋ͷ͕ଟ͍(ιʔεɺίϛοτ) ◦ ࠓճͷࣄྫ ▪ 1νʔϜ͕؅ཧ͍ͯͨ͠10ఔ౓ͷϦϙδτϦͷ౷߹(খن໛) 3. Go ϞϊϨϙͷ෼ྨ 32
  33. ϞϊϨϙԽͰͷղফΠϝʔδ 33 33 2. platform ͱͯ͠ٻΊΒΕͨ΋ͷ

  34. 3. Go ϞϊϨϙͷ෼ྨ 34 • ϞϊϨϙͰͷղফΠϝʔδ ◦ ෳ਺ͷύοέʔδͷίϛοτɾϚʔδΛΞτϛοΫʹͰ͖Δ

  35. 3. Go ϞϊϨϙͷ෼ྨ 35 • ϞϊϨϙͰͷղফΠϝʔδ ◦ ෳ਺ͷύοέʔδͷίϛοτɾϚʔδΛΞτϛοΫʹͰ͖Δ ▪ Ϛʔδॱ൪ͳͲؾʹ͠ͳͯ͘ྑ͍

    ▪ ؾܰʹڞ௨ϥΠϒϥϦΛ੾Γग़ͤͯɺϝϯςφϯε΋͠΍͍͢ ▪ CI Ͱύοέʔδؒͷςετ͕Ͱ͖Δ
  36. • ϞϊϨϙͰͷղফΠϝʔδ ◦ ෳ਺ͷύοέʔδͷίϛοτɾϚʔδΛΞτϛοΫʹͰ͖Δ ▪ Ϛʔδॱ൪ͳͲؾʹ͠ͳͯ͘ྑ͍ ▪ ؾܰʹڞ௨ϥΠϒϥϦΛ੾Γग़ͤͯɺϝϯςφϯε΋͠΍͍͢ ▪ CI

    Ͱύοέʔδؒͷςετ͕Ͱ͖Δ ◦ ґଘͷڞ௨Խͤ͞Δ͜ͱ͕Ͱ͖Δ 3. Go ϞϊϨϙͷ෼ྨ 36
  37. 3. Go ϞϊϨϙͷ෼ྨ 37 • ϞϊϨϙͰͷղফΠϝʔδ ◦ ෳ਺ͷύοέʔδͷίϛοτɾϚʔδΛΞτϛοΫʹͰ͖Δ ▪ Ϛʔδॱ൪ͳͲؾʹ͠ͳͯ͘ྑ͍

    ▪ ؾܰʹڞ௨ϥΠϒϥϦΛ੾Γग़ͤͯɺϝϯςφϯε΋͠΍͍͢ ▪ CI Ͱύοέʔδؒͷςετ͕Ͱ͖Δ ◦ ґଘͷڞ௨Խͤ͞Δ͜ͱ͕Ͱ͖Δ ▪ Ұׅͯ͠ɺGo΍ϥΠϒϥϦͷߋ৽ɾ؅ཧ͕Ͱ͖Δ
  38. Α͠ɺϞϊϨϙΛࢼͯ͠ΈΑ͏ 38 38 3. Go ϞϊϨϙͷ෼ྨ

  39. Ͳ͏΍ͬͨΒྑ͍Μ͚ͩͬʁ
 1ͭʹ·ͱΊΔʹ΋৭ʑ͋Γͦ͏... 39 39 3. Go ϞϊϨϙͷ෼ྨ

  40. গ͠੔ཧͯ͠෼ྨͯ͠Έͨ 40 40 3. Go ϞϊϨϙͷ෼ྨ

  41. 3. Go ϞϊϨϙͷ෼ྨ 41 • Go module ʹ஫໨ͨ͠෼ྨ ◦ go.mod

    Ұ͚ͭͩ: Mono Module ▪ root ʹ go.mod Λ͓͍ͯɺશମΛҰͭͷ Go Module ͱͯ͠ѻ͏ํ๏ ▪ → ಠཱੑ͕௿͍(go.mod ʹॻ͔ͣʹґଘͰ͖Δ) ◦ go.mod ͨ͘͞Μ: Multi Module ▪ ֤σΟϨΫτϦʹ go.mod Λஔ͖ɺͦΕͧΕΛ Go Module ͱͯ͠ѻ͏ ▪ → ಠཱੑ͕ߴ͍(go.mod ʹॻ͔ͳ͍ͱґଘͰ͖ͳ͍)
  42. • Mono Module ◦ ಠཱੑ௿͍ 3. Go ϞϊϨϙͷ෼ྨ 42 •

    Multi Module ◦ ಠཱੑߴ͍
  43. Monorepo / Multirepo ΋
 ߹Θͤͯ੔ཧ͢Δͱ... 43 43 3. Go ϞϊϨϙͷ෼ྨ

  44. 3. Go ϞϊϨϙͷ෼ྨ 44

  45. 3. Go ϞϊϨϙͷ෼ྨ 45 ɾύοέʔδΛލ͍ͰґଘΛ࣋ͯΔ ɾґଘΛ੍ޚ͍ͨ͠ͳΒ੩తղੳඞཁ ɾґଘͷڞ௨Խ͕͠΍͍͢

  46. 3. Go ϞϊϨϙͷ෼ྨ 46 ɾϞδϡʔϧؒͷґଘΛ੍ޚ͠΍͍͢ ɾϞϊϨϙҠߦ͕ൺֱత͠΍͍͢ ɾґଘͷڞ௨Λ͠ͳͯ͘ྑ͍

  47. 3. Go ϞϊϨϙͷ෼ྨ 47 ɾBazel ͳͲͷϏϧυπʔϧ͸ɺ͜ͷߏ଄ ͷҧ্͍͕͋ͬͨʹ௥ՃͰಋೖ͢ΔΠ ϝʔδΛ࣋ͭͱྑ͍

  48. ࠓճɺͲͷܗΛ໨ࢦ͢΂͖͔ 48 48 3. Go ϞϊϨϙͷ෼ྨ

  49. 3. Go ϞϊϨϙͷ෼ྨ 49

  50. 3. Go ϞϊϨϙͷ෼ྨ 50

  51. 3. Go ϞϊϨϙͷ෼ྨ 51

  52. • Mono Module બΜͩཧ༝: ֤՝୊ͷղফ ◦ ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ ▪ ͜Ε͔Β͸

    Go package ͱͯ͠ڞ௨ϥΠϒϥϦΛ࡞Ε͹OK ▪ ୯ମςετΛॻ͘͜ͱͰڞ௨ϥΠϒϥϦͷमਖ਼΋͠΍͘͢ 3. Go ϞϊϨϙͷ෼ྨ 52
  53. • Mono Module બΜͩཧ༝: ֤՝୊ͷղফ ◦ ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ ▪ ͜Ε͔Β͸

    Go package ͱͯ͠ڞ௨ϥΠϒϥϦΛ࡞Ε͹OK ▪ ୯ମςετΛॻ͘͜ͱͰڞ௨ϥΠϒϥϦͷमਖ਼΋͠΍͘͢ ◦ ᶄ Go ͷόʔδϣϯ΍ϥΠϒϥϦͷߋ৽͕େม ▪ ϧʔτͷ go.mod ͱ .go-version ͷॻ͖׵͑ͰOK 3. Go ϞϊϨϙͷ෼ྨ 53
  54. • Mono Module બΜͩཧ༝: ֤՝୊ͷղফ ◦ ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ ▪ ͜Ε͔Β͸

    Go package ͱͯ͠ڞ௨ϥΠϒϥϦΛ࡞Ε͹OK ▪ ୯ମςετΛॻ͘͜ͱͰڞ௨ϥΠϒϥϦͷमਖ਼΋͠΍͘͢ ◦ ᶄ Go ͷόʔδϣϯ΍ϥΠϒϥϦͷߋ৽͕େม ▪ ϧʔτͷ go.mod ͱ .go-version ͷॻ͖׵͑ͰOK ◦ ᶅ ϚʔδͷλΠϛϯάΛ͋Θͤͳ͍ͱ͍͚ͳ͍ ▪ શ෦ҰॹʹͳΔͷͰOK 3. Go ϞϊϨϙͷ෼ྨ 54
  55. • Ҡߦͷํ਑ ◦ Mono Module Monorepo ͰҠߦ͢Δ ◦ εϞʔϧελʔτͱͯ͠ɺGoͷϦϙδτϦͷΈͰ࣮ࢪ ◦

    Mono Module + গ͠ Bazel ▪ ڞ௨ͯ͠࢖͏ϥΠϒϥϦ͕ଟ͘ɺύοέʔδͷಠཱੑ͕ඞཁͳ͍ ▪ ϏϧυͷύϑΥʔϚϯεͷ޲্΍ࠓޙϞϊϨϙͷൣғΛ޿͛Δͱ͖ʹ ར༻Ͱ͖ΔΑ͏ʹɺඞཁʹԠͯ͡গͣͭ͠ Bazel ΛೖΕ͍ͯ͘ 3. Go ϞϊϨϙͷ෼ྨ 55
  56. ϞϊϨϙҠߦͱࠓޙ 56 56

  57. • ϞϊϨϙҠߦͷεςοϓ ◦ ίʔυͷमਖ਼ ◦ ࣗಈੜ੒πʔϧͷରԠ ◦ CI ରԠ 4.

    ϞϊϨϙҠߦͱࠓޙ 57
  58. • ίʔυͷमਖ਼ ◦ git clone ͰϦϙδτϦͷऩू 4. ϞϊϨϙҠߦͱࠓޙ 58

  59. • ίʔυͷमਖ਼ ◦ git clone ͰϦϙδτϦͷऩू ◦ import จͷमਖ਼ ▪

    `github.com/organization/serviceA` → `github.com/organization/ XXXservice/serviceA` 4. ϞϊϨϙҠߦͱࠓޙ 59
  60. • ίʔυͷमਖ਼ ◦ git clone ͰϦϙδτϦͷऩू ◦ import จͷमਖ਼ ▪

    `github.com/organization/serviceA` → `github.com/organization/ XXXservice/serviceA` ◦ go.mod ͷ౷߹ ▪ ؆୯ʹίϐϖͰҰͭʹ·ͱΊΕ͹OK ▪ ϥΠϒϥϦͷόʔδϣϯͱ͔ἧ͍͑ͨͳΒదٓमਖ਼ 4. ϞϊϨϙҠߦͱࠓޙ 60
  61. • ࣗಈੜ੒πʔϧͷରԠ ◦ πʔϧࣗମ͸ͦͷ··ಈ͘΋ͷ͕ଟ͍ ▪ ࠓճͷզʑͷέʔεͰ͸ proto पΓ͸վम͕ඞཁ ◦ ύοέʔδΛԣஅ࣮ͯ͠ߦͰ͖Δ

    Makefile ΍εΫϦϓτΛ௥Ճ 4. ϞϊϨϙҠߦͱࠓޙ 61
  62. • ࣗಈੜ੒πʔϧͷରԠ ◦ πʔϧࣗମ͸ͦͷ··ಈ͘΋ͷ͕ଟ͍ ▪ ࠓճͷզʑͷέʔεͰ͸ proto पΓ͸վम͕ඞཁ ◦ ύοέʔδΛԣஅ࣮ͯ͠ߦͰ͖Δ

    Makefile ΍εΫϦϓτΛ௥Ճ 4. ϞϊϨϙҠߦͱࠓޙ 62
  63. • ࣗಈੜ੒πʔϧͷରԠ ◦ πʔϧࣗମ͸ͦͷ··ಈ͘΋ͷ͕ଟ͍ ▪ ࠓճͷզʑͷέʔεͰ͸ proto पΓ͸վम͕ඞཁ ◦ ύοέʔδΛԣஅ࣮ͯ͠ߦͰ͖Δ

    Makefile ΍εΫϦϓτΛ௥Ճ 4. ϞϊϨϙҠߦͱࠓޙ 63
  64. • CI ରԠ ◦ ҎԼΛຬͨ͢Α͏ʹमਖ਼ 4. ϞϊϨϙҠߦͱࠓޙ 64

  65. • CI ରԠ ◦ ҎԼΛຬͨ͢Α͏ʹमਖ਼ ▪ ෆཁͳϏϧυΛճ͞ͳ͍Α͏ʹ͍ͨ͠ ▪ मਖ਼ͨ͠ൣғʹґଘ͍ͯ͠Δͱ͜ΖͷϏϧυ͸ճ͍ͨ͠ ◦

    CI ʹΑͬͯ͸ɺpath filtering ͱ͍͏ػೳΛ࢖࣮ͬͯݱͰ͖Δ͜ͱ͕ଟ͍ 4. ϞϊϨϙҠߦͱࠓޙ 65
  66. • CI ରԠ ◦ Circle CI ͷྫ (GitHub Actions ʹ΋ྨࣅͷplugin͕͋Δ໛༷)

    4. ϞϊϨϙҠߦͱࠓޙ 66
  67. 4. ϞϊϨϙҠߦͱࠓޙ • Ҡߦʹؔͯ͠ؾ͍ͮͨ͜ͱ ◦ νʔϜ಺͔ͭಉҰݴޠͰ·ͱΊΔͷ͸ͦ͜·Ͱେม͡Όͳ͔ͬͨ ▪ νʔϜϝϯόʔͰগͣͭ͠ΩϟονΞοϓ͍ͯ͘͜͠ͱ͕Ͱ͖Δ 67

  68. 4. ϞϊϨϙҠߦͱࠓޙ • Ҡߦʹؔͯ͠ؾ͍ͮͨ͜ͱ ◦ νʔϜ಺͔ͭಉҰݴޠͰ·ͱΊΔͷ͸ͦ͜·Ͱେม͡Όͳ͔ͬͨ ▪ νʔϜϝϯόʔͰগͣͭ͠ΩϟονΞοϓ͍ͯ͘͜͠ͱ͕Ͱ͖Δ ◦ ίʔυੜ੒ܥΛ

    Bazel Ͱ΍͍ͬͯ͘ͷ͸େม ▪ mockgen ͸ࣗલͷ rule Λ࡞੒͕ͨ͠ɺͳΕΔ·Ͱ͔ͳΓݫ͍͠ 68
  69. 4. ϞϊϨϙҠߦͱࠓޙ • Ҡߦʹؔͯ͠ؾ͍ͮͨ͜ͱ ◦ νʔϜ಺͔ͭಉҰݴޠͰ·ͱΊΔͷ͸ͦ͜·Ͱେม͡Όͳ͔ͬͨ ▪ νʔϜϝϯόʔͰগͣͭ͠ΩϟονΞοϓ͍ͯ͘͜͠ͱ͕Ͱ͖Δ ◦ ίʔυੜ੒ܥΛ

    Bazel Ͱ΍͍ͬͯ͘ͷ͸େม ▪ mockgen ͸ࣗલͷ rule Λ࡞੒͕ͨ͠ɺͳΕΔ·Ͱ͔ͳΓݫ͍͠ ◦ ࣄલʹϥΠϒϥϦͷߋ৽Λ࣮ࢪ͓͔ͯ͠ͳ͍ͱେม ▪ 3ͭҎ্ͷόʔδϣϯ͕͔ͪ߹͏͜ͱ΋... 69
  70. • ࠓޙͷల๬ ◦ ࠓճ͸εϞʔϧελʔτͱͯ͠ɺνʔϜ಺ͷGo ϨϙδτϦ͚ͩͰ։࢝ ◦ ࠓޙ͸ɺଞͷϨϙδτϦΛগͣͭ͠௥Ճ༧ఆ ▪ ϝϦοτ͕͋Γͦ͏ͳΒଞνʔϜͷαʔϏε΋௥Ճ༧ఆ 4.

    ϞϊϨϙҠߦͱࠓޙ 70
  71. ·ͱΊ 71 71

  72. • ·ͱΊ ◦ Mono Module Monorepo ͱ Multi Module Monorepo

    ▪ ಠཱੑ͕ͲΕ͚ͩඞཁ͔Ͱબ୒͢Δ ◦ Go ϞϊϨϙ͸ϏϧυπʔϧΛؤுΓ͗ͣ࢝͢ΊΔͷ͕͓͢͢Ί ▪ Bazel Ͱ׬શʹ΍Ζ͏ͱ͢Δͱ௒େม ▪ → ඞཁʹԠͯ͡গͣͭ͠ೖΕ͍ͯ͘ ◦ ϞϊϨϙԽʹΑͬͯDX(։ൃମݧ)͕վળͰ͖ͨ ▪ 1νʔϜ಺ͷϚΠΫϩαʔϏεͳΒσϝϦοτগͳ͓͘͢͢Ί 5. ·ͱΊ 72