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.6k
ビルドパイプラインツールを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.9k
Scalebase Analytics powered by Looker
ainoya
0
2.4k
SPIFFE in Action
ainoya
4
1.6k
How Developer Support Works
ainoya
10
2.6k
リクルートマーケティングパートナーズでのDeployGate活用事例
ainoya
2
4.5k
[RMPxQuipper meetup #3]開発のための開発~スマホアプリ向けe2eテストの検証導入事例を通じて~
ainoya
1
2.4k
How to play Scala on dockerized infrastructure
ainoya
4
3.1k
prevs.io開発の裏側とコンテナ仮想化時代のAPI運用
ainoya
4
2.5k
Other Decks in Programming
See All in Programming
r2-image-worker
yusukebe
1
170
퇴근 후 1억이 거래되는 서비스 만들기 | 내가 AI를 사용하는 방법
maryang
2
550
Introducing RemoteCompose: break your UI out of the app sandbox.
camaelon
2
540
Register is more than clipboard
satorunooshie
1
460
Claude Code on the Web を超える!? Codex Cloud の実践テク5選
sunagaku
0
490
Atomics APIを知る / Understanding Atomics API
ssssota
1
120
ネストしたdata classの面倒な更新にさようなら!Lensを作って理解するArrowのOpticsの世界
shiita0903
1
310
CSC509 Lecture 11
javiergs
PRO
0
300
レイトレZ世代に捧ぐ、今からレイトレを始めるための小径
ichi_raven
0
220
SUZURIの規約違反チェックにおけるクリエイタフィードバックの試⾏錯誤/Trial and Error in Creator Feedback for SUZURI's Terms of Service Violation Checks
ae14watanabe
1
140
自動テストのアーキテクチャとその理由ー大規模ゲーム開発の場合ー
segadevtech
2
960
ドメイン駆動設計のエッセンス
masuda220
PRO
15
7.7k
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
A Tale of Four Properties
chriscoyier
161
23k
Speed Design
sergeychernyshev
32
1.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
192
56k
We Have a Design System, Now What?
morganepeng
54
7.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
The Cost Of JavaScript in 2023
addyosmani
55
9.2k
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ͰͲ͏࣮͢Δ͔ߟ͑த