Submit Search
Upload
リソースのバージョン管理/運用の失敗談と改善策について
•
1 like
•
3,818 views
geechs inc. / geechs株式会社
Follow
リソースのバージョン管理を手動で行うことによる課題を、チェックサムを導入し自動化することで、解決した事例の紹介。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 33
Recommended
[120915] igda sig indie9
[120915] igda sig indie9
IGDA Japan
ほぼひとり情シスのJamfPro
ほぼひとり情シスのJamfPro
Ryo Yokokawa
「オルタンシア・サーガ」開発の裏側
「オルタンシア・サーガ」開発の裏側
geechs inc. / geechs株式会社
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
バックアップ勉強会#1 バックアップ基礎
バックアップ勉強会#1 バックアップ基礎
MKT International Inc.
20190523 IMC meetup-IMDG&DS
20190523 IMC meetup-IMDG&DS
Masaki Yamakawa
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
Katsutoshi Makino
Recommended
[120915] igda sig indie9
[120915] igda sig indie9
IGDA Japan
ほぼひとり情シスのJamfPro
ほぼひとり情シスのJamfPro
Ryo Yokokawa
「オルタンシア・サーガ」開発の裏側
「オルタンシア・サーガ」開発の裏側
geechs inc. / geechs株式会社
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
バックアップ勉強会#1 バックアップ基礎
バックアップ勉強会#1 バックアップ基礎
MKT International Inc.
20190523 IMC meetup-IMDG&DS
20190523 IMC meetup-IMDG&DS
Masaki Yamakawa
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
Katsutoshi Makino
Zマイスターとの新たな価値探求 Tivoli
Zマイスターとの新たな価値探求 Tivoli
IBMソリューション
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
OSgeo Japan
For Power BI Beginners
For Power BI Beginners
Tomoyuki Oota
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
TAKUYA OHTA
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
デブサミ2011 LT大会【17-E-7】appengine ja night
デブサミ2011 LT大会【17-E-7】appengine ja night
bluerabbit777jp
グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編
Mitsuhiro Tanda
Redmine Applied for Large Scale
Redmine Applied for Large Scale
Rakuten Group, Inc.
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごと
Insight Technology, Inc.
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
Manabu Shimobe
NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013
NetApp Japan
成功したチーム 失敗したチーム -F.O.X Meetup #3-
成功したチーム 失敗したチーム -F.O.X Meetup #3-
Noriaki Kadota
【Hpcstudy】みんな、ベンチマークどうやってるの?
【Hpcstudy】みんな、ベンチマークどうやってるの?
Seiichiro Ishida
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AzareaCluster
20120405 setsunaセミナー
20120405 setsunaセミナー
Takahiro Iwase
BIG DATA サービス と ツール
BIG DATA サービス と ツール
Ngoc Dao
Game Jamで Asset Serverを使ってみよう♪
Game Jamで Asset Serverを使ってみよう♪
Takashi Jona
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
leverages_event
アメーバブログを支えるデータセンターとインフラ技術
アメーバブログを支えるデータセンターとインフラ技術
Hiroki NAKASHIMA
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
エピック・ゲームズ・ジャパン Epic Games Japan
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
More Related Content
Similar to リソースのバージョン管理/運用の失敗談と改善策について
Zマイスターとの新たな価値探求 Tivoli
Zマイスターとの新たな価値探求 Tivoli
IBMソリューション
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
OSgeo Japan
For Power BI Beginners
For Power BI Beginners
Tomoyuki Oota
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
TAKUYA OHTA
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
デブサミ2011 LT大会【17-E-7】appengine ja night
デブサミ2011 LT大会【17-E-7】appengine ja night
bluerabbit777jp
グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編
Mitsuhiro Tanda
Redmine Applied for Large Scale
Redmine Applied for Large Scale
Rakuten Group, Inc.
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごと
Insight Technology, Inc.
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
Manabu Shimobe
NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013
NetApp Japan
成功したチーム 失敗したチーム -F.O.X Meetup #3-
成功したチーム 失敗したチーム -F.O.X Meetup #3-
Noriaki Kadota
【Hpcstudy】みんな、ベンチマークどうやってるの?
【Hpcstudy】みんな、ベンチマークどうやってるの?
Seiichiro Ishida
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AzareaCluster
20120405 setsunaセミナー
20120405 setsunaセミナー
Takahiro Iwase
BIG DATA サービス と ツール
BIG DATA サービス と ツール
Ngoc Dao
Game Jamで Asset Serverを使ってみよう♪
Game Jamで Asset Serverを使ってみよう♪
Takashi Jona
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
leverages_event
アメーバブログを支えるデータセンターとインフラ技術
アメーバブログを支えるデータセンターとインフラ技術
Hiroki NAKASHIMA
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
エピック・ゲームズ・ジャパン Epic Games Japan
Similar to リソースのバージョン管理/運用の失敗談と改善策について
(20)
Zマイスターとの新たな価値探求 Tivoli
Zマイスターとの新たな価値探求 Tivoli
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
For Power BI Beginners
For Power BI Beginners
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
デブサミ2011 LT大会【17-E-7】appengine ja night
デブサミ2011 LT大会【17-E-7】appengine ja night
グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編
Redmine Applied for Large Scale
Redmine Applied for Large Scale
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごと
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013
成功したチーム 失敗したチーム -F.O.X Meetup #3-
成功したチーム 失敗したチーム -F.O.X Meetup #3-
【Hpcstudy】みんな、ベンチマークどうやってるの?
【Hpcstudy】みんな、ベンチマークどうやってるの?
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)
20120405 setsunaセミナー
20120405 setsunaセミナー
BIG DATA サービス と ツール
BIG DATA サービス と ツール
Game Jamで Asset Serverを使ってみよう♪
Game Jamで Asset Serverを使ってみよう♪
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
アメーバブログを支えるデータセンターとインフラ技術
アメーバブログを支えるデータセンターとインフラ技術
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
Recently uploaded
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Recently uploaded
(11)
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
リソースのバージョン管理/運用の失敗談と改善策について
1.
Tech Valley #7 Atsuyuki
Nakanishi リソースのバージョン管理/運用の 失敗談と改善策について
2.
About Me ギークス ゲーム事業本部 開発1部 部長 中西
敦之 Atsuyuki Nakanishi html/css/javascript/php/Unity
3.
リソース 画像/楽曲/動画等の素材データ=
4.
なぜバージョン管理が必要か?
5.
リソースバージョン管理の必要性 downloading IMG スマホゲームではリソースをDLし、 ローカルにキャッシュするのが一般的 (表示速度向上/通信量削減) ダウンロード&キャッシュ MP3
6.
約3000リソース 1アプリのリソース数
7.
リソースバージョン管理の必要性 リソース更新した場合、どうするの? ↓ 再取得のトリガーが必要 ↓ バージョン管理 (キャッシュのリソースが古いか判断)
8.
旧バージョン管理 (失敗談)
9.
管理手法 〜旧バージョン管理〜 各関係マスターにversion情報を持たせる (手動で更新…) chara_id name
… image_version 1 キャラA 1 2 キャラB 3 3 キャラC 1 m_chara
10.
フロント 〜旧バージョン管理〜 キャッシュ時に ファイル名にバージョンを付けて保存 ex) chara_0002_s_3.png リソース取得時に 最新バージョンのファイル名が キャッシュに無ければサーバーから取得
11.
デメリット
12.
デメリット 〜旧バージョン管理〜 【1】version情報が拡散 m_chara, m_music,
m_band… 各々のバージョンがそれぞれのマスターに リソース更新時に どのバージョンを上げればよいか…迷走...
13.
デメリット 〜旧バージョン管理〜 【2】各マスター毎にトリガーを開発 各マスター毎にバージョン管理されているため、 どのマスターのバージョンを見るか個別開発
14.
デメリット 〜旧バージョン管理〜 【3】同versionに紐づくリソースが複数 chara_0001_s.png, chara_0001_l.png ⇒
片方のみ更新でも両方更新扱いになる (同じversionを見ているため)
15.
デメリット 〜旧バージョン管理〜 【4】マスターが無いリソースが面倒 お知らせのバナー等マスター管理されていない リソースはバージョン更新が出来ないため、 リソース名を変えるしか無い
16.
デメリット 〜旧バージョン管理〜 【5】version管理が手動 ・更新漏れ等が発生 ・不要なバージョン上げてしまったり
17.
デメリット 〜旧バージョン管理〜 なんだかとにかく大変。 メンテナンスも拡張も大変。
18.
改善策Ⅰ バージョン管理を一つのテーブル にまとめよう
19.
改善策Ⅰ 全リソースのversionを管理するテーブルを作成 resource_name ... …
version images/chara_0001_s.png 1 images/chara_0002_s.png 2 music/music_0001.mp3 1 m_resource
20.
改善策Ⅰ 【1】 version管理が拡散 【2】 各マスター毎にトリガーを開発 【3】
同versionに紐づくリソースが複数 【4】 マスターが無いリソースが面倒 ↓ 解決
21.
改善策Ⅰ しかし、 大量にレコードがあるマスターを 手動で更新するのは手間すぎる
22.
うーん。 バージョンの概念を無くしたい… (考えたくない)
23.
キャッシュのリソース と 最新のリソース が 違うことが分かれば良い
24.
改善策Ⅱ チェックサムを使う
25.
チェックサム MD5チェックサム ダウンロードしたソフトウェアが改ざんされていない ことや壊れていないことを確認するのに利用 MD5 128ビットのハッシュ値を取得 (32桁の16進数、340京通り)
26.
管理手法 〜改善策Ⅱ〜 全リソースのmd5を管理するテーブルを作成 resource_name …
… md5_value images/chara_0001_s.png d41d8cd98f00b204e9800998ecf8427e images/chara_0002_s.png 9800998ecf8427ed41d8cd98f00b204e music/music_0001.mp3 d41d8cd98f00b204e9800998ecf8427e m_resource
27.
更新手法 〜改善策Ⅱ 〜 【1】開発サーバーにリソースをアップ リソース配信用の特定フォルダ配下に リソースをアップロード 【2】管理画面からボタンをポチリ 特定フォルダ配下のファイルを MD5チェック&m_resourceを更新
28.
フロント 〜改善策Ⅱ 〜 リソース取得時 md5値が異なる
⇒ リソースを更新
29.
フロント 〜改善策Ⅱ 〜 アプリ起動時に キャッシュフォルダにある全リソースのmd5値を 非同期でチェック&保持しておく ※
md5値取得に多少時間がかかるため
30.
フロント 〜改善策Ⅱ〜 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(); }
31.
まとめ 〜改善策Ⅱ 〜 【1】
version管理が拡散 【2】 各マスター毎にトリガーを開発 【3】 同versionに紐づくリソースが複数 【4】 マスターが無いリソースが面倒 【5】 version管理が手動 ↓ 解決
32.
まとめ 〜改善策Ⅱ 〜 さらに DL時にデータ破損チェックも可
33.
余談 m_resourceの活用 dl_point, must_flg等のカラムを追加により 指定したタイミングでリソースDLが可能 ex) *アプリインストール直後にDL *チュートリアル突破直後にDL *BGM等,常に最新を落としたいのはmust_flg
Editor's Notes
アイドリッシュセブン:2897 SB69:4000超え
例) 通常のクエストで、背景が切りかる機能 イベントのクエストで背景が切り替わる機能 があった場合、イベント情報のマスターで管理しているのか、クエストのマスターで管理しているか 100マスターくらい存在する中、 どのマスターを変更すればよいか、わかりづらくなることがある
最新バージョンのファイル名がキャッシュに無ければサーバーから取得 ★最新バージョンって?★
ファイルデータを所定の計算にくわせて出てくる固定長の値少しでもデータが異なると、値が変わる