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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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.
実務で動くAIエージェントを作ろう!MCP×Mastraをライブコーディングで実践
colopl
0
350
Cloud Runでコロプラが挑む 生成AI×ゲーム『神魔狩りのツクヨミ』の裏側
colopl
0
2.3k
PHPStan をできる限り高速化してみる
colopl
1
840
コロプラ最新作インフラ構成について
colopl
0
320
Cloud Spanner 導入で実現した快適な開発と運用について
colopl
1
2.4k
コロプラのオンボーディングを採用から語りたい
colopl
7
2.8k
怖くない!ゼロから始めるPHPソースコードコンパイル入門
colopl
1
910
大規模トラフィックを支える ゲームバックエンドの課題と構成の変遷 ~安定したゲーム体験を実現するために~
colopl
3
8.7k
長期運用プロジェクトでのMySQLからTiDB移行の検証
colopl
3
2k
Other Decks in Technology
See All in Technology
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
1.1k
On-behalf-of Token exchange with AgentCore Identity
hironobuiga
2
220
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
6
5.2k
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
480
Kiroで書いた 設計書 が AI レビューの 採点基準 になる
ezaki
0
110
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.1k
2026TECHFRESH畢業分享會 - Lightning Talk - 資料也要 CI/CD? 用 Airbyte 自動化資料同步
line_developers_tw
PRO
0
1.1k
失敗を資産に変えるClaude Code
shinyasaita
0
670
気づかぬうちにセキュリティ負債を生むAPIキー運用
sgwrmctk
0
130
LLMにもCAP定理があるという話
harukasakihara
0
380
中期計画、2回作ってみた ~業務委託と正社員、両方の視点から~
demaecan
1
860
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
610
Featured
See All Featured
Marketing to machines
jonoalderson
1
5.4k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
180
Designing Experiences People Love
moore
143
24k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Accessibility Awareness
sabderemane
1
140
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
The Limits of Empathy - UXLibs8
cassininazir
1
360
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
The Curse of the Amulet
leimatthew05
1
13k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
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 まとめ ゲームタイトル開発側とサーバー基盤で 連携することにより ゲームの開発効率を向上していっています!