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
3.1k
Gomaについて
ORマッパーとは一味ちがう!
kyokomi
April 13, 2015
Tweet
Share
More Decks by kyokomi
See All by kyokomi
goaを導入した話
kyokomi
0
2.6k
さくっとGAE/GoでAPIを作って本番環境にリリースする / gaego-api-init-release
kyokomi
0
4k
Go言語で作られたAPIのレガシーコードと戦った話 / Go Conference 2015 winter
kyokomi
4
4k
Go製の拡張可能なSlack bot
kyokomi
3
8.4k
go generate tips
kyokomi
4
3.5k
私がGo言語を選んだ理由
kyokomi
3
410
Gunosy APIチームGo開発フロー
kyokomi
7
6.2k
Other Decks in Programming
See All in Programming
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
270
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
430
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
610
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
700
Basic Architectures
denyspoltorak
0
670
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
220
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
690
CSC307 Lecture 05
javiergs
PRO
0
500
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
180
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
650
Featured
See All Featured
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
730
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
910
Fireside Chat
paigeccino
41
3.8k
The untapped power of vector embeddings
frankvandijk
1
1.6k
Unsuck your backbone
ammeep
671
58k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
170
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
150
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
Odyssey Design
rkendrick25
PRO
1
500
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