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

弊社でのGoの取り組み〜どう広げたか、その後の人員戦略〜

bikunbikun
February 16, 2023

 弊社でのGoの取り組み〜どう広げたか、その後の人員戦略〜

これだけは伝えたい!Goのすごさとその将来性

https://increments.connpass.com/event/250648/

bikunbikun

February 16, 2023
Tweet

More Decks by bikunbikun

Other Decks in Technology

Transcript

  1. ฐࣾͰͷGOͷऔΓ૊Έ
    ~Ͳ͏޿͔͛ͨɺͦͷޙͷਓһઓུ~

    View Slide

  2. ࣗݾ঺հ
    ➤ Qiitaɿ@bikun_bikun


    ➤ Twitterɿ@bikun_bikun


    ➤ ࢯ໊ɿੴ઒ େ༞


    ➤ ॴଐɿσΟοϓגࣜձࣾʢ2018೥5݄JOINʣ


    ➤ Goྺɿ

    ɹɹݱ৬ʹೖ͔ͬͯΒ৮Γ࢝ΊΔɻ

    ɹɹΨοπϦΰϦΰϦ΍͍ͬͯΔΘ͚Ͱ͸ͳ͍͕ɺGoͰ࡞ΒΕͨ
    ϓϩμΫτͷνʔϜϏϧυ΍ϦʔυΛߦ͍ͬͯΔɻ
    2

    View Slide

  3. ΞδΣϯμ
    ➤ ฐࣾͷGoͷ޿͕Γ


    ➤ ਓһઓུ


    ➤ Goͷັྗ

    View Slide

  4. ฐࣾͷGOͷ޿͕Γ
    ➤ ࢝·Γ͸2018೥ͷgolang.tokyo#14ͷεϥΠυ


    ➤ ͦͷޙɻɻɻ

    View Slide

  5. ฐࣾͷGOͷ޿͕Γʢ౰࣌ͷৼΓฦΓʣ
    ➤ ՝୊.1 ΈΜͳॳ৺ऀ

    ΈΜͳॳ৺ऀͳͷͰҰาͣͭ΍͍ͬͯ͜͏


    ➤ ՝୊.2 “ਖ਼͍͠”ॻ͖ํ͕Θ͔Βͳ͍

    ΈΜͳͰίʔυϨϏϡʔͯ͠ϨϕϧײΛ߹͍ͤͯ͘ɺςετΛॻ͍ͯΑΓྑ͍ํ๏͕ݟ͔ͭͬͨΒϦϑΝΫλ


    ➤ ՝୊.3 “ϦϦʔεͯ͠ऴΘΓ”͡Όͳ͍

    ੍໿͕͋ΔதɺCI/CDΛ૊ΜͰղܾ


    ➤ ՝୊.4 ϦϦʔε࣌ʹόΠφϦ࠶ىಈ͕ඞཁ

    ΦϯϓϨ؀ڥͩͬͨͨΊɺ1୆ͣͭLB outͯ͠ରԠ
    ౰࣌͸౰࣌ͰͦΕͧΕͷղܾࡦΛݟग़ͯ͠ղܾ͍ͯͨ͠ɻ

    View Slide

  6. ฐࣾͷGOͷ޿͕Γ
    ๭εϚʔτϑΥϯΞϓϦͷೝূػೳαʔϏεΛ


    GoͰ࣮૷
    ৽نϓϩμΫτͷίΞ෦෼ʹGoΛ࠾༻


    ※͍ͭʹίΞγεςϜͰGo͕࠾༻ 🎉
    2018೥Լ०
    αϒγεςϜपΓͰGoΛར༻͢Δಈ͖͕׆ൃԽ
    2019೥
    2021೥

    View Slide

  7. ฐࣾͷGOͷ޿͕Γʢ౰࣌ͷ՝୊͸Ͳ͏ͳͬͨʁʣ
    ➤ ՝୊.1 ΈΜͳॳ৺ऀ


    ➤ ΈΜͳॳ৺ऀ͸͠ΐ͏͕ͳ͍ɺOSSͷίʔυΛಡΜͰΈͨΓษڧձʹࢀՃͨ͠Γ
    Ͱ஌ݟ͕ཷ·͖ͬͯͨɻ


    ➤ ͝ԑ͕͋ΓɺGoʹ໌Δ͍ํ͕ࢀը͍͚ͯͨͩ͠ɺ͔ͦ͜ΒߋʹνʔϜʹφϨοδ
    ͕ཷ·ͬͨɻ


    ➤ ࣗ෼ͨͪͰͭ·͖ͮͦ͏ͳ෦෼Λൈ͖ग़ͨ͠νϡʔτϦΞϧΛ࡞Γ৽نJOINऀʹ
    ղ͍ͯ΋Β͏Α͏ͳମ੍ʹ͠ɺιϑτϥϯσΟϯά͠΍ͨ͘͢͠ɻ

    View Slide

  8. ฐࣾͷGOͷ޿͕Γʢ౰࣌ͷ՝୊͸Ͳ͏ͳͬͨʁʣ
    ➤ ՝୊.2 “ਖ਼͍͠”ॻ͖ํ͕Θ͔Βͳ͍


    ➤ OSSͷίʔυΛಡΜͩΓͯ͠ϒϥογϡΞοϓ


    ➤ ߦ͖ண͍ͨઌ͸ʮਖ਼௚ਖ਼ղ͸ͳ͍Μ͡Όͳ͍͔ʁʯͱ͍͏͜ͱɻ

    Ͱ͋Ε͹ɺྑ͍ͱ͜ΖΛऔΓೖΕͳ͕Βࣗ෼ͨͪͷελΠϧΛ࡞͍ͬͯ͜͏


    ➤ ͱ͸͍͑1͔Β͸ਏ͍ɺσΟϨΫτϦߏ੒ͳͲ͸

    ʮgolang-standards/project-layoutʯʹدͤΔͳͲͰରԠɻ

    View Slide

  9. ฐࣾͷGOͷ޿͕Γʢ౰࣌ͷ՝୊͸Ͳ͏ͳͬͨʁʣ
    ➤ ՝୊.3 “ϦϦʔεͯ͠ऴΘΓ”͡Όͳ͍


    ➤ 2019೥ࠒ͔Βӡ༻͕Ͱ͖ΔνʔϜΛϏϧυ͍ͯ͘͠ϑΣʔζʹೖ͖ͬͯͨɻ


    ➤ CI/CDʹ͍ͭͯ΋ΦϯϓϨத৺͔ΒPublicCloudʢAWSʣத৺ʹͳ͖ͬͯͨͨΊ
    Jenkins΍drone.io͔ΒCodeBuild, CodePipeline, CodeDeployͳͲͰࣗಈԽՃ଎


    ➤ ՝୊.4 ϦϦʔε࣌ʹόΠφϦ࠶ىಈ͕ඞཁ


    ➤ ίϯςφϕʔεͷ࢓૊ΈΛར༻͢Δ͜ͱͰ՝୊ͱͯ͠͸ͳ͘ͳ͖ͬͯͨɻ

    View Slide

  10. ฐࣾͷGOͷ޿͕ΓΛৼΓฦͬͯ
    ➤ όον΍APIαʔό౳ɺൺֱతೖΕ΍͍͢αϒγεςϜͳͲʹϑΥʔΧεͯ͠ಋೖ͠
    ͨ͜ͱ͕͡Θ͡Θͱ޿͕͍ͬͯͬͨͱײ͡·͢ɻ


    ➤ PublicCloudʢAWSʣ΁ͷҠߦͰΑΓGoͱͷ਌࿨ੑ͕૿͖ͯͨ͠ɻ


    ➤ Goͷܕͷߗ͕͞ฐࣾͷγεςϜͷٲʹͳͬͨ͜ͱ΋ɾɾɾ


    ➤ ϑΝδʔͳσʔλ͕͍͔͕ͭ͋ͬͨ͘ൃݟ͕஗ΕɺϦϦʔεલʹͯΜ΍ΘΜ΍


    ➤ Json parserͷࣗ࡞ͳͲͰରԠɻ


    ➤ ࠓޙ΋Goͷར༻͸૿͍͑ͯ͘ͱࢥ͍·͢ɻ

    View Slide

  11. ΞδΣϯμ
    ➤ ฐࣾͷGoͷ޿͕Γ


    ➤ ਓһઓུ


    ➤ Goͷັྗ

    View Slide

  12. ฐࣾͷਓһઓུ
    ➤ Goͷ࠾༻͕޿͕Δʹ࿈Εɺطଘͷϝϯόʔ͚ͩͰ͸৽ن։ൃͱӡ༻Ͱख͕ճΒͳ͘
    ͳ͖ͬͯͨɻ


    ➤ ਓ͕଍ΒͣͲ͏ͨ͠΋ͷ͔ɾɾɾͱ͍͏ঢ়گ

    View Slide

  13. ฐࣾͷਓһઓུ
    Ҋ1. ࣾ಺ͷଞͷνʔϜ͔Β࣋ͬͯ͘Δ
    ➤ ଞͷνʔϜ͸ଞͷνʔϜͰ΍Δ͜ͱ͕ͨ͘͞Μ͋Γɺݱ࣮తͰ͸ͳ͍

    View Slide

  14. ฐࣾͷਓһઓུ
    Ҋ1. ࣾ಺ͷଞͷνʔϜ͔Β࣋ͬͯ͘Δ
    ➤ ଞͷνʔϜ͸ଞͷνʔϜͰ΍Δ͜ͱ͕ͨ͘͞Μ͋Γɺݱ࣮తͰ͸ͳ͍
    ٫Լ

    View Slide

  15. ฐࣾͷਓһઓུ
    Ҋ1. ࣾ಺ͷଞͷνʔϜ͔Β࣋ͬͯ͘Δ
    ➤ ଞͷνʔϜ͸ଞͷνʔϜͰ΍Δ͜ͱ͕ͨ͘͞Μ͋Γɺݱ࣮తͰ͸ͳ͍
    Ҋ2. ৽نͰਓΛ૿΍͢
    ➤ ਖ਼߈๏


    ➤ ͜ΕͰؤு͍ͬͯ͘ํ޲ʹ͍͕ͨ͠΋͏গ͠ૣ͘Ͳ͏ʹ͔͍ͨ͠ɻ
    ٫Լ

    View Slide

  16. ฐࣾͷਓһઓུ
    Ҋ1. ࣾ಺ͷଞͷνʔϜ͔Β࣋ͬͯ͘Δ
    ➤ ଞͷνʔϜ͸ଞͷνʔϜͰ΍Δ͜ͱ͕ͨ͘͞Μ͋Γɺݱ࣮తͰ͸ͳ͍
    Ҋ2. ৽نͰਓΛ૿΍͢
    ➤ ਖ਼߈๏


    ➤ ͜ΕͰؤு͍ͬͯ͘ํ޲ʹ͍͕ͨ͠΋͏গ͠ૣ͘Ͳ͏ʹ͔͍ͨ͠ɻ
    ٫Լ
    ࠾༻ʂʂ

    View Slide

  17. ฐࣾͷਓһઓུ
    Ҋ1. ࣾ಺ͷଞͷνʔϜ͔Β࣋ͬͯ͘Δ
    ➤ ଞͷνʔϜ͸ଞͷνʔϜͰ΍Δ͜ͱ͕ͨ͘͞Μ͋Γɺݱ࣮తͰ͸ͳ͍
    Ҋ2. ৽نͰਓΛ૿΍͢
    ➤ ਖ਼߈๏


    ➤ ͜ΕͰؤு͍ͬͯ͘ํ޲ʹ͍͕ͨ͠΋͏গ͠ૣ͘Ͳ͏ʹ͔͍ͨ͠ɻ
    ٫Լ
    ࠾༻ʂʂ
    Ҋ3. ύʔτφʔ͞ΜʹཔΔ
    ➤ ͱ͸͍͑Go͕Ͱ͖Δਓࣗମ͕গͳ͍ɻ


    ➤ ҰॹʹGo΍Γ͍ͨΑʂֶͼ͍ͨΑʂͱ͍͏ํʹདྷ͍͖ͯͨͩɺҰॹʹߴ·Δɻ

    View Slide

  18. ฐࣾͷਓһઓུ
    Ҋ1. ࣾ಺ͷଞͷνʔϜ͔Β࣋ͬͯ͘Δ
    ➤ ଞͷνʔϜ͸ଞͷνʔϜͰ΍Δ͜ͱ͕ͨ͘͞Μ͋Γɺݱ࣮తͰ͸ͳ͍
    Ҋ2. ৽نͰਓΛ૿΍͢
    ➤ ਖ਼߈๏


    ➤ ͜ΕͰؤு͍ͬͯ͘ํ޲ʹ͍͕ͨ͠΋͏গ͠ૣ͘Ͳ͏ʹ͔͍ͨ͠ɻ
    ٫Լ
    ࠾༻ʂʂ
    Ҋ3. ύʔτφʔ͞ΜʹཔΔ
    ➤ ͱ͸͍͑Go͕Ͱ͖Δਓࣗମ͕গͳ͍ɻ


    ➤ ҰॹʹGo΍Γ͍ͨΑʂֶͼ͍ͨΑʂͱ͍͏ํʹདྷ͍͖ͯͨͩɺҰॹʹߴ·Δɻ
    ࠾༻ʂʂ

    View Slide

  19. ฐࣾͷਓһઓུ
    ݁Ռ
    ➤ ࠾༻ΛڧԽͭͭ͠ύʔτφʔ͞ΜͰ΍͍͖͍ͬͯͨਓʹJOINͯ͠΋Βͬͨɻ


    ➤ ύʔτφʔ͞ΜͱҰॹʹνϡʔτϦΞϧΛ࡞ͬͨΓɺ

    ৽͍͜͠ͱʹऔΓ૊ΈͭͭࣾһͷJOIN΋૿͖͑ͯͨɻ


    ➤ νϡʔτϦΞϧ࡞Γ౳ͰʮΈΜͳͰߴ·Δʯҙ͕ࣝ૿͑ɺྑ͍αΠΫϧʹͳͬͨɻ


    ➤ ΈΜͳॳ৺ऀͳ͕Βɺ஌ݟΛͨΊɺΈΜͳͰߴ·ΔνʔϜ͕ॏཁ

    View Slide

  20. ΞδΣϯμ
    ➤ ฐࣾͷGoͷ޿͕Γ


    ➤ ਓһઓུ


    ➤ Goͷັྗ

    View Slide

  21. GOͷັྗ
    ඪ४Ͱ༻ҙ͞Ε͍ͯΔπʔϧ܈
    ➤ Formatterɺςετɺύοέʔδ؅ཧͳͲ༷ʑͳ΋ͷ͕ඪ४Ͱ༻ҙ͞Ε͍ͯΔ


    ➤ gofmt, goimports͸ಛʹόϥόϥʹͳΓ͕ͪͳ΋ͷΛ౷Ұͯ͘͠ΕΔɻ
    γϯϓϧͳݴޠͰ͋Δʢnot Easyʣ
    ➤ ৮Γ࢝ΊͰ΋ཧղ͠΍͘͢ॻ͖΍͍͢ɻ


    ➤ throw-catch͕ͳ͍ͷͰجຊ্͔ΒಡΜͰ͍͚Δɻ


    ➤ ྫ֎Ͱδϟϯϓ͢ΔͷͰ͸ͳ͘౎౓ΤϥʔॲཧΛߦ͏ɻ

    View Slide

  22. GOͷັྗ
    ฒߦॲཧͷॻ͖΍͢͞
    ➤ ෳࡶͳ͜ͱΛ͠Α͏ͱ͢Δͱ৭ʑߟ͑Δ͜ͱ͸ग़ͯ͘Δ͕ɺγϯϓϧͳฒߦॲཧͷॻ͖
    ΍͕͋͢͞Δͱࢥ͍·͢ɻ


    ➤ ్தͰ͚ͩ͜͜ฒߦॲཧʹ௚ͦ͏Έ͍ͨͳ͜ͱ͕͠΍͍͢ɻ
    ϫϯόΠφϦ
    ➤ ϙʔλϒϧੑ͕ൈ܈ɻ


    ➤ Ϗϧυͷ͓͔͛ͰࣄલʹΘ͔Δόά͕༗Δɻ

    View Slide

  23. GOͷັྗʢݴޠҎ֎ʣ
    GoϢʔβͷѪ৘ਂ͞
    ➤ Tour of GoΛ࢝ΊɺνϡʔτϦΞϧͷ೔ຊޠࢿྉͷॆ࣮


    ➤ Gopherಓ৔ͷօ༷ɺࢿྉެ։͋Γ͕ͱ͏͍͟͝·͢ɻ

    View Slide

  24. ࠷ޙʹ
    GoʹؔΘΔօ༷΁ײँͱɺ͜Ε͔ΒͷGoͷൃలΛظ଴͠·͢ɻ

    View Slide

  25. ࠷ޙʹʢ͓·͚ʣ
    ฐࣾʢσΟοϓגࣜձࣾʣͰ͸ϝϯόʔΛืूதͰ͢ɻ


    - Go΍ͬͯΈ͍ͨʢߴ·Γ͍ͨʣ


    - ϓϩμΫτ։ൃ͍ͨ͠


    ͓଴͍ͪͯ͠·͢ɻ
    https://dippeople.dip-net.jp/engineer-recruit/

    View Slide