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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
mackee
July 06, 2019
Programming
1
4.8k
ゲームのサーバサイドエンジニアをやっていく技術 / 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
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
510
Agentに至る道 〜なぜLLMは自動でコードを書けるようになったのか〜
mackee
6
5k
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
14
6.4k
ワンバイナリWebサービスのススメ
mackee
10
8.4k
tanukistack ライブコーディング / tanukistack live-coding
mackee
0
380
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
1.1k
perl for shell, awk and sed programmers
mackee
3
2.7k
今更GoのWebフレームワークを作ろうとしているワケ / Why am I trying to create a Go web framework now?
mackee
1
1.1k
database/sqlでNullを扱う歴史とsql.Null[T]の登場 / sql.Null[T] history
mackee
0
950
Other Decks in Programming
See All in Programming
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
210
朝日新聞のデジタル版を支えるGoバックエンド ー価値ある情報をいち早く確実にお届けするために
junkiishida
1
380
あなたはユーザーではない #PdENight
kajitack
4
340
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
190
ふつうのRubyist、ちいさなデバイス、大きな一年 / Ordinary Rubyists, Tiny Devices, Big Year
chobishiba
1
390
Claude Codeセッション現状確認 2026福岡 / fukuoka-aicoding-00-beacon
monochromegane
4
400
Windows on Ryzen and I
seosoft
0
190
AIに任せる範囲を安全に広げるためにやっていること
fukucheee
0
110
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
15
8.1k
Codex の「自走力」を高める
yorifuji
0
950
NOT A HOTEL - 建築や人と融合し、自由を創り出すソフトウェア
not_a_hokuts
2
590
LangChain4jとは一味違うLangChain4j-CDI
kazumura
1
150
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
How to Ace a Technical Interview
jacobian
281
24k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
660
Thoughts on Productivity
jonyablonski
75
5.1k
BBQ
matthewcrist
89
10k
The browser strikes back
jonoalderson
0
760
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
250
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
140
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
370
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
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ͷ ϩάूܭج൫