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.
実務で動く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
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
yamaguchitk333
2
110
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
3
770
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
680
【NRUG vol.18】KubernetesにおけるNew Relicデータ取得量削減の考え方
nrug_member
0
120
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
1.1k
On-behalf-of Token exchange with AgentCore Identity
hironobuiga
2
220
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
350
LayerXにおけるセキュリティ管理の現在地と次の一手
tosho
0
190
攻撃者視点で考えるDetection Engineering
cryptopeg
3
1.8k
なぜ Platform Engineering の土台に Kubernetes を選ぶのか
r4ynode
2
640
【Snowflake Summit 2026 Recap!!】Snowflake Summit Deep Dive: Security & Governance
civitaspo
1
190
Featured
See All Featured
Music & Morning Musume
bryan
47
7.2k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
620
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
200
How to make the Groovebox
asonas
2
2.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
300
Thoughts on Productivity
jonyablonski
76
5.2k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
410
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
The agentic SEO stack - context over prompts
schlessera
0
820
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 まとめ ゲームタイトル開発側とサーバー基盤で 連携することにより ゲームの開発効率を向上していっています!