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
ゲームのサーバサイドエンジニアをやっていく技術 / The technology of gam...
Search
mackee
July 06, 2019
Programming
4.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ゲームのサーバサイドエンジニアをやっていく技術 / The technology of game server side engineer
沖縄学生×企業エンジニア 7月大LT大会!!!
https://connpass.com/event/132178/
mackee
July 06, 2019
More Decks by mackee
See All by mackee
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
760
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
1.2k
Agentに至る道 〜なぜLLMは自動でコードを書けるようになったのか〜
mackee
6
6.2k
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
14
7.3k
ワンバイナリWebサービスのススメ
mackee
10
9.1k
tanukistack ライブコーディング / tanukistack live-coding
mackee
0
790
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
1.2k
perl for shell, awk and sed programmers
mackee
3
2.9k
今更GoのWebフレームワークを作ろうとしているワケ / Why am I trying to create a Go web framework now?
mackee
1
1.1k
Other Decks in Programming
See All in Programming
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
140
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
220
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4k
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
250
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
280
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.8k
リアルな遅延を測る仕様
kota_yata
1
120
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
240
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
170
源内ハンズオン概要編
hideg
0
210
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
120
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
140
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
550
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
450
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
260
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
490
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.4k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
940
Build your cross-platform service in a week with App Engine
jlugia
234
19k
The SEO identity crisis: Don't let AI make you average
varn
0
530
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Product Roadmaps are Hard
iamctodd
55
12k
Transcript
ήʔϜͷαʔόαΠυ ΤϯδχΞΛ ͍ٕͬͯ͘ज़ @mackee_w a.k.a macopy ԭೄֶੜ×اۀΤϯδχΞ 7݄େLTେձ!!!
ࢲͰ͢ w ໘ന๏ਓΧϠοΫ!ח w ιʔγϟϧήʔϜࣄۀ෦ w ήʔϜٕݚ w αʔόαΠυΤϯδχΞ w
1FSM (P +BWB4DSJQU w ઐ w Ϛελσʔλ w 8FC4PDLFU w ϚΠϒʔϜΩʔϘʔυ࡞Γ
None
ిࢠج൘Λշదʹ࡞Δ ͨΊͷΩʔϘʔυͷి ࢠج൘Λ࡞Δٕज़ @mackee_w a.k.a macopy ԭೄֶੜ×اۀΤϯδχΞ 7݄େLTେձ!!!
͜ͷΛΔ Ϟνϕʔγϣϯ ήʔϜͷαʔόαΠυ ΤϯδχΞΛ ͍ٕͬͯ͘ज़
ήʔϜ࡞Γͱݴ͑… • ίϯγϡʔϚػPC, εϚϗͰಈ͘ϓϩάϥϜ Λॻ͘ • ֆΛඳ͘෦(3D, 2D…) • UI
• ϢʔβΠϯλϥΫγϣϯ
ݱͷ(ൺֱతେنͳ) εϚϗήʔϜͷߏ
ݱͷ(ൺֱతେنͳ) εϚϗήʔϜͷߏ ͜͜ͷϓϩάϥϜΛ ॻ͘ਓ͍Ε
ݱͷ(ൺֱతେنͳ) εϚϗήʔϜͷߏ ͜͜ͷϓϩάϥϜΛ ॻ͘ਓඞཁ
ͳͷ͕ͩ ήʔϜΛ࡞Γ͍ͨਓ αʔόαΠυΛ ͋·ΓΒͳ͍
αʔόαΠυΛΓ͍ͨਓ ήʔϜʹ αʔόαΠυ͕ ඞཁͳ͜ͱΛ Βͳ͍
ࠓ͍ͬͯΔࣄ ͍ͬͯΔٕज़Λ͑ͯ ήʔϜͷαʔόαΠυΛΔਓΛ ૿͍ͨ͠ʂʂʂ
ࣄ༰ΛҰݴͰઆ໌͢Δͱ ήʔϜͷ ηʔϒσʔλΛ ͏·͘ อଘͨ͠Γ औΓग़ͨ͠Γ͢Δ ࣄ
αʔόʹηʔϒσʔλ͕ͨ͘͞Μ
దʹηʔϒσʔλΛબΜͰ ͘͢ฦ͢
Ұൠతͳηʔϒσʔλͱҧ͏ • ηʔϒσʔλଞਓݟΕΔ߹͕͋Δ • ϥϯΩϯά, σοΩߏ etc… • ݟ͍͚ͤͯͳ͍ͷͪΖΜ͋Δ •
อଘ࣌ʹখ͍͠ܭࢉΛ͢Δ͜ͱ͕͋Δ • AIతͳͳʹ͔, ԿΒ͔ͷγϛϡϨʔγϣϯͳͲ…
ηʔϒσʔλͷϝλϑΝʔʹ ͯ·Βͳ͍ • ରઓ(PvP, GvGͳͲ) • ϦΞϧλΠϜ(WebSocketͱ͔RUDPͱ͔) • Ξηοτ৴(ը૾ͱ͔Իͱ͔ಈըͱ͔3D σʔλͱ͔)
• ”ߋ৽”͔ͳΓհʂʂ(ͦͯ͠໘ന͍
αʔό͕ͳ͍ήʔϜͱͳʹ͔ • Ұਓ༻ήʔϜͷେ • είΞΛڝ͏ͳΒϥϯΩϯάूܭαʔό͕ Ͳ͔͜ʹ͋Δ • ϚϧνͰP2PͳΒαʔό͍ͳ͍͜ͱ • গਓͰΔFPSP2PͰߦΘΕ͍ͯΔ
͜ΕੲͰ͕͢ • CGIήʔϜʙΨϥέʔͷιγϟήʔ࣌WebαʔϏεͱ࡞ Γ΄ͱΜͲҰॹͩͬͨ • ͨΒσʔλͷॻ͖ࠐΈ/มߋ͕ଟ͍WebαʔϏε • GET/POSTΛड͚ͯHTMLΛు͘ • εϚϗήʔʹͳͬͯAPIΛఏڙ͢Δଘࡏʹͳͬͨ
• SPA࣌ʹͳͬͯϞμϯͳWebαʔϏεͦ͏ͳ͍ͬͯΔ
WebαʔϏεͱήʔϜͷҧ͍ • ͨΒσʔλॻ͖ࠐΈ/มߋ͕ଟ͍ • ηʔϒσʔλͷมߋ͕ৗʹى͍ͬͯ͜Δ • ࡏ͕͍࣌ؒ • Ӭଓଓ, ཪͰճΔόονͷଟ͞
• Ϛελσʔλͷଘࡏ • 1req͋ͨΓʹՔ͙͓͕ۚଟ͍ • ࣮มߋͰڍಈ͕ίϩίϩมΘΔ
σϓϩΠΟϯυ • 14ճৗʹશϢʔβࢀՃͷΠϕϯτతͳͷ͕ ճΔήʔϜ • σϓϩΠ(࣮ͷຊ൪ڥͷө)͕ߦ͑Δ࣌ ͕ؒͦͷ伱͔ؒ͠ແ͍ -> σϓϩΠΟϯυ •
ʮσϓϩΠΟϯυͳΜͯͷଞͷWeb αʔϏεʹͳ͍ʯ
ήʔϜͷαʔόαΠυ ͋ΒΏΔܭࢉػՊֶͷࣝΛཁٻ͢Δ • ηʔϒσʔλ • σʔλߏ, ݕࡧ, ΞϧΰϦζϜ • γϛϡϨʔγϣϯ
• εςʔτϚγϯ, ήʔϜAI, VM • Πϯϑϥ • ࢄγεςϜ, ฒߦॲཧ
ͪΖΜαʔόͰ ήʔϜతͳίʔυॻ͖·͢ • ͍͍ײ͡ͷରઓϚονϯάͱ͔ • ήʔϜAI(CPU)ॻ͘ͱ͔ • ٿ൫γϛϡϨʔγϣϯΈ͍ͨͳͷॻ͘ͱ͔ • ݕࢉͷͨΊΫϥΠΞϯτͱαʔόͰಉ͡ϩδοΫ
Λ࣮͢Δ͜ͱ • νʔτݕͱ͔͠·͢
Θ͔Γ·͔ͨ͠ʁʁʁʁ
͡Ό͓͋લ࠷ۙԿͬͯΔΜͩ • ڊେεϓϨουγʔτΛߦ͝ͱʹόʔδϣϯ ཧͯ͠ɺ͍͍ײ͡ʹߦΛൈ͖ग़ͯ͠CSV JSONʹ͢Δ܅Λ࡞ͬͯ·ͨ͠ •Ϛελσʔλ
Ϛελσʔλͱ • ήʔϜͷύϥϝʔλઃఆ, εςʔδͷஔͱ͔ͦ ͏͍͏ͷΛॾʑؚΊͨΛࢦ͢ • ϓϩάϥϜʹॻ͍ͯΔͱɺϓϩάϥϚҎ֎͕มߋ Ͱ͖ͳ͍ͷͰ֎ʹग़͓ͯ͘͠ • ΧϠοΫͰGoogleεϓϨουγʔτΛ༻ͯ͠ه
ड़͠ɺDBʹೖΕͨΓJSONʹͯ͠ຊ൪Ͱར༻͍ͯ͠ Δ 200γʔτҎ্͋ΔϓϩδΣΫτ
None
ͦΕαʔόͷࣄͳͷʁ
Ϛελσʔλͷө • ि1ͰΠϕϯτͱ͔ΨνϟͬͯΔͱͦͷස Ͱຊ൪ө͕ඞཁ • ͦͷຊ൪өͱϚελσʔλͷөΛࢦ͠ ·͢ • ϚελσʔλαʔόαΠυΤϯδχΞ͕ ͬͯ·͢
ͱ͍͏Θ͚Ͱ Ϛελσʔλͷੈքฏ αʔόαΠυΤϯδχΞͷ ࣄͱ͍͏͜ͱʹͳ͍ͬͯΔ
σϓϩΠʹࢸΔ·Ͱͷ ϫʔΫϑϩʔ • σϓϩΠ(ຊ൪ө)ʹϚελσʔλͷଞʹɺιʔ είʔυΫϥΠΞϯτ͕ಡΉΞηοτ͕ཁΔ • ϚελσʔλϨϕϧσβΠφʔ͕࡞Δ͠Ξηο τσβΠφʔ&ΫϥΠΞϯτͷਓ͕࡞Δ͠… • ۀ͍ͯ͠Δ͔Β͍͍ײ͡ʹϫʔΫϑϩʔ࡞Βͳ
͍ͱճΒͳ͍YOʂ
ճΒͳ͍݁Ռ σϓϩΠ͢ΔαʔόαΠυͷ ट͕క·ΔͷͰ ࠷ۙϫʔΫϑϩʔඋͬͯ ͍Δ
ίʔυͷྗͰϫʔΫϑϩʔΛ εϜʔζʹ͢Δ • ϚελσʔλͷੜΛBotʹΒͤΔ • αʔόΤϯδχΞͷखΛΘͣʹࣗݾ݁Խ • SlackͷBot͕࣍ʹΔ͖͜ͱΛݴ͏ • มߋ༰ʹԠͨ͡өखॱͷࣗಈੜ
None
͍ͬͯΔ͜ͱͨ͘͞Μ͋Δʂʂ Ͱ͖Δ͜ͱͨ͘͞Μ͋Δʂʂʂ • ۙͷࣄJenkins͔ΒCircleCIʹςετίʔυͷࣗಈ࣮ ߦڥΛҠߦ͢Δ͜ͱͩͬͨΓ • ࠷ۙͷτϐοΫຊ൪ڥΛίϯςφʹ͢Δ͜ͱͩͬͨΓ • ϨΨγʔΛϞομϯʹ͢Δࣄৗʹ͍ͬͯΔ •
ISUCONతͳνϡʔχϯά࠷ۙͨ͠ • ࢄτϨʔγϯά(AWS X-Ray)ΛͬͯಛఆΛͨ͠
ࠓΞπ͍ٕज़ ࢄτϨʔγϯά
ݱͷΠϯϑϥߏ SFRʹؔΘΔ ίϯϙʔωϯτ͕ଟ͍ʂʂʂ
ίϯϙʔωϯτ͕ଟ͍ͱ…ʁ • ͕ىͬͨ͜ͱ͖ͷͨΊʹ֤ʑͷίϯϙʔ ωϯτ͕ϩάΛు͍͍ͯΔ • ֤ʑࣗ༝ʹు͍͍ͯΔͷͰɺͲͷϩάు͍ͨ ͋ͱʹͲΕ͕ు͔Ε͔ͨ͜Μ͕Β͕Δ • ࣌ܥྻʹฒͯෳ͍Δ͠ωοτϫʔ ΫԆͰॱ൪ೖΕସΘͬͨΓ…
AWS X-RayΛͬͯϧʔϓΫΤϦ Λݟ͚ͭΔ
X-RayೖΕΔ ͖͔͚ͬʹͳͬͨࣄ݅
ωοτϫʔΫαν͍ͬͯΔࣄ݅ w 8FC4PDLFUͷଓΛઐతʹ͘͞LVJQFSCFMU ͱ͍͏ϛυϧΣΞΛ͏ΞϓϦ͕͋ͬͯ w ϦϦʔεલͷෛՙࢼݧͰɺ͋ΔҰఆͷෛՙΛ͔͚Δ ͱҰؾʹΞϓϦશମͷੑೳ͕ѱ͘ͳΔ w "QQ%#LVJQFSCFMUͷ$16٧·͍ͬͯΔ༷ ࢠ͕ͳ͍ɻ͔͠Ұؾʹ٧·Δɻͳͥʁ
ωοτϫʔΫαν͍ͬͯΔࣄ݅ w ϩάಥͬࠐΈ·ͬͯ͘Ͳ͕͜ϘτϧωοΫ͔Λௐ Δ w ͢ΔͱɺLVJQFSCFMUͷ"1*ΞΫηε͕ඵͱ͔ ඵͱ͔ඵͱ͔͔͔͍ͬͯΔ߹͕͋ͬͯɺͦ͜ Ͱ٧·͍ͬͯΔΑ͏ͩͬͨ w LVJQFSCFMU$16ͥΜͥΜͬͯͳ͍ͷʹʜΤ
ϥʔϩάग़ͯͳ͍Α
ωοτϫʔΫαν͍ͬͯΔࣄ݅ w ωοτϫʔΫͷύέοτͷεϧʔϓοτ͕Π ϯελϯεͷݶքΛ͍͑ͯͯɺωοτϫʔΫΠϯ λʔϑΣΠεͰυϩοϓ͢Δ͔Β্ͷ5$1ͷϨΠ ϠʔͰ࠶ૹ͕ىͬͯ͜Ԇͱ͍͏హͩͬͨ w ΠϯελϯεαΠζ$16ϝϞϦͰܾΊ͍ͯͨ ͚ΕͲɺωοτϫʔΫੑೳେࣄʜ
͏ଆड͚Δଆʹ༨༟͕͋Δ͕ ͕ഁ྾͢Δྫ
ͦΜͳΘ͚Ͱ ήʔϜͷαʔόαΠυ ໘നͦ͏ͱࢥͬͯ͘Ε·͔ͨ͠ʁ
Ҏ্ʂ
ఆFAQ • ։ൃͱӡ༻ ӡ༻ͬͯͭ·Βͳ͘ͳ͍ʁ • νʔϜਓͲΕҐͳΜͰ͔͢ • ͍ͬͯΔݴޠͱ͔ GitHubͱ͔Slackͱ͔ •
αʔόͱΫϥΠΞϯτֻ͚࣋ͪ͢Δਓ͍Δʁ • αʔόϨεmBaaSͷ ϩάूܭج൫