Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Gomaについて
Search
kyokomi
April 13, 2015
Programming
4
3k
Gomaについて
ORマッパーとは一味ちがう!
kyokomi
April 13, 2015
Tweet
Share
More Decks by kyokomi
See All by kyokomi
goaを導入した話
kyokomi
0
2.5k
さくっとGAE/GoでAPIを作って本番環境にリリースする / gaego-api-init-release
kyokomi
0
3.8k
Go言語で作られたAPIのレガシーコードと戦った話 / Go Conference 2015 winter
kyokomi
4
3.9k
Go製の拡張可能なSlack bot
kyokomi
3
8.2k
go generate tips
kyokomi
4
3.3k
私がGo言語を選んだ理由
kyokomi
3
380
Gunosy APIチームGo開発フロー
kyokomi
7
6k
Other Decks in Programming
See All in Programming
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
210
レガシーシステムにどう立ち向かうか 複雑さと理想と現実/vs-legacy
suzukihoge
14
2.2k
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.4k
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
230
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
100
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
イベント駆動で成長して委員会
happymana
1
320
Jakarta EE meets AI
ivargrimstad
0
620
みんなでプロポーザルを書いてみた
yuriko1211
0
260
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
330
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
色々なIaCツールを実際に触って比較してみる
iriikeita
0
330
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1030
460k
Become a Pro
speakerdeck
PRO
25
5k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Site-Speed That Sticks
csswizardry
0
24
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
The World Runs on Bad Software
bkeepers
PRO
65
11k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Unsuck your backbone
ammeep
668
57k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Done Done
chrislema
181
16k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
Transcript
ORϚούʔͱҰຯ͕ͪ͏ Gomaʢމຑʣʹ͍ͭͯ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 1
ࣗݾհ • Twi%er:)@k_yokomi)ʢ͖ΐ͜Έʣ※1 • GunosyͷAPIνʔϜͰGoΤϯδχΞ ͬͯ·͢ • Cocos2d<xͰήʔϜ࡞ͬͨΓͯ͠·͢ • Gunosy.goͷओ࠵ͱ͔ͬͯ·͢
• ΤλʔͳΒͳ͍։ൃΛࢦͯ͠·͢ ※1"ΞΠίϯ݄ඣͷᘡᘚ͞ΜͰ͢ɻ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 2
࣍ • Gomaʢމຑʣʹ͍ͭͯ • ֓ཁʢ༻ҙɺग़ྗɺ͍ํʣ • ಛʢଞͱͷҧ͍ͱ͔ʣ • ࣮ͷߏ •
σϞ • ࠓޙʹ͍ͭͯ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 3
Gomaʢމຑʣʹ͍ͭͯ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 4
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
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
@k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 7
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
gomaͷ࣮ߦ $"goma"gen)config"))path"config.json @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 9
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
$"go"generate @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 11
ग़ྗ • 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
͍ํ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 13
@k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 14
Gomaʢމຑʣͷಛ1 • sqlϑΝΠϧΛͦͷ··͑Δɾฤूɾ࣮ߦͰ͖Δ • sqlΛΘ͔Δਓ͕ײతʹϝιουΛݺͼग़ͤΔ • JOINจGROUPBY۟ͳͲΛͬͨΧελϜsqlՃՄೳ • ۪ʹίʔυΛgenerateͯ͠ΔͨΊɺΑ͋͘ΔORϚούʔͷຐ ๏Έ͍ͨͳίʔυແ҆͘৺͢Δ
@k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 15
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
Ͱbuild࣌sqlϑΝΠϧͲ͏͢Δʁ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 17
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
asset_gen.go @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 19
Gomaʢމຑʣͷ࣮ߏ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 20
໘ന͍ͷɺ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
※ͪͳΈʹੜͨ͠ίʔυʹɺ ઌ΄ͲͷϥΠϒϥϦؚ·Ε·ͤΜͷͰ ҆͝৺͍ͩ͘͞!!! @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 22
ࠓޙʹ͍ͭͯ • CircleCI্ͰςετͰ͖ΔڥΛͭ͘Δʢcircle.yamlʣ • =>/mysqlͬͯΔޙpostgres͚ͩ • jsonҎ֎ͷઃఆϑΝΠϧʹରԠ͢Δ • ߴԽʢࠓશવؾʹͯ͠ͳ͍ɻϕϯνϚʔΫ͢Βͯ͠ͳ͍ʣ •
ۀͰ࠾༻ͯ͠ࣄྫΛग़͢/ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 23
͓ΘΓ @k_yokomi,)2015/04/13)ʮGunosy.go#12)GolangNotH=pNightʯ 24