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.7k
Scalebase Analytics powered by Looker
ainoya
0
2.2k
SPIFFE in Action
ainoya
4
1.5k
How Developer Support Works
ainoya
10
2.5k
リクルートマーケティングパートナーズでの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
Unity Android XR入門
sakutama_11
0
160
Immutable ActiveRecord
megane42
0
140
苦しいTiDBへの移行を乗り越えて快適な運用を目指す
leveragestech
0
580
Domain-Driven Transformation
hschwentner
2
1.9k
2024年のWebフロントエンドのふりかえりと2025年
sakito
2
250
定理証明プラットフォーム lapisla.net
abap34
1
1.8k
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
2
560
バックエンドのためのアプリ内課金入門 (サブスク編)
qnighy
8
1.8k
さいきょうのレイヤードアーキテクチャについて考えてみた
yahiru
3
750
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
710
SpringBoot3.4の構造化ログ #kanjava
irof
2
990
iOSエンジニアから始める visionOS アプリ開発
nao_randd
3
130
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
960
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
410
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Gamification - CAS2011
davidbonilla
80
5.1k
Faster Mobile Websites
deanohume
306
31k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
550
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
330
Git: the NoSQL Database
bkeepers
PRO
427
64k
Into the Great Unknown - MozCon
thekraken
35
1.6k
KATA
mclloyd
29
14k
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ͰͲ͏࣮͢Δ͔ߟ͑த