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

ずっとRubyをやっていたエンジニアがGoに入門して挫折して再挑戦した話

 ずっとRubyをやっていたエンジニアがGoに入門して挫折して再挑戦した話

Kenta Suzuki

June 05, 2017
Tweet

More Decks by Kenta Suzuki

Other Decks in Programming

Transcript

  1. ͣͬͱRubyΛ΍͍ͬͯͨ
    ΤϯδχΞ͕Goʹೖ໳͠
    ͯ࠳ંͯ͠࠶௅ઓͨ͠࿩
    2017/6/5
    GoݴޠLTେձʂ ʮ࠷ۙɺGoݴޠ࢝Ί·ͨ͠ʯͷձ
    @suzan2go

    View Slide

  2. ࣗݾ঺հ
    • גࣜձࣾΫϥ΢υϫʔΫε
    • ླ໦݈ଠ (Twitter / GitHub @suzan2go)
    • ࢓ࣄͰ͸Ruby / JavaScriptΛॻ͍͍ͯΔΞϓϦ
    έʔγϣϯΤϯδχΞ
    • 4݄͔ΒझຯͰGoݴޠΛͪΌΜͱ৮Γ࢝Ί·ͨ͠

    View Slide

  3. View Slide

  4. ॻ͍ͯ·ͤΜ
    ผਓͰ͢

    View Slide

  5. ࠓ೔ͷ࿩
    RubyΛ΍͍ͬͯͨ
    ΤϯδχΞ͕GoΛ࢝Ίͯ
    Կʹ࠳ંͯ͠
    Ͳ͏࠶௅ઓͯ͠͏·͍ͬͨ͘
    ͔

    View Slide

  6. Goݴޠͱͷग़ձ͍

    View Slide

  7. Goݴޠͱͷग़ձ͍(2016೥4݄)

    View Slide

  8. Goݴޠͱͷग़ձ͍
    • ಉ྅͕ͪΐͬͱ৮͍ͬͯͨͷͰ໊લ͘Β͍͸஌ͬ
    ͍ͯͨ
    • GAE / Goͷ૊Έ߹Θͤੌ͍ʂʂ
    • ͪΐ͏Ͳ৽نࣄۀͷ্ཱͪ͛ʹؔΘ͍ͬͯͯͲΜ
    ͳߏ੒Ͱ࡞Δͷ͔ߟ͍͑ͯͨ
    • ͜Ε͔Β͸Go͕དྷͦ͏ͩʂʂͳΜ͔࡞ͬͯΈΑʂ

    View Slide

  9. ࠳ંɾɾɾ

    View Slide

  10. ഊҼ
    • GoݴޠͰRubyͷΑ͏ͳΦϒδΣΫτࢦ޲Λ
    ΍Ζ͏ͱͯ͠͠·ͬͨ
    • GoݴޠͰRubyͷΑ͏ʹָʹॻ͘ํ๏͕ͳ͍
    ͔୳͠ٻΊͯ͠·ͬͨ

    View Slide

  11. GoݴޠͰRubyͷΑ͏ͳΦϒδΣ
    Ϋτࢦ޲Λ΍Ζ͏ͱͯ͠͠·ͬͨ
    Ҿ༻ : GoͷΞϯνύλʔϯ
    http://golang.rdy.jp/2016/07/26/antiptn/

    View Slide

  12. GoݴޠͰRubyͷΑ͏ʹָʹॻ͘
    ํ๏͕ͳ͍͔୳͠ٻΊͯ͠·ͬͨ
    • Go͸ےྗ͕…ͱ͍͏΍ͭʁ
    • λΠϓ਺ΛݮΒ͢Α͏ͳ͜ͱΛؤுΖ͏ͱ͢Δͱେମ͸
    ·ͬͨ
    • ౰࣌͸ɺʮ͜Εઈର΋ͬͱָͳॻ͖ํ͋ΔͩΖʔ͆ʯͱԿ
    ͔ॻ͘౓ʹ୳͠ճͬͯ͠·ͬͨ…
    • ݁ՌɺGoͩͱ͜͏ॻ͔͘͠ͳ͍ɺΈ͍ͨͳͱ͜Ζʹམͪ
    ண͍ͯɺ·ͬͨ͘ΞϓϦέʔγϣϯͷ։ൃਐ·ͳ͔ͬͨ

    View Slide

  13. ͦͯ͠Ұ೥͘Βཱ͍ͬͨ
    ࠓ೥ͷ4݄
    ཧ༝͸๨Ε͚ͨͲ
    Goݴޠ࠶௅ઓ

    View Slide

  14. GitHubͰGoݴޠͷΞϓϦέʔ
    γϣϯΛ৭ʑݟͯΈΔ
    https://github.com/shohhei1126/bbs-go

    View Slide

  15. Goݴޠͷઃܭʹ͍ͭͯͷهࣄΛ
    ৭ʑಡΜͰΈΔ
    http://www.alexedwards.net/blog/organising-database-access

    View Slide

  16. Goݴޠͷઃܭʹ͍ͭͯͷهࣄΛ
    ৭ʑಡΜͰΈΔ
    http://deeeet.com/writing/2016/10/25/go-interface-testing/

    View Slide

  17. GoʹैͬͯݟΔͱ
    ָ͘͠ͳͬͯ͘Δ

    View Slide

  18. ͜Μͳͱ͜Ζָ͕͍͠Ͱ͢Go
    • golintͰॻ͖ํΛڧ੍͞ΕΔͷͰ໎Θͳͯ͘ྑ͍(vs Ruby)
    • ܕ͕͋Δͷʹ(ΤσΟλͷαϙʔτ͕͋Δͷ͕͜Μͳʹ࠷ߴͱ͸)ɺ͔ͭίϯύΠϧ͕
    ૣ͍
    • σϑΝΫτͳWAFͱ͔͕·ͩͳ͍෼ɺ৭ʑࣗ෼Ͱߟ͑ͳͯ͘͸͍͚ͳ͍ͷָ͕͍͠
    (DBΞΫηεͲ͏͢ΔɺͲ͏͍͏ߏ଄ମ࡞Δ etc)
    • GoDocੌ͍ɻখ͍͞ϓϩδΣΫτͰ΋GoDocʹ৘ใ͕͋Δࣄ͕ଟ͍(golintͰίϝ
    ϯτͳ͍ͱౖΒΕΔ͔Βʁ)
    • ۪௚ʹॻ͘͜ͱ͕ٻΊΒΕΔ(ؾ͕͢Δ)ͷͰɺ΍Γ͍ͨ͜ͱʹϑΥʔΧεͨ͠ίʔυ
    ʹͳΔ(ݸਓͷײ૝Ͱ͢)

    View Slide

  19. ͜ΜͳΜ࡞ͬͯ·͢(झຯ)ᶃ
    • Ոఉ಺೔هΞϓϦͷόοΫΤϯυAPI(·ͩࣗ෼ͷՈఉ಺ݶఆ
    ެ։)

    ࢖͍ͬͯΔύοέʔδ͸labstack/echoɺjinzhu/gormͳͲ

    View Slide

  20. ͜ΜͳΜ࡞ͬͯ·͢(࢓ࣄ)ᶄ
    • GitHubͷ͓૟আ͢Δ΍ͭ(ࠓͷͱ͜ΖReleasesΛফ͚ͩ͢…)

    ࢖༻ύοέʔδ spf13/cobraɺgoogle/go-github ͳͲͳͲ


    View Slide

  21. ·ͱΊ
    • GoʹೖΕ͹Goʹै͑
    • ʮΦϒδΣΫτࢦ޲ݴޠʯͱ͸৭ʑҧ͏ͱ͜Ζ΋ଟ͍͜ͱΛೝΊΑ͏
    • ָΛ͢Δ(୹͘ॻ͚Δ)Α͏ͳॻ͖ํΛؤு͕ͬͯ͢͞ΑΓɺ۪௚ʹॻ
    ͍͍ͯ͘΄͏͕݁Ռతʹ͸Α͍ίʔυʹͳΔؾ͕͢Δ(ݸਓͷײ૝Ͱ
    ͢)
    • ઌਓͷॻ͍ͨίʔυɾ஌ݟΛ୔ࢁࢀߟʹ͠Α͏
    • GoʹैͬͯΈΔͱGoॻ͘ͷָ͘͠ͳͬͯ͘Δʂ

    View Slide

  22. ࠓޙͷల๬
    •΋ͬͱ࢓ࣄͰ΋
    Goݴޠ࢖ͬͯ

    ͍͖͍ͨ

    View Slide