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

Go言語をほぼ毎日書いている話 (序) / Daily coding in Go

Go言語をほぼ毎日書いている話 (序) / Daily coding in Go

そうだ、Go京都。

Yuuki Tsubouchi (yuuk1)

April 29, 2017
Tweet

More Decks by Yuuki Tsubouchi (yuuk1)

Other Decks in Programming

Transcript

  1. GoݴޠΛ
    ΄΅ຖ೔ॻ͍͍ͯΔ࿩ (ং)
    ͸ͯͳ id:y_uuki

    View Slide

  2. id:y_uuki / @y_uuk1
    Yuuki Tsubouchi
    https://yuuk.io
    גࣜձࣾ͸ͯͳ
    WebΦϖϨʔγϣϯΤϯδχΞ / γχΞΤϯδχΞ

    View Slide

  3. Goྺ
    • 2013೥͙Β͍͔ΒWatch
    • 2014೥ʹ·ͱ΋ʹॻ͖࢝Ίͨ
    • ࠷ॳ͸Tour of Go
    • Go Kyotoͱ͍͏Jxck ͞ΜʹΑΔϋϯζΦϯʹࢀՃ
    • mkr / mackerel-client-go ͳͲΛॻ͍ͨ
    • 2015೥~2016લ൒ ͍͔ͭ͘ΦϖϨʔγϣϯπʔϧͭͬͨ͘
    • grabeni / droot / gokc ͳͲ

    View Slide

  4. http://developer.hatenastaff.com/entry/golang-for-ops

    View Slide

  5. View Slide

  6. ͳΜͰ
    ຖ೔ॻ͖࢝Ίͨͷ͔

    View Slide

  7. ͳΜͰຖ೔ॻ͖࢝Ίͨͷ͔
    • ΦϖϨʔγϣϯ͢ΔΑΓɺιϑτ΢ΣΞͱ͔จষΛॻ
    ͍ͯΔͱ͖ͷ΄͏͕࣮͸޷͖
    • ϒϩά΋͍͍͚Ͳ͍͔ͭ୅දతϓϩμΫτΛ࡞ͬͯΈ
    ͍ͨ
    • ͔͠͠ɺιϑτ΢ΣΞΛॻ͘εΩϧͱɺॻ্͖͛Δମ
    ྗ͕଍Γͳ͍ => ຖ೔ίʔυॻ͜͏

    View Slide

  8. Site
    Reliability
    Engineering
    HOW GOOGLE RUNS
    PRODUCTION
    SYSTEMS
    Photo by O’reilly Media / CC by 3.0
    http://shop.oreilly.com/product/0636920041528.do https://creativecommons.org/licenses/by/3.0/deed

    View Slide

  9. ͳʹΛ
    ຖ೔ॻ͍͍ͯΔͷ͔

    View Slide

  10. DiamonDB
    https://github.com/yuuki/diamondb

    View Slide

  11. write
    datapoints
    Kinesis Streams
    Lambda
    read
    datapoints
    ElastiCache
    DynamoDB
    Lambda
    TTL expired
    flush
    write
    Web App
    (Golang)
    S3
    read
    read
    read

    View Slide

  12. write
    datapoints
    Kinesis Streams
    Lambda
    read
    datapoints
    ElastiCache
    DynamoDB
    Lambda
    TTL expired
    flush
    write
    Web App
    (Golang)
    S3
    read
    read
    read
    AWSͷෳ਺ͷσʔλετΞΛ
    ૊Έ߹Θͤͨ
    Go ΢ΣϒΞϓϦέʔγϣϯ

    View Slide

  13. ͳʹΛຖ೔ॻ͍͍ͯΔͷ͔
    • DiamonDB
    • ͍͍ͩͨಉ͡ΞʔΩςΫνϟͷ΋ͷΛۀ຿Ͱ։ൃத
    • ίʔυϕʔε͸ۀ຿ͷ΋ͱ͸ผ
    • ͜Ε·Ͱͭͬͨ͘πʔϧͷϝϯςφϯε
    • ۀ຿Ͱ࢖͍ͬͯΔͷͰɺमਖ਼΍ػೳ௥Ճ
    • Pull RequestରԠ

    View Slide

  14. ຖ೔ॻͨ͘Ίʹ
    ΍Δ͜ͱ

    View Slide

  15. ຖ೔ॻͨ͘Ίʹ΍Δ͜ͱ
    • ʮຖ೔ʯࣗମʹ͸ҙຯ͸ͳ͘ɺܧଓతʹίʔυΛॻ͚Δ͔͕େࣄ
    • 1 commit / day Ͱ΋Α͍
    • Ͳ͏ͯ͠΋๩͚͠Ε͹ɺgit commit —date Ͱ೔෇͔͖͔͑
    • ͜ΕͰϞνϕʔγϣϯ͕ଓ͘ͳΒͦΕͰΑ͍
    • ฏ೔͸͋·Γॻ͚ͳ͍ͷͰɺ౔೔ͷ͏ͪʹΠγϡʔΛ༻ҙ
    • ۀ຿ͱ݁ͼ͚ͭΔ
    • ෳ਺ͷϓϩδΣΫτΛ΋ͭ

    View Slide

  16. ຖ೔ॻ͍͍ͯͯ
    Θ͔ͬͨ͜ͱ

    View Slide

  17. ຖ೔ॻ͍͍ͯͯΘ͔ͬͨ͜ͱ
    • ຖ೔ίʔυॻͨ͘ΊͷϦζϜ͕Ͱ͖Δ
    • ೴಺ϝϞϦʹͷͬͯΔͷͰɺ࣍ʹॻ͘ͱ͖ʹ೰·ͳ͍
    • ͍͖ͳΓେ͖͘มߋ͢ΔͷͰ͸ͳ͘ɺখ͞ͳมߋΛੵ
    ΈॏͶΔΑ͏ʹͳΔ
    • ౔೔ʹແཧ͠ͳ͘ͳΔ
    • ແཧΛ͢Δͱ݁ہଓ͔ͳ͍

    View Slide

  18. Go tips

    View Slide

  19. https://github.com/yuuki/yuuki/blob/master/golang/http-api-server-stack.md
    GoͰHTTP APIαʔόॻ͘ͱ͖ͷελοΫ
    GoͰHTTP APIαʔόॻ͘
    ͱ͖ͷελοΫ

    View Slide

  20. https://medium.com/@haya14busa/idiomatic-go-readability-f0b42ef381dc

    View Slide

  21. https://github.com/golang/go/wiki/CodeReviewComments

    View Slide

  22. ;ͩΜΈ͍ͯΔ Gophers
    • @deeeet
    • @mattn
    • @motemen
    • @Songmu
    • @haya14busa
    • @davecheney
    • @dgryski

    View Slide

  23. Πϯϓοτ
    ͱ
    Ξ΢τϓοτ

    View Slide

  24. ΠϯϓοτͱΞ΢τϓοτ
    • Πϯϓοτ: ຊΛಡΉɺϒϩάΛಡΉͳͲ
    • Ξ΢τϓοτ: ٕज़ஊٛɺൃදɺϒϩάɺίʔυͳͲ
    • ݺٵͷΑ͏ͳ΋ͷ
    • Πϯϓοτ͢ΔͱΞ΢τϓοτͨ͘͠ͳΔɻΞ΢τϓο
    τ͢Δͱ·ͨΠϯϓοτΛ΋ͱΊΔ
    • Ξ΢τϓοτ͸ҰݟແବʹΈ͑Δ͕ɺఆظతʹΞ΢τϓο
    τ͢Δ͜ͱͰΠϯϓοτ΋૿͍͑ͯ͘

    View Slide

  25. GoݴޠΛ
    ΄΅ຖ೔ॻ͍͍ͯΔ࿩ (ং)
    ͸ͯͳ id:y_uuki

    View Slide