Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNAのマスタデータ管理システム
Oyakata の全容
マスターデータ Night #1
ゲーム事業部
共通基盤部
人西 聖樹 | Masaki Hitonishi
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自己紹介
 人西 聖樹(Hitonishi Masaki)
 ゲーム事業部 共通基盤部
⁃ ゲームタイトル横断で使われるライブラリやツールを開発
する部署
 経歴
⁃ Mobage の大規模ゲームタイトルの開発・運用
⁃ 共通基盤側に部署異動して共通システムの新規開発
 好きなもの
⁃ 東方Project
⁃ 個人ゲーム制作
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日話すことのスコープの話
ゲーム開発者
(プランナー)
ここをどうしようとしているかの話
ゲーム
入力からゲームに反映するまでの流れ
Copyright © DeNA Co.,Ltd. All Rights Reserved.
 ゲームのパラメータを設定するもの
 ゲームプランナーが編集する
 例:ボスの攻撃力とか、アイテムのドロップ確率
とか、ガシャの排出率とか
 レベルデザイン(3Dアクションのマップ)的なもの
は本発表ではマスターデータと呼ばないことにし
ます。
マスタデータとは
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNAの今のマスタデータ運用
Copyright © DeNA Co.,Ltd. All Rights Reserved.
弊社の某タイトルの例
 ゲームは Unity 製
 マスタデータの管理は Google Spread Sheet
 Jenkins 上で SpreadSheet -> ゲームデータ
(json)に変換
 バージョン管理は git 及び Github
Copyright © DeNA Co.,Ltd. All Rights Reserved.
■マスターデータについて -制作フロー
共通のSpreadSheetにデー
タを作る
Jenkinsのジョブを叩く
企画
gitリポジトリの更新
Jenkins
SpreadSheetからDL
リリースされてる分と
マージ
ランタイム向けにデータ
加工
マスタデータをスクリプ
トでチェック
Asset 化
コミットしてPullRequest
エンジニア
マージ
リポジトリ
エラーがあればJenkinsの
Viewで確認し修正
差分チェック
Copyright © DeNA Co.,Ltd. All Rights Reserved.
つらいこと
Copyright © DeNA Co.,Ltd. All Rights Reserved.
12月1週目にリリースするイベント
12月2週目にリリースするイベント
ボスパラメータを編集中
別のパラメータを編集中
ボスパラメータが編
集中なのでゲームが
動かない
Copyright © DeNA Co.,Ltd. All Rights Reserved.
並行での開発に対応しきれてない
⁃ 複数のイベントを並行で開発する必要があると
き、イベント間で、編集の影響範囲が切り分け
られていない
⁃ ある前段のイベント開発でシートを編集中だと、
後続のイベントも編集の影響を受けてしまう
⁃ 前段のイベントがエラーになるような値を入力
してると、後続も影響を受けてエラーになる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マスタをゲームデータに
変換するために Jenkins
ジョブ実行
ゲームに反映→
編集
実機確認するために待ちが発生する
編集
編集
Jenkins で順番待ちが発生
Copyright © DeNA Co.,Ltd. All Rights Reserved.
実機確認までに時間がかかる
⁃ マスタデータのゲームデータへの変換が
jenkins 頼み
⁃ jenkins のビルドを長時間待たないと、入
力したマスタをゲーム実機で確認できな
い
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Github 上でのマスタデータ変更のレビュー
差分の目視確認が辛い
Copyright © DeNA Co.,Ltd. All Rights Reserved.
差分が見にくい
⁃ マスタデータの変更のレビュー時、差分
の確認が視認しづらい
⁃ ゲームデータ変換後のデータを github 上
での差分の確認することになる
⁃ json とか csv のテキスト差分は人間の目
に非常に優しくない
⁃ 誤った編集の見落としなどにつながる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
つらい
Copyright © DeNA Co.,Ltd. All Rights Reserved.
これらの課題解決のために
Oyakata というマスタデータの編
集・管理システムを開発してます
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Oyakata の特徴
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マスタデータの表示・編集
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Web 上での編集/Excelファイルでの編集の両方に対応
またゲームで利用するために JSON や CSV に変換可能
変換はブラウザ上で wasm で実行しており、
サーバー側の処理負荷にならない。
Copyright © DeNA Co.,Ltd. All Rights Reserved.
リレーション情報をもとに、参照先のマスタの値で入力できる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Git と同等のバージョン管理
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ブランチの概念が存在する
Copyright © DeNA Co.,Ltd. All Rights Reserved.
コミットログも閲覧できる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
プルリクエスト機能も備えている
Copyright © DeNA Co.,Ltd. All Rights Reserved.
人の目に優しい差分も見られる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
これまでの仕組みと何が違うの?
 ブランチ管理をサポートしている
⁃ 他の人の作業の影響を受けなくなる
⁃ エンジニアが git で当たり前のように受けている恩恵を
プランナーにも
 ゲームデータへの変換をローカルPC上でできる
⁃ Jenkins 待たずに実機確認可能
 マスタデータ形式に特化した差分表示ができる
⁃ 表形式には表形式の見やすい表示の仕方がある
⁃ json や csv をテキスト差分確認するのはやめよう
Copyright © DeNA Co.,Ltd. All Rights Reserved.
まとめ
 弊社はこれまで Google Spread Sheet や Jenkins
でマスタデータ管理の仕組みを構築してきた
 そしたら以下のような課題が出てきた
⁃ SpreadSheet では並行開発の影響範囲切り分
けしづらい
⁃ Jenkins に依存しきってしまって管理や順番待
ちが発生した
⁃ csv や json の目視確認はただ辛い
 すべてを解決するマスタデータ管理の共通基盤シ
ステムを作っている
⁃ 新規タイトル複数で利用中

DeNAの最新のマスタデータ管理システム Oyakata の全容

  • 1.
    Copyright © DeNACo.,Ltd. All Rights Reserved. DeNAのマスタデータ管理システム Oyakata の全容 マスターデータ Night #1 ゲーム事業部 共通基盤部 人西 聖樹 | Masaki Hitonishi
  • 2.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 自己紹介  人西 聖樹(Hitonishi Masaki)  ゲーム事業部 共通基盤部 ⁃ ゲームタイトル横断で使われるライブラリやツールを開発 する部署  経歴 ⁃ Mobage の大規模ゲームタイトルの開発・運用 ⁃ 共通基盤側に部署異動して共通システムの新規開発  好きなもの ⁃ 東方Project ⁃ 個人ゲーム制作
  • 3.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 今日話すことのスコープの話 ゲーム開発者 (プランナー) ここをどうしようとしているかの話 ゲーム 入力からゲームに反映するまでの流れ
  • 4.
    Copyright © DeNACo.,Ltd. All Rights Reserved.  ゲームのパラメータを設定するもの  ゲームプランナーが編集する  例:ボスの攻撃力とか、アイテムのドロップ確率 とか、ガシャの排出率とか  レベルデザイン(3Dアクションのマップ)的なもの は本発表ではマスターデータと呼ばないことにし ます。 マスタデータとは
  • 5.
    Copyright © DeNACo.,Ltd. All Rights Reserved. DeNAの今のマスタデータ運用
  • 6.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 弊社の某タイトルの例  ゲームは Unity 製  マスタデータの管理は Google Spread Sheet  Jenkins 上で SpreadSheet -> ゲームデータ (json)に変換  バージョン管理は git 及び Github
  • 7.
    Copyright © DeNACo.,Ltd. All Rights Reserved. ■マスターデータについて -制作フロー 共通のSpreadSheetにデー タを作る Jenkinsのジョブを叩く 企画 gitリポジトリの更新 Jenkins SpreadSheetからDL リリースされてる分と マージ ランタイム向けにデータ 加工 マスタデータをスクリプ トでチェック Asset 化 コミットしてPullRequest エンジニア マージ リポジトリ エラーがあればJenkinsの Viewで確認し修正 差分チェック
  • 8.
    Copyright © DeNACo.,Ltd. All Rights Reserved. つらいこと
  • 9.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 12月1週目にリリースするイベント 12月2週目にリリースするイベント ボスパラメータを編集中 別のパラメータを編集中 ボスパラメータが編 集中なのでゲームが 動かない
  • 10.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 並行での開発に対応しきれてない ⁃ 複数のイベントを並行で開発する必要があると き、イベント間で、編集の影響範囲が切り分け られていない ⁃ ある前段のイベント開発でシートを編集中だと、 後続のイベントも編集の影響を受けてしまう ⁃ 前段のイベントがエラーになるような値を入力 してると、後続も影響を受けてエラーになる
  • 11.
    Copyright © DeNACo.,Ltd. All Rights Reserved. マスタをゲームデータに 変換するために Jenkins ジョブ実行 ゲームに反映→ 編集 実機確認するために待ちが発生する 編集 編集 Jenkins で順番待ちが発生
  • 12.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 実機確認までに時間がかかる ⁃ マスタデータのゲームデータへの変換が jenkins 頼み ⁃ jenkins のビルドを長時間待たないと、入 力したマスタをゲーム実機で確認できな い
  • 13.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Github 上でのマスタデータ変更のレビュー 差分の目視確認が辛い
  • 14.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 差分が見にくい ⁃ マスタデータの変更のレビュー時、差分 の確認が視認しづらい ⁃ ゲームデータ変換後のデータを github 上 での差分の確認することになる ⁃ json とか csv のテキスト差分は人間の目 に非常に優しくない ⁃ 誤った編集の見落としなどにつながる
  • 15.
    Copyright © DeNACo.,Ltd. All Rights Reserved. つらい
  • 16.
    Copyright © DeNACo.,Ltd. All Rights Reserved. これらの課題解決のために Oyakata というマスタデータの編 集・管理システムを開発してます
  • 17.
    Copyright © DeNACo.,Ltd. All Rights Reserved.
  • 18.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Oyakata の特徴
  • 19.
    Copyright © DeNACo.,Ltd. All Rights Reserved. マスタデータの表示・編集
  • 20.
    Copyright © DeNACo.,Ltd. All Rights Reserved.
  • 21.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Web 上での編集/Excelファイルでの編集の両方に対応 またゲームで利用するために JSON や CSV に変換可能 変換はブラウザ上で wasm で実行しており、 サーバー側の処理負荷にならない。
  • 22.
    Copyright © DeNACo.,Ltd. All Rights Reserved. リレーション情報をもとに、参照先のマスタの値で入力できる
  • 23.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Git と同等のバージョン管理
  • 24.
    Copyright © DeNACo.,Ltd. All Rights Reserved. ブランチの概念が存在する
  • 25.
    Copyright © DeNACo.,Ltd. All Rights Reserved. コミットログも閲覧できる
  • 26.
    Copyright © DeNACo.,Ltd. All Rights Reserved. プルリクエスト機能も備えている
  • 27.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 人の目に優しい差分も見られる
  • 28.
    Copyright © DeNACo.,Ltd. All Rights Reserved. これまでの仕組みと何が違うの?  ブランチ管理をサポートしている ⁃ 他の人の作業の影響を受けなくなる ⁃ エンジニアが git で当たり前のように受けている恩恵を プランナーにも  ゲームデータへの変換をローカルPC上でできる ⁃ Jenkins 待たずに実機確認可能  マスタデータ形式に特化した差分表示ができる ⁃ 表形式には表形式の見やすい表示の仕方がある ⁃ json や csv をテキスト差分確認するのはやめよう
  • 29.
    Copyright © DeNACo.,Ltd. All Rights Reserved. まとめ  弊社はこれまで Google Spread Sheet や Jenkins でマスタデータ管理の仕組みを構築してきた  そしたら以下のような課題が出てきた ⁃ SpreadSheet では並行開発の影響範囲切り分 けしづらい ⁃ Jenkins に依存しきってしまって管理や順番待 ちが発生した ⁃ csv や json の目視確認はただ辛い  すべてを解決するマスタデータ管理の共通基盤シ ステムを作っている ⁃ 新規タイトル複数で利用中