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
Golangの紹介(基礎)
Search
Yusuke AONO
October 28, 2014
Programming
0
170
Golangの紹介(基礎)
Yusuke AONO
October 28, 2014
Tweet
Share
More Decks by Yusuke AONO
See All by Yusuke AONO
Webアプリのテスト(Atrae社内勉強会)
ysk1031
1
100
Twilioの簡単な説明
ysk1031
1
66
Other Decks in Programming
See All in Programming
Honoをフロントエンドで使う 3つのやり方
yusukebe
7
3.2k
『品質』という言葉が嫌いな理由
korimu
0
160
Java Webフレームワークの現状 / java web framework at burikaigi
kishida
9
2.2k
Ruby on cygwin 2025-02
fd0
0
140
苦しいTiDBへの移行を乗り越えて快適な運用を目指す
leveragestech
0
510
Djangoアプリケーション 運用のリアル 〜問題発生から可視化、最適化への道〜 #pyconshizu
kashewnuts
1
240
“あなた” の開発を支援する AI エージェント Bedrock Engineer / introducing-bedrock-engineer
gawa
11
1.9k
『GO』アプリ データ基盤のログ収集システムコスト削減
mot_techtalk
0
120
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
2
550
社内フレームワークとその依存性解決 / in-house framework and its dependency management
vvakame
1
560
Conform を推す - Advocating for Conform
mizoguchicoji
3
690
XStateを用いた堅牢なReact Components設計~複雑なClient Stateをシンプルに~ @React Tokyo ミートアップ #2
kfurusho
1
890
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
94
13k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
410
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Navigating Team Friction
lara
183
15k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Done Done
chrislema
182
16k
Practical Orchestrator
shlominoach
186
10k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Statistics for Hackers
jakevdp
797
220k
Designing for Performance
lara
604
68k
Transcript
Goݴޠೖͷೖ 2014/10/28 Atraeࣾษڧձ
Goݴޠͱ • 2009ʹൃද͞ΕͨΦʔϓϯιʔεͷݴޠ • Google͕։ൃ • CݴޠɺUTF-8ɺmemcachedͷ։ൃऀΒ͕ઃ ܭʹࢀՃ • ݱࡏόʔδϣϯ1.3.3
ಛ • ੩తͳܕ͖ݴޠ • γϯϓϧʢͳߏจʣ • ʮྫ֎ʯ͕ແ͔ͬͨΓ͢Δ • ίϯύΠϧɺ࣮ߦ͕͍ •
҆શੑ͕ߴ͍ • ྫɿະ༻ͷมύοέʔδ͕͋ΔͱɺίϯύΠϧ௨Βͳ͍ • ฒྻॲཧָ͕ʹॻ͚Δ
࠾༻ࣄྫ • ίϚϯυϥΠϯπʔϧϛυϧΣΞʹΘΕΔ͜ͱଟ͠ɻ ·ͩRailsతͳఆ൪ແ͍ײ͕ͩ͡ɺWAF͋Δ • peco • hub • Docker
• Packer • mackerel
Πϯετʔϧ • MacͳΒɺhomebrew͏͕ΑΖ͠ • GOPATHͱ͍͏ڥมͷઃఆ͕ඞཁͰ͢ • ੨ϗʔϜσΟϨΫτϦΛઃఆͯ͠Δ • ڥߏஙΊΜͲ͍ਓɺGolangͷαΠτͰͱΓ͋͑ ͣಈ͔͢ͷ͕Φεεϝ
• http://play.golang.org/p/-URiXol0GB
ϋϩʔϫʔϧυ
ϓϩάϥϜͷ࣮ߦ • ຊདྷίϯύΠϧΛͯ͠͏ݴޠ • ͕ɺgo run ίϚϯυͰɺίϯύΠϧ͠ͳͯ͘ ࣮ߦՄೳ • ίϯύΠϧɺgo
build ίϚϯυͰ • ίϯύΠϧͰੜ͞ΕΔͷɺ࣮ߦܗࣜͷόΠ φϦϑΝΠϧ
ϑΥʔϚοτ • ͭ͡ίʔσΟϯάن͕͔ͳΓݫ͍͠ • Πϯσϯτɺϋʔυλϒ͡Όͳ͖Όμϝ • ֯εϖʔεΛೖΕΔ/ೖΕͳ͍ॴ etc. • ࣗ༝͕͍ɺ౷Ұੑ͕ੜ·ΕΔ
• go fmt ίϚϯυͰࣗಈܗՄೳ • ࣗಈͰߏจνΣοΫͯ͘͠ΕΔϓϥάΠϯ͕ɺ͍͍ͩͨͷΤ σΟλʹ͋Δʢඞਢͩͱࢥ͏ʣ
جຊจ๏ • εϥΠυʹ͢ΔͷΊΜͲ͍ ϒϩάʹॻ͍ͨ • http://yusuke-aono.hatenablog.com/entry/ 20141026/1414313149
Goroutine • Goݴޠͷେ͖ͳಛͷҰͭɺಉظʢฒߦॲ ཧʣϓϩάϥϛϯάΛ؆୯ʹ࣮ݱ͢Δػೳ • ಡΈํΰϧʔνϯ • ͍ΘΏΔεϨουతͳͷ • main()
ؔ1ͭͷΰϧʔνϯͷதͰ࣮ߦ͞Ε ͍ͯͨ
Not Goroutine
Goroutine (ʆŋωŋ´)ʎ
Channel • ෳͷΰϧʔνϯؒͰσʔλΛΓͱΓ͢Δ ʹʁ • ͦͷࡍʹ͏ͷ͕ɺνϟωϧ • ΈࠐΈͷ make() ؔΛར༻
Channelͷར༻
νϟωϧɺͲ͏͑Δ͔ • ྫ͑ɺಉ࣌ʹෳͷαʔόʔʹϦΫΤε τΛग़ͯ͠େྔͷ໋ྩͱେྔͷσʔλΛฒྻ ॲཧ͢ΔϓϩάϥϜɺͱ͔ʁ • GoͷϛυϧΣΞ͕ଟ͍ͷɺGoroutine ͱChannelͷଘࡏ͕͋Δ͔ΒͩͱࢥΘΕΔ
GoͷWAF • Revel • Martini • Goji • net/http and
so on. SinatraͬΆ͍ͷ͔ΒRailsΈ͍ͨͳશ෦ೖΓ·Ͱ৭ʑ͋Δɻ ৮ͬͯࢼ࣌ؒ͢ͳ͔ͬͨɺ͢Μ·ͤΜɻɻ
·ͱΊ • γϯϓϧʹ࡞ΒΕ͍ͯͯɺ݁ߏ͍֮͑͢ • ίϯύΠϧ࣌ʹνΣοΫͯ͘͠ΕΔͷྑ͍ʢϙΧϛεݮΔʣ • ฒྻॲཧ͕؆୯ʹॻ͚ͯͼͼΔ • ͱ͍͑ɺ੩తܕ͚ίʔσΟϯάͷεϐʔυײ͕ଟগམ ͪΔͩΖ͏ʢಛʹRubyʹͱͬͯʣ
• ܭࢉʢߦྻͷੵͱ͔ʣॲཧೳྗͱ͔ɺWAFͱͯ͠ͷ͍ ͢͞ͱ͔͏গ͠ௐͯΈ·͢