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
98
コードで遊ぼう 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
87
LTだよ!!全員集合!!
wooyoowaan
0
120
Other Decks in Programming
See All in Programming
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
230
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
510
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
7
2.4k
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
5
1.5k
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
ThorVG Viewer In VS Code
nors
0
470
re:Invent 2025 トレンドからみる製品開発への AI Agent 活用
yoskoh
0
550
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
420
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
8
3.5k
マスタデータ問題、マイクロサービスでどう解くか
kts
0
160
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
680
TestingOsaka6_Ozono
o3
0
230
Featured
See All Featured
Thoughts on Productivity
jonyablonski
73
5k
Discover your Explorer Soul
emna__ayadi
2
1k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
130
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
32
Embracing the Ebb and Flow
colly
88
4.9k
Skip the Path - Find Your Career Trail
mkilby
0
28
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
180
We Are The Robots
honzajavorek
0
130
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
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 ࠓͰ͢ʂʂ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠