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
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
500
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
140
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
360
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
130
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
170
JETLS.jl ─ A New Language Server for Julia
abap34
2
480
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
220
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
160
AIエージェントの設計で注意するべきポイント6選
har1101
6
3.2k
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
940
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
5.5k
Grafana:建立系統全知視角的捷徑
blueswen
0
290
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
97
6.5k
My Coaching Mixtape
mlcsv
0
26
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Discover your Explorer Soul
emna__ayadi
2
1k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
51
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
120
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
230
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
69
Six Lessons from altMBA
skipperchong
29
4.1k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
0
1k
Code Reviewing Like a Champion
maltzj
527
40k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
290
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