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
ゲームタイトル開発側と サーバー基盤の連携事例の紹介
Search
COLOPL Inc.
September 28, 2023
Technology
1.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ゲームタイトル開発側と サーバー基盤の連携事例の紹介
COLOPL Inc.
September 28, 2023
More Decks by COLOPL Inc.
See All by COLOPL Inc.
Claude Code 再入門 会話の渡し方の4つの道具 - Claude Codeスキル・ハーネス社内勉強会
colopl
0
310
Copilot / Claude Code 両方で使えるスキル・ハーネスの紹介 - Claude Codeスキル・ハーネス社内勉強会
colopl
0
330
実務で動くAIエージェントを作ろう!MCP×Mastraをライブコーディングで実践
colopl
0
440
Cloud Runでコロプラが挑む 生成AI×ゲーム『神魔狩りのツクヨミ』の裏側
colopl
0
2.5k
PHPStan をできる限り高速化してみる
colopl
1
1.3k
コロプラ最新作インフラ構成について
colopl
0
350
Cloud Spanner 導入で実現した快適な開発と運用について
colopl
1
2.4k
コロプラのオンボーディングを採用から語りたい
colopl
7
2.9k
怖くない!ゼロから始めるPHPソースコードコンパイル入門
colopl
1
970
Other Decks in Technology
See All in Technology
Sets in Go
ramalho
1
130
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
270
Breaking the Seal: Static Deobfuscation of Compiled V8 JavaScript Bytecode Malware
hshrzd
0
740
グローバル基準のSREは、運用現場でどう機能したか:成熟度アセスメントの実践 / SRE NEXT 2026
sorawatanabe
0
220
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
事業価値と Engineering 2026年度版
recruitengineers
PRO
49
23k
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
130
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.2k
Digitization部 紹介資料
sansan33
PRO
2
7.7k
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
230
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
私がブラウザを自作したくなった理由
supurazako
1
220
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
760
Building an army of robots
kneath
306
46k
Faster Mobile Websites
deanohume
310
32k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
470
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Music & Morning Musume
bryan
47
7.3k
Unsuck your backbone
ammeep
672
58k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
170
Transcript
ゲームタイトル開発側と サーバー基盤の連携事例の紹介 薮智仁
2 経歴 1. 2019年:新卒入社 2. 運用ゲームタイトル2年 3. 新規ゲームタイトルローンチ + 運用移行
4. 新規ゲームタイトル開発2年 ← Now ! 氏名 : 職種 : 所属 : 薮 智仁 サーバーサイドエンジニア 技術基盤本部 第3バックエンドエンジニア部 マネージャー補佐 自己紹介
3 お話しすること ゲームタイトル開発側とサーバー基盤の 過去の相談や連携事例を3つご紹介
4 〜 ① Slack 相談編 〜
5 ① Slack 相談編 〜とあるゲームタイトルのエンジニア Slack チャンネルにて〜
6 ① Slack 相談編 〜とあるゲームタイトルのエンジニア Slack チャンネルにて〜
7 ① Slack 相談編 〜とあるゲームタイトルのエンジニア Slack チャンネルにて〜
8 Slack ならではの 気軽な流れでサーバー基盤チームに相談できる! ① Slack 相談編
9 〜 ②コントリビュート編 〜
10 ②コントリビュート編 〜GitLab の issue にて提案してコントリビュート〜
11 ②コントリビュート編 〜GitLab の issue にて提案してコントリビュート〜
12 ②コントリビュート編 問題:Model::push() の標準実装がループで Model::save() を呼んでおりN+1クエリになっていた $user->push(); // INSERT INTO
UserItem (userId, itemId, amount) VALUES ('user1', 1, 2); // INSERT INTO UserItem (userId, itemId, amount) VALUES ('user1', 2, 5); // UPDATE UserItem SET amount = 10 WHERE userId = 'user1' AND itemId = 3; // UPDATE UserItem SET amount = 10 WHERE userId = 'user1' AND itemId = 4;
13 ②コントリビュート編 問題:Model::push() の標準実装がループで Model::save() を呼んでおりN+1クエリになっていた $user->push(); // INSERT INTO
UserItem (userId, itemId, amount) VALUES ('user1', 1, 2); // INSERT INTO UserItem (userId, itemId, amount) VALUES ('user1', 2, 5); // UPDATE UserItem SET amount = 10 WHERE userId = 'user1' AND itemId = 3; // UPDATE UserItem SET amount = 10 WHERE userId = 'user1' AND itemId = 4; 対応:複数モデルを一括で保存するよう Model::push() の中身をオーバーライド $user->push(); // INSERT INTO UserItem (userId, itemId, amount) VALUES ('user1', 1, 2), ('user1', 2, 5); // UPDATE UserItem SET amount = 10 WHERE userId = 'user1' AND itemId IN (3, 4);
14 ②コントリビュート編 問題:Model::push() の標準実装がループで Model::save() を呼んでおりN+1クエリになっていた $user->push(); // INSERT INTO
UserItem (userId, itemId, amount) VALUES ('user1', 1, 2); // INSERT INTO UserItem (userId, itemId, amount) VALUES ('user1', 2, 5); // UPDATE UserItem SET amount = 10 WHERE userId = 'user1' AND itemId = 3; // UPDATE UserItem SET amount = 10 WHERE userId = 'user1' AND itemId = 4; 対応:複数モデルを一括で保存するよう Model::push() の中身をオーバーライド $user->push(); // INSERT INTO UserItem (userId, itemId, amount) VALUES ('user1', 1, 2), ('user1', 2, 5); // UPDATE UserItem SET amount = 10 WHERE userId = 'user1' AND itemId IN (3, 4); ゲームタイトルのコードはそのままでDB負荷を軽減! 🥳
15 OSSへのコントリビュートより ハードルが低いので練習として最適! ②コントリビュート編
16 〜 ③他タイトルとの議論編 〜
17 ③他タイトルとの議論編
18 ③他タイトルとの議論編 他ゲームタイトルのエンジニアからも意見が!
19 ③他タイトルとの議論編 意見も反映した上でマージリクエストを作ってみる テストコードの実装 + メンテがかなり楽に! 🥳
20 まとめ ゲームタイトル開発側とサーバー基盤で 連携することにより ゲームの開発効率を向上していっています!