Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

ࣗݾ঺հ • Twi%er:)@k_yokomi)ʢ͖ΐ͜Έʣ※1 • GunosyͷAPIνʔϜͰGoΤϯδχΞ΍ ͬͯ·͢ • Cocos2d

Slide 3

Slide 3 text

໨࣍ • Gomaʢމຑʣʹ͍ͭͯ • ֓ཁʢ༻ҙɺग़ྗ෺ɺ࢖͍ํʣ • ಛ௃ʢଞͱͷҧ͍ͱ͔ʣ • ࣮૷ͷߏ੒ • σϞ • ࠓޙʹ͍ͭͯ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 3

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

gomaͷ࣮ߦ $"goma"gen)config"))path"config.json @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 9

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

$"go"generate @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 11

Slide 12

Slide 12 text

ग़ྗ෺ • 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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

໘ന͍ͷ͸ɺ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

Slide 22

Slide 22 text

※ͪͳΈʹੜ੒ͨ͠ίʔυʹ͸ɺ ઌ΄ͲͷϥΠϒϥϦ͸ؚ·Ε·ͤΜͷͰ ҆͝৺͍ͩ͘͞!!! @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 22

Slide 23

Slide 23 text

ࠓޙʹ͍ͭͯ • CircleCI্ͰςετͰ͖Δ؀ڥΛͭ͘Δʢcircle.yamlʣ • =>/mysql͸΍ͬͯΔޙ͸postgres͚ͩ • jsonҎ֎ͷઃఆϑΝΠϧʹରԠ͢Δ • ߴ଎Խʢࠓશવؾʹͯ͠ͳ͍ɻϕϯνϚʔΫ͢Βͯ͠ͳ͍ʣ • ۀ຿Ͱ࠾༻ͯ͠ࣄྫΛग़͢/ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 23

Slide 24

Slide 24 text

͓ΘΓ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 24