SlideShare a Scribd company logo
Tech Valley #7
Atsuyuki Nakanishi
リソースのバージョン管理/運用の
失敗談と改善策について
About Me
ギークス
ゲーム事業本部
開発1部 部長
中西 敦之
Atsuyuki Nakanishi
html/css/javascript/php/Unity
リソース
画像/楽曲/動画等の素材データ=
なぜバージョン管理が必要か?
リソースバージョン管理の必要性
downloading
IMG
スマホゲームではリソースをDLし、
ローカルにキャッシュするのが一般的
(表示速度向上/通信量削減)
ダウンロード&キャッシュ
MP3
約3000リソース
1アプリのリソース数
リソースバージョン管理の必要性
リソース更新した場合、どうするの?
↓
再取得のトリガーが必要
↓
バージョン管理
(キャッシュのリソースが古いか判断)
旧バージョン管理
(失敗談)
管理手法 〜旧バージョン管理〜
各関係マスターにversion情報を持たせる
(手動で更新…)
chara_id name … image_version
1 キャラA 1
2 キャラB 3
3 キャラC 1
m_chara
フロント 〜旧バージョン管理〜
キャッシュ時に
ファイル名にバージョンを付けて保存
ex) chara_0002_s_3.png
リソース取得時に
最新バージョンのファイル名が
キャッシュに無ければサーバーから取得
デメリット
デメリット 〜旧バージョン管理〜
【1】version情報が拡散
m_chara, m_music, m_band…
各々のバージョンがそれぞれのマスターに
リソース更新時に
どのバージョンを上げればよいか…迷走...
デメリット 〜旧バージョン管理〜
【2】各マスター毎にトリガーを開発
各マスター毎にバージョン管理されているため、
どのマスターのバージョンを見るか個別開発
デメリット 〜旧バージョン管理〜
【3】同versionに紐づくリソースが複数
chara_0001_s.png, chara_0001_l.png
⇒ 片方のみ更新でも両方更新扱いになる
(同じversionを見ているため)
デメリット 〜旧バージョン管理〜
【4】マスターが無いリソースが面倒
お知らせのバナー等マスター管理されていない
リソースはバージョン更新が出来ないため、
リソース名を変えるしか無い
デメリット 〜旧バージョン管理〜
【5】version管理が手動
・更新漏れ等が発生
・不要なバージョン上げてしまったり
デメリット 〜旧バージョン管理〜
なんだかとにかく大変。
メンテナンスも拡張も大変。
改善策Ⅰ
バージョン管理を一つのテーブル
にまとめよう
改善策Ⅰ
全リソースのversionを管理するテーブルを作成
resource_name ... … version
images/chara_0001_s.png 1
images/chara_0002_s.png 2
music/music_0001.mp3 1
m_resource
改善策Ⅰ
【1】 version管理が拡散
【2】 各マスター毎にトリガーを開発
【3】 同versionに紐づくリソースが複数
【4】 マスターが無いリソースが面倒
↓
解決
改善策Ⅰ
しかし、
大量にレコードがあるマスターを
手動で更新するのは手間すぎる
うーん。
バージョンの概念を無くしたい…
(考えたくない)
キャッシュのリソース
と
最新のリソース
が
違うことが分かれば良い
改善策Ⅱ
チェックサムを使う
チェックサム
MD5チェックサム
ダウンロードしたソフトウェアが改ざんされていない
ことや壊れていないことを確認するのに利用
MD5
128ビットのハッシュ値を取得
(32桁の16進数、340京通り)
管理手法 〜改善策Ⅱ〜
全リソースのmd5を管理するテーブルを作成
resource_name … … md5_value
images/chara_0001_s.png d41d8cd98f00b204e9800998ecf8427e
images/chara_0002_s.png 9800998ecf8427ed41d8cd98f00b204e
music/music_0001.mp3 d41d8cd98f00b204e9800998ecf8427e
m_resource
更新手法 〜改善策Ⅱ 〜
【1】開発サーバーにリソースをアップ
リソース配信用の特定フォルダ配下に
リソースをアップロード
【2】管理画面からボタンをポチリ
特定フォルダ配下のファイルを
MD5チェック&m_resourceを更新
フロント 〜改善策Ⅱ 〜
リソース取得時
md5値が異なる ⇒ リソースを更新
フロント 〜改善策Ⅱ 〜
アプリ起動時に
キャッシュフォルダにある全リソースのmd5値を
非同期でチェック&保持しておく
※ md5値取得に多少時間がかかるため
フロント 〜改善策Ⅱ〜
C#でのmd5取得
using System.Security.Cryptography;
using System.Text;
string GetMD5Value(byte[] bytes) {
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] bs = md5.ComputeHash(bytes);
StringBuilder result = new StringBuilder();
foreach (byte b in bs){
result.Append(b.ToString("x2"));
}
return result.ToString();
}
まとめ 〜改善策Ⅱ 〜
【1】 version管理が拡散
【2】 各マスター毎にトリガーを開発
【3】 同versionに紐づくリソースが複数
【4】 マスターが無いリソースが面倒
【5】 version管理が手動
↓
解決
まとめ 〜改善策Ⅱ 〜
さらに
DL時にデータ破損チェックも可
余談
m_resourceの活用
dl_point, must_flg等のカラムを追加により
指定したタイミングでリソースDLが可能
ex)
*アプリインストール直後にDL
*チュートリアル突破直後にDL
*BGM等,常に最新を落としたいのはmust_flg

More Related Content

Similar to リソースのバージョン管理/運用の失敗談と改善策について

Zマイスターとの新たな価値探求 Tivoli
Zマイスターとの新たな価値探求 TivoliZマイスターとの新たな価値探求 Tivoli
Zマイスターとの新たな価値探求 Tivoli
IBMソリューション
 
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)OSgeo Japan
 
For Power BI Beginners
For Power BI BeginnersFor Power BI Beginners
For Power BI Beginners
Tomoyuki Oota
 
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
TAKUYA OHTA
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
 
デブサミ2011 LT大会【17-E-7】appengine ja night
デブサミ2011 LT大会【17-E-7】appengine ja nightデブサミ2011 LT大会【17-E-7】appengine ja night
デブサミ2011 LT大会【17-E-7】appengine ja night
bluerabbit777jp
 
グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編
Mitsuhiro Tanda
 
Redmine Applied for Large Scale
Redmine Applied  for Large ScaleRedmine Applied  for Large Scale
Redmine Applied for Large Scale
Rakuten Group, Inc.
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごと
Insight Technology, Inc.
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
Manabu Shimobe
 
NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013
NetApp Japan
 
成功したチーム 失敗したチーム -F.O.X Meetup #3-
成功したチーム 失敗したチーム -F.O.X Meetup #3-成功したチーム 失敗したチーム -F.O.X Meetup #3-
成功したチーム 失敗したチーム -F.O.X Meetup #3-
Noriaki Kadota
 
【Hpcstudy】みんな、ベンチマークどうやってるの?
【Hpcstudy】みんな、ベンチマークどうやってるの?【Hpcstudy】みんな、ベンチマークどうやってるの?
【Hpcstudy】みんな、ベンチマークどうやってるの?
Seiichiro Ishida
 
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AzareaCluster
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
Takahiro Iwase
 
BIG DATA サービス と ツール
BIG DATA サービス と ツールBIG DATA サービス と ツール
BIG DATA サービス と ツール
Ngoc Dao
 
Game Jamで Asset Serverを使ってみよう♪
Game Jamで Asset Serverを使ってみよう♪Game Jamで Asset Serverを使ってみよう♪
Game Jamで Asset Serverを使ってみよう♪
Takashi Jona
 
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!leverages_event
 
アメーバブログを支えるデータセンターとインフラ技術
アメーバブログを支えるデータセンターとインフラ技術 アメーバブログを支えるデータセンターとインフラ技術
アメーバブログを支えるデータセンターとインフラ技術
Hiroki NAKASHIMA
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
エピック・ゲームズ・ジャパン Epic Games Japan
 

Similar to リソースのバージョン管理/運用の失敗談と改善策について (20)

Zマイスターとの新たな価値探求 Tivoli
Zマイスターとの新たな価値探求 TivoliZマイスターとの新たな価値探求 Tivoli
Zマイスターとの新たな価値探求 Tivoli
 
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
 
For Power BI Beginners
For Power BI BeginnersFor Power BI Beginners
For Power BI Beginners
 
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
デブサミ2011 LT大会【17-E-7】appengine ja night
デブサミ2011 LT大会【17-E-7】appengine ja nightデブサミ2011 LT大会【17-E-7】appengine ja night
デブサミ2011 LT大会【17-E-7】appengine ja night
 
グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編
 
Redmine Applied for Large Scale
Redmine Applied  for Large ScaleRedmine Applied  for Large Scale
Redmine Applied for Large Scale
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごと
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
 
NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013
 
成功したチーム 失敗したチーム -F.O.X Meetup #3-
成功したチーム 失敗したチーム -F.O.X Meetup #3-成功したチーム 失敗したチーム -F.O.X Meetup #3-
成功したチーム 失敗したチーム -F.O.X Meetup #3-
 
【Hpcstudy】みんな、ベンチマークどうやってるの?
【Hpcstudy】みんな、ベンチマークどうやってるの?【Hpcstudy】みんな、ベンチマークどうやってるの?
【Hpcstudy】みんな、ベンチマークどうやってるの?
 
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
 
BIG DATA サービス と ツール
BIG DATA サービス と ツールBIG DATA サービス と ツール
BIG DATA サービス と ツール
 
Game Jamで Asset Serverを使ってみよう♪
Game Jamで Asset Serverを使ってみよう♪Game Jamで Asset Serverを使ってみよう♪
Game Jamで Asset Serverを使ってみよう♪
 
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
 
アメーバブログを支えるデータセンターとインフラ技術
アメーバブログを支えるデータセンターとインフラ技術 アメーバブログを支えるデータセンターとインフラ技術
アメーバブログを支えるデータセンターとインフラ技術
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
 

Recently uploaded

キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 

Recently uploaded (9)

キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 

リソースのバージョン管理/運用の失敗談と改善策について

Editor's Notes

  1. アイドリッシュセブン:2897 SB69:4000超え
  2. 例) 通常のクエストで、背景が切りかる機能 イベントのクエストで背景が切り替わる機能 があった場合、イベント情報のマスターで管理しているのか、クエストのマスターで管理しているか 100マスターくらい存在する中、 どのマスターを変更すればよいか、わかりづらくなることがある
  3. 最新バージョンのファイル名がキャッシュに無ければサーバーから取得 ★最新バージョンって?★
  4. ファイルデータを所定の計算にくわせて出てくる固定長の値少しでもデータが異なると、値が変わる