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
1
4.7k
ゲームのサーバサイドエンジニアをやっていく技術 / The technology of game server side engineer
沖縄学生×企業エンジニア 7月大LT大会!!!
https://connpass.com/event/132178/
mackee
July 06, 2019
Tweet
Share
More Decks by mackee
See All by mackee
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
12
4.9k
ワンバイナリWebサービスのススメ
mackee
10
8k
tanukistack ライブコーディング / tanukistack live-coding
mackee
0
120
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
870
perl for shell, awk and sed programmers
mackee
3
2.5k
今更GoのWebフレームワークを作ろうとしているワケ / Why am I trying to create a Go web framework now?
mackee
1
850
database/sqlでNullを扱う歴史とsql.Null[T]の登場 / sql.Null[T] history
mackee
0
730
マイクロサービス化を利用した Goへの移行事例
mackee
0
860
PerlでつくるフルスクラッチWebAuthn/パスキー認証 / Demonstration of full-scratch WebAuthn/Passkey Authentication written in Perl
mackee
3
5.2k
Other Decks in Programming
See All in Programming
旅行プランAIエージェント開発の裏側
ippo012
2
930
アルテニア コンサル/ITエンジニア向け 採用ピッチ資料
altenir
0
110
Android端末で実現するオンデバイスLLM 2025
masayukisuda
1
170
AI Agents: How Do They Work and How to Build Them @ Shift 2025
slobodan
0
100
@Environment(\.keyPath)那么好我不允许你们不知道! / atEnvironment keyPath is so good and you should know it!
lovee
0
130
Processing Gem ベースの、2D レトロゲームエンジンの開発
tokujiros
2
130
テストコードはもう書かない:JetBrains AI Assistantに委ねる非同期処理のテスト自動設計・生成
makun
0
540
AIでLINEスタンプを作ってみた
eycjur
1
230
Improving my own Ruby thereafter
sisshiki1969
1
160
速いWebフレームワークを作る
yusukebe
5
1.7k
個人軟體時代
ethanhuang13
0
330
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
420
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
930
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
BBQ
matthewcrist
89
9.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Documentation Writing (for coders)
carmenintech
74
5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Optimizing for Happiness
mojombo
379
70k
Faster Mobile Websites
deanohume
309
31k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Fireside Chat
paigeccino
39
3.6k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
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ͷ ϩάूܭج൫