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 #1
Search
YooWaan
October 02, 2015
Programming
0
97
コードで遊ぼう Go #1
source Code
https://bitbucket.org/BP-YooWaan/enjoycode
YooWaan
October 02, 2015
Tweet
Share
More Decks by YooWaan
See All by YooWaan
極限までGoogleに迎合した エコシステムの話 やり込み出来てない版
wooyoowaan
0
120
擬人化アーキテクチャ(あんまり擬人擬人してないけど)
wooyoowaan
0
160
コードで遊ぼう Haskell #2.0
wooyoowaan
0
87
コードで遊ぼう Haskell #2.1
wooyoowaan
0
84
LTだよ!!全員集合!!
wooyoowaan
0
120
Other Decks in Programming
See All in Programming
ProxyによるWindow間RPC機構の構築
syumai
3
1k
アセットのコンパイルについて
ojun9
0
110
Introducing ReActionView: A new ActionView-compatible ERB Engine @ Rails World 2025, Amsterdam
marcoroth
0
550
機能追加とリーダー業務の類似性
rinchoku
2
1.1k
Rancher と Terraform
fufuhu
2
210
Swift Updates - Learn Languages 2025
koher
2
450
Claude Codeで実装以外の開発フロー、どこまで自動化できるか?失敗と成功
ndadayo
4
1.9k
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
140
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
310
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
480
Improving my own Ruby thereafter
sisshiki1969
1
160
Honoアップデート 2025年夏
yusukebe
1
920
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
520
The Language of Interfaces
destraynor
161
25k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
Making Projects Easy
brettharned
117
6.4k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Bash Introduction
62gerente
615
210k
For a Future-Friendly Web
brad_frost
180
9.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
840
Fireside Chat
paigeccino
39
3.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Transcript
ίʔυͰ༡΅͏ #ͦͷ̍ Go
ࠓͷ Go ͍͍ͱ͜Ζ ΘΔ͍ͱ͜Ζ →ωοτͷ·ͱΊͷ·ͱΊ ͦΕΆ͍ C++ͱൺֱ͠ͳ͕Βɾɾɾ ίʔυͪ͜Β͔Β https://bitbucket.org/BP-YooWaan/enjoycode/src
͍͍ͱ͜Ζ ΘΔ͍ͱ͜Ζ
͍͍ͱ͜Ζ GoogleͰ࡞ͬͯ·͢ ʢ৴པͰ͖Δ͎ʙʣ ҎԼʹରॲ - ιϑτΣΞ։ൃ - ѻ͍ʹ͍͘λΠϓ - Multiple
core/concurrency ػೳ - ੩తϦϯΫωΠςΟϒόΠφϦ - GC (ΨϕʔδίϨΫγϣϯ) - ڧ͍ܕ͚ - Gorutines / Channels ͱ͔ - Structs (ߏମ) / Interface
ΘΔ͍ͱ͜Ζ Go ͰάάΔͱݴޠͱؔͳ͍݁Ռ͕ग़ͯ͘Δɾɾɾ ൚༻ϓϩάϥϛϯά ݴޠ֦ுੑ ܕਪ ෆมੑ ৄࡉͪ͜ΒʰGoݴޠ͕μϝͳཧ༝ ʱ(
http://postd.cc/why-go-is-not-good/ ) ੍ޚϑϩʔߏ ΈࠐΈϓϩάϥϛϯά
ͦΕͬΆ͍
։ൃڥతͳ͜ͱ Go C proj.gyp # gyp ઃఆϑΝΠϧ inc/ # ϔομʔϑΝΠϧ
src/ # ιʔεϑΝΠϧ out/Default build.ninja # gyp ੜϑΝΠϧ gyp-mac-tool # ಉ͡ obj/ <target>.ninja # ϦϯΫΦϓγϣϯͱ͔ *.o # ΦϒδΣΫτϑΝΠϧ
ίϚϯυϦϑΝϨϯε Go C # ϏϧυσΟΫϨτϦੜ $ GYP_GENERATORS=ninja gyp proj.gyp
--toplevel-dir=. —depth=0 # build $ cd out/Default ; ninja # ࣮ߦ ./bin/{ exe file } # ࣮ߦίϚϯυදࣔ $ ninja -t command # ࡞ۀσΟϨΫτϦͷઃఆ $ export GOPATH={path to dir} # build $ go install {package name} # ࣮ߦ $ ./bin/{ exe file } # ใදࣔ $ go env
ྫ Goͷ߹ GOPATH ʢ࡞ۀσΟϨΫτϦʣઃఆ όΠφϦ࡞ ࣮ߦ όΠφϦ
ྫ C++ͷ߹ ϏϧυσΟϨΫτϦ࡞ Ϗϧυ όΠφϦ
ߏจతͳʂʁ ίʔσΟϯά ʮϊϦLL͚ͩͲࠢCʯͱ͍͏ײ͡ ϙΠϯλ༗Γ·͢ ྻɺϚοϓ༗Γ·͢ Τϥʔϋϯυϧɺฒྻॲཧ ಠࣗͰ͢
ϙΠϯλΫϦιπ C++(C) Go
ྻ/Mapૢ࡞ C++(C) Go Goָ͕͚ͩͲ ѹউײͳ͍
Τϥʔϋϯυϧ C++(C) ׂѪ Go جຊతʹΓఆ panic ϥϯλΠϜΤϥʔ༻ recover() Ͱ෮چ
ߏମɺΠϯλʔϑΣΠε Ϋϥεແ͍͚ͲɺΧϓηϧԽՄೳʂʁ ଟଶੑ͋ΔΑ ʢμοΫλΠϐϯάʣ ߏମͷϝιου͋ΔΑ ΠϯλʔϑΣΠεͷϙΠϯλ৽
ߏମ Go ߏମఆٛ ϝιουఆٛ ຒΊࠐΜͰϑΟʔϧυՃ
ߏମ C++(C) Ϋϥεఆٛ Ϋϥε::ϝιουఆٛ Ϋϥεఆٛ Ϋϥε::ϝιουఆٛ λΠϓྔͺͳ͍
ΠϯλʔϑΣΠε C++(C) Go ͓·͡ͳ͍Ͱͳ͘ ҙຯ͕͋Δ
main() C++(C) Go ϝϞϦϙΠϯλΛཧղ͠ͳ͍ͱμϝ ໊લۭؒͱ͔ . or -> ͳͷ͔ͱ͔ཧղ͠ͳ͍ͱμϝ
࣮ߦ C++(C) Go ϙΠϯλͷࢀর͕ΧϯτΞοϓ είʔϓΛൈ͚ΔͱσετϥΫλΛ࣮ߦ int64ͱFloatͰܭࢉ݁Ռ͕ҟͳΔ
ฒߦɺνϟϯωϧ CPUͱ͔ߟ͑ͣʹ͍͍ײ͡ʹฒߦॲཧͯ͘͠Ε·͢ ফඅϝϞϦ͘͢ͳ͍Α
C++(C) Go go Ͱ࣮ߦ join Ͱ͢ΑͶʔ SleepͳΓ ϧʔϓ͠ͳ ͍ͱɾɾɾ mutexͱ͔͍ΔΑͶ
ίʔυࣗମ ͲͬͪͲͬͪ
࣮ߦ C++(C) Go ՈͷMac mini ͰޮՌ͕͋ͬͨ Macbook Pro Ͱٯʹ͍ɾɾɾ thread
͏ͱ͍Ͷ ฒߦॲཧʹ ͢ΔͱͲͬͪ fib(30)͕ ࠷ॳʹྃ
ิ C++(C) Go out/Default/obj/run_thread.ninja ʹ flags_cc = -std=c++11 ͕ͳ͍ͱμϝ mainؔଆͷfor
ͷ close(ch) , beak ΛίϝϯτΞτ ͢Δͱ deadlock ͯ͠ϓΪϟΕΔΑ (mainؔ୭௨͠ͳ͘ͳͨͷͰ)
ґଘؔ ࣗͰղܾ C,C++ͱ͔(άάͬͨΒclibͱ͔ग़͖ͯͨ…) πʔϧͰղܾ java (maven, gradle, sbt) ݴޠσϑΝΫτཧπʔϧ npm,
pip, gem, cpan (JS, python, ruby,perl) ͋ΔΑ Go (ศརͱݴͬͯͳ͍) $ go get <package name>
ߟʢࢲͷ߹ʣ ٕज़తʹઑͬͨཁ͕݅ͳ͚Ε Go Ͱ͍͍ͱࢥ͏ ΨνҙతͰͳ͍ʢΑ͏ʹݟ͑Δʣ ϓϩάϥϜݴޠΛ͖ͪΜͱධՁͨ͠Γɺཧղͨ͠Γ͍ͨ͠ਓɺ ผ్͓ษڧ͕ඞཁ ৽ਓݚमͱ͔͜ΕͰ͍͍͔ ʢJavaΑΓɾɾɾʣ CʴʴΛٱ͠ͿΓʹॻ͘ͱؾ͍͍࣋ͪ
ߟʢωοτͷ߹ʣ
ߟʢωοτͷ߹ʣ
ߟʢωοτͷ߹ʣ
ࢀߟ Go Features and Case Studies https://speakerdeck.com/ianlewis/go-features-and-case-studies Google’s Go Language
http://functionspace.com/topic/2961/Google--039;s-Go-Language Goݴޠ͕μϝͳཧ༝ http://postd.cc/why-go-is-not-good/ Goίʔυͷॻ͖ํ http://golang-jp.org/doc/code.html
ࢀߟ Go Docs http://golang-jp.org/doc/ Go FAQ https://golang.org/doc/faq Less is exponentially
more (ωοτͷݪจ) http://commandcenter.blogspot.jp/2012/06/less-is-exponentially-more.html Go : Γ্͕Γײ (hype) Λ࣮ྗʹ͢Δ͜ͱ͕ॏཁ ʢҾ༻ݩʣ http://wazanova.jp/post/63408341634/go-hype
Go Go Go ࠓͰ͢ʂʂ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠