Gomaについて

42a3fcdaaa492f3e1cf0fe7e6bbf4251?s=47 kyokomi
April 13, 2015

 Gomaについて

ORマッパーとは一味ちがう!

42a3fcdaaa492f3e1cf0fe7e6bbf4251?s=128

kyokomi

April 13, 2015
Tweet

Transcript

  1. ORϚούʔͱ͸Ұຯ͕ͪ͏ Gomaʢމຑʣʹ͍ͭͯ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 1

  2. ࣗݾ঺հ • Twi%er:)@k_yokomi)ʢ͖ΐ͜Έʣ※1 • GunosyͷAPIνʔϜͰGoΤϯδχΞ΍ ͬͯ·͢ • Cocos2d<xͰήʔϜ࡞ͬͨΓ΋ͯ͠·͢ • Gunosy.goͷओ࠵ͱ͔΍ͬͯ·͢

    • ΤλʔͳΒͳ͍։ൃΛ໨ࢦͯ͠·͢ ※1"ΞΠίϯ͸݄ඣͷᘡᘚ͞ΜͰ͢ɻ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 2
  3. ໨࣍ • Gomaʢމຑʣʹ͍ͭͯ • ֓ཁʢ༻ҙɺग़ྗ෺ɺ࢖͍ํʣ • ಛ௃ʢଞͱͷҧ͍ͱ͔ʣ • ࣮૷ͷߏ੒ •

    σϞ • ࠓޙʹ͍ͭͯ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 3
  4. Gomaʢމຑʣʹ͍ͭͯ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 4

  5. Gomaʢމຑʣͷ֓ཁ Gomaʢމຑʣͱ͸ɺJavaͷdomaʹΠϯεύΠΞ͞Εͯ࡞ΓॳΊ ͨDatabaseΞΫηεϑϨʔϜϫʔΫͰ͢ɻ ໊લ͸ͦͷ໊ͷ௨ΓdomaͷGo൛ͱ͍͏༝དྷͰމຑͱ͸Ұ੾ؔ܎ ͋Γ·ͤΜɻ DBͷςʔϒϧߏ଄ΛݩʹGoͷίʔυʢstruct΍جຊతͳCRUDૢ ࡞ʣͱsqlϑΝΠϧΛgenerate͠·͢ɻ h"ps:/ /github.com/kyokomi/goma @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ

    5
  6. Gomaʢމຑʣʹඞཁͳ΋ͷ • ίʔυੜ੒ݩͱͳΔDBςʔϒϧ • DB΁ͷ઀ଓ৘ใ • config.json$or$ίϚϯυҾ਺Մ • gomaͷΠϯετʔϧ •

    go get gopkg.in/kyokomi/ goma.v1/gen/goma • ※ৄࡉ͸GitHubͷREADME.md΁ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 6
  7. @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 7

  8. config.json config.jsonΛ༻ҙ͠·͢ɻTOMLͱ͔yamlͱ͔ͷαϙʔτ΋શવՄ ೳͰ͢ɻ PullReqeust͓଴ͪͯ͠·͢ɻ { "driver": "mysql", "user": "admin", "password":

    "password", "host": "localhost", "port": 3306, "db": "test" } @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 8
  9. gomaͷ࣮ߦ $"goma"gen)config"))path"config.json @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 9

  10. go#generateͰ΋OK package main import ( "fmt" ) //go:generate goma gen-config

    --path config.json func main() { fmt.Println("Hello goma!") } @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 10
  11. $"go"generate @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 11

  12. ग़ྗ෺ • dao:"select,update,insert,delete࣮૷ • en'ty:"structͷίʔυ,Scan()΋࣮૷ • sql:"dao͔Βݺͼग़͢sqlϑΝΠϧ • config.json:"࣮ߦ݁ՌͰ্ॻ͖͠·͢ ※جຊతʹ্هͷग़ྗ෺͸ฤू͠ͳ͍ํ

    ਑Ͱ͢ʢ্ॻ͖͞Ε·͢ʣ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 12
  13. ࢖͍ํ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 13

  14. @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 14

  15. Gomaʢމຑʣͷಛ௃1 • sqlϑΝΠϧΛͦͷ··࢖͑Δɾฤूɾ࣮ߦͰ͖Δ • sqlΛΘ͔Δਓ͕௚ײతʹϝιουΛݺͼग़ͤΔ • JOINจ΍GROUPBY۟ͳͲΛ࢖ͬͨΧελϜsql΋௥ՃՄೳ • ۪௚ʹίʔυΛgenerateͯ͠ΔͨΊɺΑ͋͘ΔORϚούʔͷຐ ๏Έ͍ͨͳίʔυ͸ແ҆͘৺͢Δ

    @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 15
  16. Gomaʢމຑʣͷಛ௃2 • ςʔϒϧఆٛͷมߋ͕ଟͯ͘΋࠶౓generate͢Ε͹OK • ERਤ΋͘͠͸DBΛਖ਼ͱ͢ΔϓϩδΣΫτ޲͖ • En.tyϕʔεͰ΍ΓͱΓ͢Δ෼ʹ͸ɺrows.Scan(&a,9&b)Έ͍ͨͳ ͷΛॻ͔ͳ͍͍ͯ͘ • sql.DBͱsql.TxΛҾ਺ʹ౉࣮ͯ͠ߦ͢ΔͨΊɺԶʑ*goma.DB͡

    Όͳͯ҆͘৺͢Δ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 16
  17. Ͱ΋build࣌sqlϑΝΠϧͲ͏͢Δʁ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 17

  18. go#bindataʹରԠͯ͠ΔͷͰ҆৺ ͜Μͳײ͡ʹ࣮ߦ͢Δͱ͍͍ײ͡Ͱ͢ɻ $ go-bindata -o dao/asset_gen.go -pkg dao sql/... ※2

    ※2"go%bindata:"ࢦఆσΟϨΫτϦ΍ϑΝΠϧΛόΠφϦσʔλͱͯ࣋ͭ͠GoͷίʔυΛgenerate͢ΔϥΠϒϥϦ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 18
  19. asset_gen.go @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 19

  20. Gomaʢމຑʣͷ࣮૷ߏ੒ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 20

  21. ໘ന͍ͷ͸ɺORϚούʔ࢖ͬͯΔͱ͜Ζ • codegangsta/cli:/͜Εແ͠Ͱcliπʔϧॻ͘ͷਏ͍※3 • go1xorm/xorm:/DB͔ΒTableߏ੒৘ใΛऔಘ/※4 • benbjohnson/ego:/erb෩ʹॻ͚ΔtemplateΤϯδϯʢඪ४ػೳ ͰɺόΠφϦʹຒΊࠐΊΔʣ※5 ※5"h$ps:/ /github.com/benbjohnson/ego

    ※4"h$ps:/ /github.com/go2xorm/xorm ※3"h$ps:/ /github.com/codegangsta/cli @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 21
  22. ※ͪͳΈʹੜ੒ͨ͠ίʔυʹ͸ɺ ઌ΄ͲͷϥΠϒϥϦ͸ؚ·Ε·ͤΜͷͰ ҆͝৺͍ͩ͘͞!!! @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 22

  23. ࠓޙʹ͍ͭͯ • CircleCI্ͰςετͰ͖Δ؀ڥΛͭ͘Δʢcircle.yamlʣ • =>/mysql͸΍ͬͯΔޙ͸postgres͚ͩ • jsonҎ֎ͷઃఆϑΝΠϧʹରԠ͢Δ • ߴ଎Խʢࠓશવؾʹͯ͠ͳ͍ɻϕϯνϚʔΫ͢Βͯ͠ͳ͍ʣ •

    ۀ຿Ͱ࠾༻ͯ͠ࣄྫΛग़͢/ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 23
  24. ͓ΘΓ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 24