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
ビルドパイプラインツールをGoで作った話
Search
Naoki Ainoya
November 30, 2014
Programming
3
2.5k
ビルドパイプラインツールをGoで作った話
A build pipeline tool written in go
Naoki Ainoya
November 30, 2014
Tweet
Share
More Decks by Naoki Ainoya
See All by Naoki Ainoya
Looker BEACON 2021 / How we implemented Scalebase Analytics with Looker
ainoya
0
2.8k
Salesforce Application Development with GitHub Actions and sfdx-cli
ainoya
1
3.8k
Scalebase Analytics powered by Looker
ainoya
0
2.3k
SPIFFE in Action
ainoya
4
1.5k
How Developer Support Works
ainoya
10
2.6k
リクルートマーケティングパートナーズでのDeployGate活用事例
ainoya
2
4.4k
[RMPxQuipper meetup #3]開発のための開発~スマホアプリ向けe2eテストの検証導入事例を通じて~
ainoya
1
2.3k
How to play Scala on dockerized infrastructure
ainoya
4
3k
prevs.io開発の裏側とコンテナ仮想化時代のAPI運用
ainoya
4
2.4k
Other Decks in Programming
See All in Programming
Do Dumb Things
mitsuhiko
0
430
これだけは知っておきたいクラス設計の基礎知識 version 2
masuda220
PRO
24
6.4k
Chrome Extension Techniques from Hell
moznion
1
160
Compose Hot Reload is here, stop re-launching your apps! (Android Makers 2025)
zsmb
1
500
The Evolution of the CRuby Build System
kateinoigakukun
0
700
MCP調べてみました! / Exploring MCP
uhzz
2
2.3k
Kamal 2 – Get Out of the Cloud
aleksandrov
1
190
The Implementations of Advanced LR Parser Algorithm
junk0612
1
290
AIコードエディタの基盤となるLLMのFlutter性能評価
alquist4121
0
210
複雑なフォームの jotai 設計 / Designing jotai(state) for Complex Forms #layerx_frontend
izumin5210
3
840
Strategic Design (DDD)for the Frontend @DDD Meetup Stuttgart
manfredsteyer
PRO
0
140
「影響が少ない」を自分の目でみてみる
o0h
PRO
2
1.1k
Featured
See All Featured
A designer walks into a library…
pauljervisheath
205
24k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Fireside Chat
paigeccino
37
3.4k
Thoughts on Productivity
jonyablonski
69
4.6k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
119
51k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
13
1.4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
The Language of Interfaces
destraynor
157
24k
Building an army of robots
kneath
304
45k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Agile that works and the tools we love
rasmusluckow
328
21k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Transcript
ϏϧυύΠϓϥΠϯπʔϧΛ GoͰ࡞ͬͨ GoCon 2014 Autumn @naokiainoya https://github.com/tenntenn/gopher-stickers/blob/master/png/28.png
ࣗݾհ ૬୩ थ ainoya ~2013.09 mixi ~ݱࡏ ϦΫϧʔτςΫϊϩδʔζ APιϦϡʔγϣϯG ओͳࣄ:
ɹ ৽ٕज़ͷಋೖݕূͳͲ
IUUQBUMSFDSVJUUFDIDPKQCMPH IUUQBJOPZBJPXBMUFS “ϏϧυύΠϓϥΠϯπʔϧ”
πʔϧͷػೳ • CIͰͷϏϧυύΠϓϥΠϯͷ࣮ߦ੍ޚΛ͢Δπʔϧ • Jenkinsʹ͋ΔϏϧυύΠϓ ϥΠϯϓϥάΠϯͷସ • ઃఆϑΝΠϧ(YAMLܗࣜ)ʹ δϣϒ(࣮ߦ୯Ґ)ͷॲཧ༰ͱ δϣϒͷ࣮ߦॱংΛهड़
πʔϧͷػೳ • CIܥαʔϏεͬΆ͍ઃఆϑΝΠϧʹ࣮ߦ༰ͱॱংΛهड़
πʔϧͷػೳ • CIܥαʔϏεͬΆ͍ઃఆϑΝΠϧʹ࣮ߦ༰ͱॱংΛهड़
πʔϧͷػೳ • CIܥαʔϏεͬΆ͍ઃఆϑΝΠϧʹ࣮ߦ༰ͱॱংΛهड़
πʔϧͷػೳ • CIܥαʔϏεͬΆ͍ઃఆϑΝΠϧʹ࣮ߦ༰ͱॱংΛهड़
πʔϧͷػೳ • CIܥαʔϏεͬΆ͍ઃఆϑΝΠϧʹ࣮ߦ༰ͱॱংΛهड़
GoͰॻ͍ͨཧ༝ HPSPVUJOFͰδϣϒ࣮ߦ DIBOOFMͰ࣮ߦ݁ՌΛ࣍ ʹ͑Δ DIBOOFM͔Βϝοηʔδ ड৴ͨ͠Β࣮ߦ channel/goroutineͰ͍͍ײ͡Ͱॻ͚ͦ͏
GoͰॻ͍ͨཧ༝ • όΠφϦ୯ମͰՄೳ • werckerͰΫϩείϯύΠϧˠ GitHub ReleasesͷΞοϓϩʔυ·Ͱ ϫϯΫϦοΫͰ • motemen/ghqΛࢀߟʹ
IUUQTHJUIVCDPNXBMUFSDEXBMUFSCMPCNBTUFSXFSDLFSZNM
ͦͷଞtips ϓϩδΣΫτߏ • coreos/etcdΛࢀߟʹͨ͠ • {$project-root}/${package-name}/ҎԼʹ .goϑΝΠϧΛஔ͍ͯ͘͠ϧʔϧͰ • Ϣχοτςετຊମͱಉ͡σΟϨΫτϦஔ •
build/testshell scriptͰ https://github.com/walter-cd/walter
ͦͷଞtips ύοέʔδཧ • ࠷ॳsubmoduleͰཧ • ґଘ͕૿͑ͯอकͮ͠Β͘ͳͬͨ • ࠓGodepΛར༻ • /Godeps/Godeps.jsonʹґଘؔهड़
https://github.com/tools/godep
ͦͷଞtips ϩάग़ྗ • ༻్ʹ߹͏ϩάग़ྗϥΠϒϥϦ͕ͳ͔ͬͨ • ଞͷϓϩδΣΫτݢฒΈࣗલͰ༻ҙ • golang/glogΛforkͯ͠ϩάϑΥʔϚοτ Λม͑ͯར༻
GoͰॻ͍ͨॴײ
“golang way” • "Is Go an object-oriented language?" ɹɹɹɹɹɹɹɹɹɹɹ--
"yes and no" • No type hierarchy • Interfaces can be very lightweight https://golang.org/doc/faq#Is_Go_an_object-oriented_language
“golang way” • "Share memory by communicating, don't communicate by
sharing memory.” • channelͰॻ͍ͯΈΔ • ॻ͖ͮΒͦ͏ͩͬͨΒSync.Mutex IUUQTDPEFHPPHMFDPNQHPXJLJXJLJ.VUFY0S$IBOOFM IUUQTPOJBDPEFTXPSEQSFTTDPNDIBOOFMTWTTZODQBDLBHF
࠷ޙʹ • walterͱ͍͏ϏϧυύΠϓϥΠϯπʔϧΛGoͰॻ͍ͨ • όΠφϦָ͕ • goroutine/channelͰδϣϒؒͷϝοηʔδύογϯάΛ͍͍ײ͡ʹ • ·ͩશવͰ͖ͯͳ͍ɽҾ͖ଓ͖ػೳڧԽΛߦ͍͖ͬͯ·͢ •
ΤϥʔϋϯυϦϯάڧԽetc.. • YAMLܗࣜͷઃఆϑΝΠϧΛΊ͍ͨ DSLΛGoͰͲ͏࣮͢Δ͔ߟ͑த