SlideShare une entreprise Scribd logo
1  sur  29
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 の目視確認はただ辛い
 すべてを解決するマスタデータ管理の共通基盤シ
ステムを作っている
⁃ 新規タイトル複数で利用中

Contenu connexe

Tendances

45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込むYoshiki Hayama
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?京大 マイコンクラブ
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~torisoup
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践Yoshifumi Kawai
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]DeNA
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化DeNA
 
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめSugimoto Chizuru
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!Unity Technologies Japan K.K.
 
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステムSEGADevTech
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYOFINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYOGame Tools & Middleware Forum
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編infinite_loop
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ SEGADevTech
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計増田 亨
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話torisoup
 
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチYoshiki Hayama
 
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用Sugimoto Chizuru
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)mosa siru
 

Tendances (20)

45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
 
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめ
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
 
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYOFINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
 
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
 
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 

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

DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNA
 
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れるレガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れるsairoutine
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)denatech2016
 
なぜ私たちは「効率化」を目指すのか(DeNA Games Tokyo)
なぜ私たちは「効率化」を目指すのか(DeNA Games Tokyo)なぜ私たちは「効率化」を目指すのか(DeNA Games Tokyo)
なぜ私たちは「効率化」を目指すのか(DeNA Games Tokyo)DeNA Games Tokyo
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術dena_study
 
PHP Version Up と AWS への移行
PHP Version Up と AWS への移行PHP Version Up と AWS への移行
PHP Version Up と AWS への移行gree_tech
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)Toshiharu Sugiyama
 
裏ってほどじゃないタイトル移管の裏話(DeNA Games Tokyo)
裏ってほどじゃないタイトル移管の裏話(DeNA Games Tokyo)裏ってほどじゃないタイトル移管の裏話(DeNA Games Tokyo)
裏ってほどじゃないタイトル移管の裏話(DeNA Games Tokyo)DeNA Games Tokyo
 
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月VirtualTech Japan Inc.
 
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKA
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKAAmazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKA
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKAGame Tools & Middleware Forum
 
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)dena_study
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方dena_study
 
新次元ゲーム開発セミナー キーノート (Oct-18, 2012)
新次元ゲーム開発セミナー キーノート (Oct-18, 2012)新次元ゲーム開発セミナー キーノート (Oct-18, 2012)
新次元ゲーム開発セミナー キーノート (Oct-18, 2012)Daniel-Hiroyuki Haga
 
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingRegional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingKeiji Kikuchi
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceMakoto Haruyama
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Shunsuke Maeda
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすShunsuke Maeda
 
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。ひさし App
 
Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術kazuya noshiro
 

Similaire à DeNAの最新のマスタデータ管理システム Oyakata の全容 (20)

DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
 
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れるレガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)
 
なぜ私たちは「効率化」を目指すのか(DeNA Games Tokyo)
なぜ私たちは「効率化」を目指すのか(DeNA Games Tokyo)なぜ私たちは「効率化」を目指すのか(DeNA Games Tokyo)
なぜ私たちは「効率化」を目指すのか(DeNA Games Tokyo)
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
PHP Version Up と AWS への移行
PHP Version Up と AWS への移行PHP Version Up と AWS への移行
PHP Version Up と AWS への移行
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
 
Reinvent2017 recap-gaming-session-2
Reinvent2017 recap-gaming-session-2Reinvent2017 recap-gaming-session-2
Reinvent2017 recap-gaming-session-2
 
裏ってほどじゃないタイトル移管の裏話(DeNA Games Tokyo)
裏ってほどじゃないタイトル移管の裏話(DeNA Games Tokyo)裏ってほどじゃないタイトル移管の裏話(DeNA Games Tokyo)
裏ってほどじゃないタイトル移管の裏話(DeNA Games Tokyo)
 
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
 
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKA
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKAAmazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKA
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKA
 
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方
 
新次元ゲーム開発セミナー キーノート (Oct-18, 2012)
新次元ゲーム開発セミナー キーノート (Oct-18, 2012)新次元ゲーム開発セミナー キーノート (Oct-18, 2012)
新次元ゲーム開発セミナー キーノート (Oct-18, 2012)
 
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingRegional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
 
Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術
 

Plus de sairoutine

How to manage parameters for gacha games
How to manage parameters for gacha gamesHow to manage parameters for gacha games
How to manage parameters for gacha gamessairoutine
 
Dark side of the reflect
Dark side of the reflectDark side of the reflect
Dark side of the reflectsairoutine
 
マジック・ザ・ギャザリングの背景世界とストーリー
マジック・ザ・ギャザリングの背景世界とストーリーマジック・ザ・ギャザリングの背景世界とストーリー
マジック・ザ・ギャザリングの背景世界とストーリーsairoutine
 
flow による型のある世界入門
flow による型のある世界入門flow による型のある世界入門
flow による型のある世界入門sairoutine
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークsairoutine
 
Touhou Project on JavaScript
Touhou Project on JavaScriptTouhou Project on JavaScript
Touhou Project on JavaScriptsairoutine
 
JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話sairoutine
 
JS と Canvas で作るシューティングゲーム
JS と Canvas で作るシューティングゲームJS と Canvas で作るシューティングゲーム
JS と Canvas で作るシューティングゲームsairoutine
 
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をするSlack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をするsairoutine
 

Plus de sairoutine (10)

How to manage parameters for gacha games
How to manage parameters for gacha gamesHow to manage parameters for gacha games
How to manage parameters for gacha games
 
Dark side of the reflect
Dark side of the reflectDark side of the reflect
Dark side of the reflect
 
マジック・ザ・ギャザリングの背景世界とストーリー
マジック・ザ・ギャザリングの背景世界とストーリーマジック・ザ・ギャザリングの背景世界とストーリー
マジック・ザ・ギャザリングの背景世界とストーリー
 
em-dosbox
em-dosboxem-dosbox
em-dosbox
 
flow による型のある世界入門
flow による型のある世界入門flow による型のある世界入門
flow による型のある世界入門
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワーク
 
Touhou Project on JavaScript
Touhou Project on JavaScriptTouhou Project on JavaScript
Touhou Project on JavaScript
 
JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話
 
JS と Canvas で作るシューティングゲーム
JS と Canvas で作るシューティングゲームJS と Canvas で作るシューティングゲーム
JS と Canvas で作るシューティングゲーム
 
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をするSlack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
 

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

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