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

スタートアップ立ち上げの 主力言語にgo言語を 採用してみた話

Shuji OCHI
February 24, 2018

スタートアップ立ち上げの 主力言語にgo言語を 採用してみた話

umeda.go#3での発表

Shuji OCHI

February 24, 2018
Tweet

More Decks by Shuji OCHI

Other Decks in Programming

Transcript

  1. ٕज़తෛ࠴ͷࢁ w ։ൃνʔϜϝϯόʔθϩ໰୊ w όʔδϣϯ؅ཧ͞Εͯͳ͍໰୊ w ϩʔΧϧ։ൃ؀ڥ͕ଘࡏ͠ͳ͍໰୊ w ౰࣌͸ຊ൪؀ڥ͕։ൃ؀ڥ w

    ຊ൪ͷ&$ͷίʔυΛͦͷ··मਖ਼ w ̍ͭͷ&$Πϯελϯεʹશ෦৐͍ͬͯΔ໰୊ w -".1͕̍ͭͷ&$Πϯελϯεʹશ෦ೖ͍ͬͯΔ w FUD RJJUBDPN ʮϨΨγʔ։ൃ؀ڥΛࠓ෩ͷ։ൃʹ͚ۙͮΔͨΊʹҰ೥΍͖ͬͯͨ͜ͱʯΑΓ
  2. 8FC։ൃͷఆ൪Ͳ͜Ζ w 1)1ɺ3VCZɺ+BWBͱ͔ w ΤϯδχΞ૚͕ް͍ w τϨʔυΦϑ w ਓ਺ଟ͗͢ w

    ັྗతͳڝ߹΋ଟ͍ʢ͸ͣʣ w ͭ·Γ4/ൺখ͍͞ w ˠ࠾༻ίετʢखؒͱ࣌ؒʣߴ͍ w ˠ͕࣌ؒͳ͍
  3. +BWB4DSJQU w ࡢ೥൒೥ 3FBDU3FEVY ΍ͬͯͨ w 3FBDU3FEVYͦͷ΋ͷ͸͍͍͕ɻɻ w ͍ΘΏΔ+BWB4DSJQUർΕʹͳͬͨ w

    ڝ૪͕ܹ͍͠ɺ໺৺తɾ݂ؾ੝ΜͳจԽ w จԽ͕ͪ͝Όͪ͝Ό w มԽ͕଎͍ͷͰɺ௕͘࢖ͬͯϦϓϨʔεͮ͠Β͍αʔόαΠ υʹ͸ਖ਼௚Ͳ͏͔
  4. ݁Ռ w Ԡื͸ͦΕ΄Ͳଟ͘͸ͳ͔ͬͨʢ૝ఆ௨Γʣ w ͔͠͠Ԡืऀ͸Ͳͷํ΋ϋΠεϖοΫʂ w &ࢯʢαʔό։ൃ୲౰ʣ w HPܦݧ೥ w

    5ࢯʢΫϥ΢υΠϯϑϥ୲౰ʣ w "84ͷΤΩεύʔτߴෛՙαΠτͷܦݧ w HPܦݧ͋Γ w ͱΘ͔ͣिؒऑͰແࣄܖ໿Ͱ͖·ͨ͠ʂ
  5. ܦҢ  Ԡื ΩοΫΦϑ  ̍ ̌  ̍ 

    ̎  ϝϯόʔืू ٕज़ௐࠪɾॳظ։ൃ ։ൃຊ֨Խ ݱࡏʹࢸΔ ։ۀ४උ  ࣄۀܭըมߋ ̍ ̎
  6. ߏ੒؅ཧʢ̎ʣ w औΓ૊Έத w GBDUPS"QQͷߟ͑ํ w ͬ͘͟Γ͍͏ͱɺɺ w ԿͰ΋ίʔυԽͯ͠؅ཧ w

    ԿͰ΋ࣗಈԽ w ؀ڥґଘ͢Δಈ࡞͸ઃఆʹΑͬͯ֎෦ʹ௥͍ग़͢ w ϩʔΧϧʹ΋ͷΛ࣋ͨͳ͍ w ֎෦αʔϏεʹग़དྷΔ͚ͩ೚ͤΔ
  7. ϥΠϒϥϦɾϑϨʔϜϫʔΫ w ϥΠϒϥϦɾϑϨʔϜϫʔΫ w HPB w WJQFS w EBUBCBTFTRM YPˡ/FX

    w 03ϚούʔͰ͸ͳ͘ w %#εΩʔϚɾ42-͔ΒHPͷΞΫηείʔυΛੜ੒
  8. HPBͷར఺ w શ෦ೖΓ w ίϯτϩʔϥʢͷTDB⒎PMEJOH  w σʔλఆٛ w Τϯίʔμɾσίʔμ

    w ϩΨʔ w ϧʔλ w ΫϥΠΞϯτίʔυ w %4-ͷϑΝΠϧ෼ׂ͕͠΍͍͢ w 4XBHHFS TXBHHFSDPEFHFOͩͱ ͸ංେ͕ͪ͠ w ΠϯΫϦϝϯλϧʹඞཁͳ෦෼ͷίʔυ͚ͩ࠶ੜ੒ͯ͘͠ΕΔ w ΫϥΠΞϯτίʔυ·Ͱు͍ͯ͘ΕΔͷͰɺ&&ͷςετ·ͰHPBͱHPݴޠͷதͰ׬݁ͤ͞΍͍͢
  9. HPB%4- package design import ( . "github.com/goadesign/goa/design" . "github.com/goadesign/goa/design/apidsl" )

    var _ = Resource("bottle", func() { BasePath("/bottles") DefaultMedia(BottleMedia) Action("show", func() { Description("Get bottle by id") Routing(GET("/:bottleID")) Params(func() { Param("bottleID", Integer, "Bottle ID") }) Response(OK) Response(NotFound) }) }) ʙதུʙ Ϧιʔε ΞΫγϣϯ
  10. HPB%4- package design import ( . "github.com/goadesign/goa/design" . "github.com/goadesign/goa/design/apidsl" )

    var _ = Resource("bottle", func() { BasePath("/bottles") DefaultMedia(BottleMedia) Action("show", func() { Description("Get bottle by id") Routing(GET("/:bottleID")) Params(func() { Param("bottleID", Integer, "Bottle ID") }) Response(OK) Response(NotFound) }) }) (&5IUUQIPHFFYBNQMFDPNBQJWCPUUMFT ʙதུʙ
  11. HPB%4- package design import ( . "github.com/goadesign/goa/design" . "github.com/goadesign/goa/design/apidsl" )

    var _ = Resource("bottle", func() { BasePath("/bottles") DefaultMedia(BottleMedia) Action("show", func() { Description("Get bottle by id") Routing(GET("/:bottleID")) Params(func() { Param("bottleID", Integer, "Bottle ID") }) Response(OK) Response(NotFound) }) }) (&5IUUQIPHFFYBNQMFDPNBQJWCPUUMFT ʙதུʙ