$30 off During Our Annual Pro Sale. View Details »

202111Gocon_kaminashi_kimura

kimura
November 30, 2021
2k

 202111Gocon_kaminashi_kimura

kimura

November 30, 2021
Tweet

Transcript

  1. ϊϯσεΫϫʔΧʔ޲͚
    ϊʔίʔυαʔϏεͷͭΒΈɾ͏·Έ
    גࣜձࣾΧϛφγ


    ΞϓϦέʔγϣϯΤϯδχΞ


    ɹɹɹ ɹɹɹɹ໦ଜ Ұ੒

    View Slide

  2. 1. ΧϛφγͷαʔϏε঺հ


    a. ੡଄ݱ৔ͷݱঢ়


    b. ੡଄ݱ৔Λม͑ΔͨΊͷΧϛφγͷΞϓϩʔν


    2. ͏·Έ


    a. ΧϛφγGoྺ


    b. ײͨ͡͏·Έ&֤ΤϯδχΞGoྺ

    3. ։ൃʹ౰ͨͬͯͷͭΒΈ
    ຊ೔ͷΞδΣϯμ

    View Slide

  3. 1. ΧϛφγͷαʔϏε঺հ

    View Slide

  4. ઃඋɾਗ਼૟ ཱྀ٬ɾӡ༌
    ݐઃ ෱ࢱࢪઃ
    ੡଄ۀ εʔύʔɾখച ઀٬ۀ
    ҿ৯ళ
    ݱ৔Ͱಇ͘3,100ສਓ͕ɺࢴத৺Ͱඇޮ཰ͳΦϖϨʔγϣϯʹ೔ʑ௥ΘΕ͍ͯ·͢ɻ


    ϓϥΠϕʔτͰ͸εϚʔτϑΥϯΛ࢖͍ͬͯΔͷʹɺ৬৔Ͱ͸ͳ͔ͥࢴͱϖϯɺσδΧϝΛ࢖͏ඞཁ͕͋Δͷ͕ݱঢ়Ͱ͢ɻ
    ೔ຊͷबۀਓޱͷ໿൒਺͕PC΍IT͕࢖͑ͳ͍؀ڥͰಇ͍͍ͯ·͢
    Χϛφγ͕ղܾ͍ͨ͜͠ͱ
    ೔ຊʹ͓͚Δ࿑ಇਓޱͷׂ߹
    9
    σεΫ


    ϫʔΧʔ
    ϊϯσεΫ


    ϫʔΧʔ
    ˋ ˋ
    52 48
    ※ ಠཱߦ੓๏ਓ࿑ಇ੓ࡦݚڀɾݚमػߏʮ৬ۀผबۀऀ਺ʯΑΓ౰ࣾࢉग़

    View Slide

  5. ه࿥ ֬ೝ ूܭɾՄࢹԽ ޱ಄Ͱࢦಋ
    ͢΂ͯਓྗʹΑΔۀ຿ΦϖϨʔγϣϯ

    View Slide

  6. ݁Ռͱͯ͠ϛε͕ଟൃ

    View Slide

  7. ̋×νΣοΫද
    ࢴͷνΣοΫϦετʢϫʔΫϑϩʔʣ
    ΧϛφγͰσδλϧԽ
    ϊʔίʔυͰݱ৔؅ཧΞϓϦΛ࡞Δ͜ͱ͕Ͱ͖Δ
    ɹۀ຿ϑϩʔΛσδλϧԽ͢Δ

    View Slide

  8. ৚݅෼ذ
    ܁Γฦ͠
    LOOP
    IF-ELSE
    ଟ༷ͳσʔλܕ
    TYPE
    ɹϊʔίʔυ͚ͩͲɺᙱ͍ॴʹख͕ಧ͘

    View Slide

  9. LOOP IF-ELSE TYPE
    ܁Γฦ̍͠
    ܁Γฦ̎͠
    ܁Γฦ̏͠
    ਌ϊʔυ
    ճ౴
    YESͷ৔߹
    Noͷ৔߹
    ໦ߏ଄Ͱදݱ
    ɹ಺෦ͷσʔλ͸໦ߏ଄Ͱఆ͍ٛͯ͠Δ

    View Slide

  10. 2. ΧϛφγͷGoྺͱ͏·Έ

    View Slide

  11. - 2017೥ͷϓϩμΫτ։ൃ։͔࢝Β4೥໨


    - Goαʔόબఆཧ༝


    - ඪ४tool܈ͷ๛෋͞


    - ౓ॏͳΔมߋʹڧ͍


    - ܧঝ͕ଘࡏ͠ͳ͍


    - Composition over inheritance (ܧঝΑΓ߹੒)


    - Πϯϑϥ΁ͷॊೈੑ


    - ΫϩείϯύΠϧ


    - ίϯςφԽͱͷ૬ੑ


    - ౰࣌Go࠾༻ࣄྫ͕গͳ͍
    ɹΧϛφγͷGoྺͱ͏·Έ1

    View Slide

  12. - ੩తܕ෇͚͕Ͱ͖Δ


    - 200௒ͷଟ֊૚ͷςʔϒϧ


    - IDEͷࣗಈิ׬
    ɹΧϛφγͷGoྺͱ͏·Έ1
    table
    ᶃ֊૚ߏ଄ʢ਌ࢠؔ܎ʣΛදݱ͢ΔͨΊͷςʔϒϧ


    ᶄσʔλͷܕ͝ͱʹςʔϒϧ


    ɹʢྫ͑͹ɺ਺஋ܕͱ೔෇ܕ͸ςʔϒϧఆ͕ٛҟͳΔʣ


    ɹɹetc...

    View Slide

  13. ɹ։ൃʹ͓͚Δ͏·Έ2
    (੩తܕ෇͚ݴޠͷதͰ΋) ະܦݧͷΤϯδχΞ͕शಘ͠΍͍͢


    - ৽نೖࣾऀ্ཱ͕͙͕ͪ͢Δ


    - ౰ࣾ಺ͰͷGoܦݧऀׂ߹= 3/7
    Go
    JavaScr
    ipt
    TypeScr
    ipt
    Python Elixir Ruby Java PHP C# C C++ VB
    Engineer A ○ ○ ○ ○
    B ○ ○ ○
    C ○ ○ ○
    D
    ○ ○ ○
    E
    ○ ○ ○ ○ ○ ○
    F
    ○ ○ ○
    G
    ○ ○ ○ ○ ○
    ฐࣾͷೖࣾલͷΤϯδχΞ࢖༻ݴޠ

    View Slide

  14. 3.։ൃʹ౰ͨͬͯͷͭΒΈ

    View Slide

  15. ɹͭΒΈ1
    ίʔυߦ਺ͷ૿Ճ܏޲
    - ϦϨʔγϣϯͷଟ͞


    - Preload Λଟ༻

    View Slide

  16. ɹͭΒΈ1
    ίʔυߦ਺ͷ૿Ճ܏޲
    - ϦϨʔγϣϯͷଟ͞


    - genericsͷ༗ແ -> switchจʹཔΒ͟ΔΛಘͳ͍


    - ໦ߏ଄ͷσʔλ-> forloopͷଟ༻
    - ؔ࿈ςʔϒϧͷ૿Ճ


    - ਌ࢠnodesͷϦϨʔγϣϯ

    View Slide

  17. ɹͭΒΈ2
    RDBͰͷੑೳ௿Լ
    - ؔ࿈ςʔϒϧͷ૿ՃʹΑΓɺapplication ⁶ RDBؒͷ௨৴ճ਺ͷ૿Ճ


    - application ⁶ RDBؒͷ௨৴଎౓͕ϘϧτωοΫʹ
    gtx.


    Preload("Rel-A").


    Preload("Rel-B").


    Preload("Rel-C").


    Find(s.ctx, &mainTable).Error;
    ORMΛ࢖ͬͨίʔυ
    select ~~~
    select ~~~
    select ~~~
    ࣮ΫΤϦ
    - ORMଆͰͷେྔͷΫΤϦൃߦ

    - ࠶ىॲཧ಺ͰͷDBΞΫηεॲཧΛॻ
    ͍ͯ͠·͍ɺେྔͷΫΤϦൃߦ

    View Slide

  18. ɹͭΒΈ2
    RDBͰͷੑೳ௿Լ΁ͷରԠ
    Application ଆ


    - ΫΤϦൃߦॲཧͱ࠶ىॲཧΛ෼཭


    - ORM࢖༻ -> (ςʔϒϧ݁߹Λߦ͏Α͏ͳ) ੜΫΤϦʹมߋ


    → DB ΫΤϦൃߦճ਺Λ཈͑Δ͜ͱ͕Ͱ͖ͨ


    DB ଆ


    - ςʔϒϧ݁߹Ͱ࢖༻͞ΕΔ֎෦Ωʔʹର͢Δindexͷ௥Ճ


    → ΫΤϦ୯ମͷੑೳͷվળ

    View Slide

  19. ɹͭΒΈ3
    ςετσʔλͷ༻ҙ
    ଟ֊૚ͷςʔϒϧɾϦϨʔγϣϯঢ়گԼͰͷςετσʔλ४උ


    - ౰ॳJsonͰ۪௚ʹॻ͍ͯ͠·͕ͬͨͨΊʹɺAddReport ςετ΁ͷ1 test data ͚ͩͰ3000ߦ΄Ͳʹ

    View Slide

  20. View Slide

  21. ɹͭΒΈ3
    ςετσʔλͷ༻ҙ
    ଟ֊૚ͷςʔϒϧɾϦϨʔγϣϯঢ়گԼͰͷςετσʔλ४උ


    - ౰ॳJsonͰ۪௚ʹॻ͍ͯ͠·͕ͬͨͨΊʹɺAddReport ςετ΁ͷ1 test data ͚ͩͰ3000ߦ΄Ͳʹ

    View Slide

  22. ɹͭΒΈ3
    ςετσʔλ४උ΁ͷରԠ
    Json -> ֎෦module (factory-go) ʹͯɺ֤
    objectΛੜ੒͢ΔΑ͏ʹͨ͠

    View Slide

  23. ɾϊʔίʔυͰ࡞੒Ͱ͖Δݱ৔؅ཧΞϓϦʹΑΓɺݱ৔ͷDXΛՃ଎ͤ͞Α͏
    ͱ͍ͯ͠Δ


    ɾ੩తܕ෇͚ͷಛੑɺෑډͷ௿͞ͷ఺ͰGoͷԸܙΛड͚͍ͯΔ


    ɾҰํͰɺଟ֊૚ͳσʔλߏ଄Ώ͑ͷίʔυ૿Ճ܏޲ɺࠓޙ૿͍͑ͯ͘Ͱ͋Ζ
    ͏RDB΁ͷΞΫηεɺςετσʔλ౳΁ͷରԠ͕՝୊ײͱͯ͋͠Δ
    ɹ·ͱΊ

    View Slide

  24. View Slide

  25. ΦϑΟεʹ͜΋ͬͯɺ૝૾͚ͩͰҙࢥܾఆ͢Δɻ


    టष͍͜ͱ͔Βڑ཭Λஔ͖ɺखΛൈ͘ɻ


    ސ٬ͱ࿩͞ͳ͍ɻݱ৔ͷ੠Λฉ͜͏ͱ͠ͳ͍ɻ


    Ϣʔβʔࢹ఺Ͱ͸ͳ͘ɺࣗࣾ౎߹Λ༏ઌ͢Δɻ
    Don'ts
    ݱ৔ʹϖΠϯΛମײ͠ʹߦ͘ϝϯόʔ
    Ϣʔβʔͷ੠Λ௚઀ฉͨ͘Ίɺ෦ॺ໰Θͣݱ৔΁
    ݱ৔υϦϒϯͳΤϐιʔυ

    View Slide

  26. View Slide

  27. ఆྫϛʔςΟϯάɾࣄۀઓུϛʔςΟϯά
    શࣾɾνʔϜͰͷΦϑαΠτϛʔςΟϯά
    ৘ใͷಁ໌ੑɺຊԻΛͿ͚ͭ߹͏Φʔϓϯίϛϡχέʔγϣϯ
    શ։ΦʔϓϯͳΤϐιʔυ
    ࣗ෼ͷྑ͍ͱ͜Ζ΍ɺද໘తͳ࿩͔͠ڞ༗͠ͳ͍ɻ


    ϓϥΠυ͕ߴ͘ɺΞυόΠεΛ߈ܸͩͱड͚औΔɻ


    ٞ࿦ʹͳΔͱػݏ͕ѱ͘ͳΔɻ


    ౎߹ͷ͍͍ӕΛͭ͘ɻ


    ࿦ཧ΍ɺ਺஋ͷΈͰҙࢥܾఆ͠ɺҙݟΛฉ͔ͳ͍ɻ


    ஥ྑ͜͠Α͠ͰɺͿ͔ͭΔ͜ͱΛڪΕΔɻ


    ຊਓ͕͍ͳ͍৔ॴͰݴ͏ɻ
    Don'ts
    શࣾһͰࣗࣾͷΧϧνϟʔʹ͍ͭͯҙݟΛग़͠߹͏ ΤϯδχΞνʔϜͷϛʔςΟϯάͷ༷ࢠ
    ਓੜνϟʔτൃද

    View Slide

  28. View Slide

  29. ා͕ͬͯνϟϨϯδ͠ͳ͍ɻ


    ࣦഊͯ͠΋Կ΋ֶ͹ͳ͍ɻ


    ࣦഊΛڐ༰͢ΔจԽΛצҧ͍͍ͯ͠Δɻ


    ͙͢΁ͨ͜ΕΔɻมʹߟ͑͗͢Δɻ


    ϓϥΠυ͕ߴ͍ɻ


    ࢹ࠲ɾࢹ఺͕௿͍ɻߴΈΛ໨ࢦ͞ͳ͍ɻ
    Don'ts
    Χϛφγͷ࢓ࣄͷελΠϧɻߟ͑ൈ͍ͨΒɺ·ͣ͸΍ͬͯΈΔɻ
    β൛ϚΠϯυͳΤϐιʔυ
    ࠾༻΢ΟογϡϦετ
    νʔϜͷ࢓૊Έͮ͘Γ
    ࢓૊Έͮ͘Γ΍੍౓
    γϦʔζAࢿۚௐୡ
    ։ൃϓϩδΣΫτ
    3

    View Slide

  30. EM/ΞϓϦΤϯδχΞ/SRE ੵۃ࠾༻த

    View Slide