大量のデータから「いい感じに」抽選する時系列バケット式抽選法

タグ:
日時:
2026年07月24日(金)16時40分〜17時05分
形式: ショートセッション(25分)
受講スキル:
・バックエンドの実装・運用経験がある方 ・大規模なゲームサーバーのバックエンド設計に興味がある方
受講者が得られるであろう知見:
・Cloud Spannerだけでは扱いづらい負荷に関する知見とその対処法 ・高負荷下での運用を見据えた、Redisを使った機能設計の観点 ・ユーザーデータをランダムに抽選するロジックを、高負荷バックエンドで実現するための設計パターン ・ゲームのAPIサーバーにおける、RedisのSet型の実用例
セッションの内容

Pokémon TCG Pocketの開発において、「他人のコンテンツを『いい感じ』に抽選して表示する」という機能は、ユーザー体験にとって重要な要素です。例えば、「ゲットチャレンジ」機能は、他のプレイヤーが開封した拡張パックが「いい感じ」に抽選されて自分に提示される機能です。
しかし、この「いい感じ」の実現には、以下の要件を同時に満たす必要がありました。

・鮮度とランダム性: 新しいデータが出るようにしつつ、特定のデータに偏らないこと。(一見矛盾しているようにも見えますが)
・スケーラビリティ: データ追加が数千万件の大規模でも、逆に1件しかない時でも同様に動作する汎用性。
・高負荷への耐性: 負荷試験の目標値として定めた、1時間あたり750万回(秒間2000回)のデータ追加・取得負荷への耐性。

本セッションでは、これらの要件をすべて満たし、ゲームの複数の機能における課題を一気に解決するために考案した「時系列バケット式抽選法」について説明します。

一般的なソーシャル要素のあるゲームのサーバー開発に役立つ、スケーラブルなバックエンド設計の知見を図を交えてご紹介します。


講演資料

  • 大量のデータから「いい感じに」抽選する時系列バケット式抽選法.pdf

※資料のダウンロードにはログインが必要です。


講演者プロフィール

柴田 佳祐

柴田 佳祐
所属 : 株式会社ディー・エヌ・エー
部署 : ゲームサービス事業本部開発運営統括部第二技術部サーバー第二グループ
役職 : サーバーエンジニア

2022年に株式会社ディー・エヌ・エーに新卒で入社。
現在は、Pokémon TCG Pocket のサーバーチームのリードエンジニアを担当。Go言語とGoogle Cloudを活用し、大規模・高負荷を踏まえた機能設計と運用に情熱を注いでいる。

《講演者からのメッセージ》
「いい感じに」抽選する要件の実現のために、Spannerのホットスポット問題という壁をどう回避したのか、RedisのCPU負荷の問題をどう乗り越えたのか。試行錯誤の道のりと、その結果得られた汎用的な設計パターンを紹介します。
ソーシャル機能の開発に挑むエンジニアの皆様の一助となれば幸いです。