Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SINoALICE -シノアリス- グローバル版、全139ヵ国リリースへの道のり
Search
gree_tech
PRO
September 18, 2020
Technology
0
730
SINoALICE -シノアリス- グローバル版、全139ヵ国リリースへの道のり
GREE Tech Conference 2020 で発表された資料です。
https://techcon.gree.jp/2020/session/Session-8
gree_tech
PRO
September 18, 2020
Tweet
Share
More Decks by gree_tech
See All by gree_tech
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
2.3k
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
26
今この時代に技術とどう向き合うべきか
gree_tech
PRO
3
2.4k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
150
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
150
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
1
1.5k
あうもんと学ぶGenAIOps
gree_tech
PRO
0
270
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
290
機械学習・生成AIが拓く事業価値創出の最前線
gree_tech
PRO
0
210
Other Decks in Technology
See All in Technology
2025年 開発生産「可能」性向上報告 サイロ解消からチームが能動性を獲得するまで/ 20251216 Naoki Takahashi
shift_evolve
PRO
1
200
チーリンについて
hirotomotaguchi
6
2k
Lessons from Migrating to OpenSearch: Shard Design, Log Ingestion, and UI Decisions
sansantech
PRO
1
140
今からでも間に合う!速習Devin入門とその活用方法
ismk
1
750
[CMU-DB-2025FALL] Apache Fluss - A Streaming Storage for Real-Time Lakehouse
jark
0
120
コミューンのデータ分析AIエージェント「Community Sage」の紹介
fufufukakaka
0
510
ディメンショナルモデリングを支えるData Vaultについて
10xinc
1
100
「図面」から「法則」へ 〜メタ視点で読み解く現代のソフトウェアアーキテクチャ〜
scova0731
0
310
生成AI活用の型ハンズオン〜顧客課題起点で設計する7つのステップ
yushin_n
0
230
AWS re:Invent 2025で見たGrafana最新機能の紹介
hamadakoji
0
400
SREには開発組織全体で向き合う
koh_naga
0
360
AIの長期記憶と短期記憶の違いについてAgentCoreを例に深掘ってみた
yakumo
4
400
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
390
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Building Adaptive Systems
keathley
44
2.9k
What's in a price? How to price your products and services
michaelherold
246
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Transcript
SINoALICE -シノアリス- グローバル版 全139ヵ国リリースへの道のり 株式会社ポケラボ エンジニアマネージャー 覚張 泰幸
覚張 泰幸 (Yasuyuki Kakuhari) 『SINoALICE -シノアリス-』エンジニア統括として立ち上げから参画 現在は同タイトルのグローバル版のエンジニア統括を担当している • [2013年リリース] 戦乱のサムライキングダム
• [未リリース] 新規アクションRPG • [2017年リリース] SINoALICE -シノアリス- • [2020年リリース] SINoALICE -シノアリス- (グローバル版) 2013年 株式会社ポケラボ 入社 登壇者の紹介 2
https://pokelabo.co.jp/ 株式会社ポケラボの紹介 3
https://sinoalice.jp/ SINoALICE -シノアリス-の紹介 4 (c) 2017-2020 SQUARE ENIX CO., LTD.
All Rights Reserved.
https://sinoalice.global/ SINoALICE -シノアリス- (グローバル版)の紹介 5 (c) 2017-2020 SQUARE ENIX CO.,
LTD. All Rights Reserved.
GREE Tech Conferenceで初公開!! CEDEC等ではシノアリスの色々なグラフを中心に紹介して来たが、GREE Tech Conferenceでは実装事例, ノウハウを紹介 勿論コレらの内容はGREE Tech Conferenceでしか聞けない!!
全139ヵ国リリースへの道のり 6
グローバル版って何?? • localize周りの考慮も入っていなければ、ソースコード上に日本語がベタベタで入っ ている箇所も多数.. 開発時のシノアリスの予算ってx億円だった気が.. • 海外に展開出来る様なアーキテクチャを想定していない • 地球って77億人くらいいるんでしたっけ... (2020年調べ)
ポケラボ自社Pub海外、負け続けている歴史..!! • 海外パブリッシャーとの協業はナレッジがあるが、自社Pubは... そもそも.. 7
【サーバー (PHP) 編】 S-1. 前代未聞の139ヵ国, 7言語対応!! S-2. ワールド分割関連, レイテンシ関連 S-3.
localize処理 S-4. 負荷対策関連コードの移植 / 実装 全139ヵ国リリースへの道のり (Index) 8
【クライアント (Unity) 編】 C-1. クライアント側の対応 C-2. 全世界共通バイナリでの実現 C-3. localize処理 C-4.
負荷対策関連コードの移植 / 実装 全139ヵ国リリースへの道のり (Index) 9
【other (その他) 編】 O-1. 人周り O-2. シノアリス国内で踏み切れなかったコト O-3. プラットフォーム審査対応 O-4.
海外版ならではの不具合 全139ヵ国リリースへの道のり (Index) 10
Server 11 サーバー (PHP) 編
アイスランド アイルランド アゼルバイジャンアメリカ合衆国 アラブ首長国連邦 アルジェリア アルゼンチン アルバ アルバニア アルメニア アンゴラアンティグア・バーブーダ
イエメン イギリス イスラエル イタリア イラク イラン インド インドネシア ウガンダ ウクライナ ウズベキスタン ウルグアイ エクアドル エジプト エストニア エルサルバドル オーストラリア オーストリア オマーンオランダ オランダ領アンティル ガーナ カーボベルデ カザフスタン カナダ ガボン カメルーン カンボジア ギニアビサウ キプロスキューバ ギリシャ キルギス グアテマラ クウェート グルジア クロアチア ケイマン諸島 ケニア コートジボワールコスタリカ コロンビア ザンビア ジャマイカ シンガポール ジンバブエ スイス スウェーデン スーダンスペインスリランカ スロバキア スロベニア セネガル セルビアソロモン諸島 タークス・カイコス諸島 タイ タジキスタン タンザニア チェコ共和国 チュニジア チリ デンマーク ドイツ トーゴ ドミニカ共和国 トリニダード・トバゴ トルクメニスタン トルコ ナイジェリア ナミビア ニジェール ニュージーランド ネパール ノルウェー バーレーン ハイチ パキスタン パナマ バハマ パプアニューギニア バミューダ パラグアイ ハンガリー バングラデシュ フィジー フィリピン フィンランド ブラジルフランス ブルガリア ブルキナファソ ベナン ベネズエラ ベラルーシ ベリーズペルー ポーランド ボスニア・ヘルツェゴビナ ボツワナ ボリビアポルトガル ホンジュラス マケドニア マリ マルタ マレーシア ミャンマー メキシコ モーリシャス モザンビーク モルドバモロッコ ヨルダンラオス ラトビア リトアニア リヒテンシュタイン ルーマニア ルクセンブルグ ルワンダ レバノン ロシア 英領ヴァージン諸島 大韓民国 南アフリカ 英語 ドイツ語 スペイン語 フランス語 韓国語 タイ語 (日本語) S-1. 前代未聞の139ヵ国, 7言語対応!! 12
139ヵ国分の価格設定 • Appleはtierを指定するだけなので、まぁ国内他アプリと変わらず • Googleは価格テンプレートと言う機能がある物の、使い物にならない!! 価格テンプレートのエクスポート, インポート機能がない!! 商品から価格テンプレートに移行させる際、税抜き, 税込みで価格がずれる!! 為替から入力する機能もあるが、Appleと価格を揃えなければならない!!
S-1. 前代未聞の139ヵ国, 7言語対応!! 13
6言語分のゲーム訴求画像作成 • Googleはどんな画像を突っ込んでもよしなにリサイズしてくれる • Appleは厳密に画像サイズが定義されており、最低3サイズのスクショを用意しない とならない 1言語5枚 * 6言語 *
3サイズ = 90枚 のゲーム訴求画像.. S-1. 前代未聞の139ヵ国, 7言語対応!! 14 2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
139ヵ国分の価格設定 • 事前に通貨とtierの対応表を全て作成し、個別インポートにて対応!! • パッと見一番遠回りな感じがあるが、一番近道 6言語分のゲーム訴求画像作成 ・UnityのEditor拡張を使いながら作成!! (GameViewの中身だけを保存) ・解像度の高いモニタが自宅にない為、MacBook Pro
16inchを90度回転して対 応..!! S-1. 前代未聞の139ヵ国, 7言語対応!! 15
利用規約, 法律問題 • 国によって細かい部分が異なる • 諸々出し分けられる様に改修 S-1. 前代未聞の139ヵ国, 7言語対応!! 16
2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
レイテンシを考慮し、2ワールドでの展開 • アジアパシフィック シンガポールリージョン (ap-southeast-1) • アメリカ / EU オハイオリージョン
(us-east-2) S-2. ワールド分割関連, レイテンシ関連 17 2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
リリース前に各国の拠点から接続試験 • 本来ならば直接出向きたかった所だが、昨今のコロナ事情もあり外部の協力会社様 に依頼 現地の担当と綿密な連携を行い、動作を担保 S-2. ワールド分割関連, レイテンシ関連 18
綿密な連携 • 海外時間に合わせて接続確認を行う為、現地時間に合わせて徹 夜での対応 紅蓮魂 : i am pokelabo engineer
!! S-2. ワールド分割関連, レイテンシ関連 19 2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
localize専用のMstを作成し、データを翻訳 • 全ての翻訳を司るMstを作成 tableName : テーブル名 tablecolumn : カラム名 JP
: 日本語 EN : 英語 KR : 韓国語 DE : ドイツ語 FR : フランス語 ES : スペイン語 TH : タイ語 S-3. localize処理 20
テーブル名 (tableName), カラム名 (TableColumn), JPを予め抽出, 入力し、翻訳 者に各言語の翻訳を依頼 JPが同じであっても、テーブル名, カラム名が異なる場合は個別に翻訳を行う tableNameは同一だが、tableColumnが異なるの
で別レコード S-3. localize処理 21
スクリプトで翻訳テーブルを作成 saffixに[_言語]を統一で入れ、tableを 作成 CardMst_EN SkillMst_KR CharacterMst_FR and more... S-3. localize処理
22
メリット: • 翻訳情報の一元管理が出来る 翻訳者が各々のMstを意識する必要がない • unique制約により、重複した翻訳を防ぐコトが出来る 用語の統一 • C-3. localize処理で詳細を後述するが、クライアント側の実装が楽
& パフォーマ ンス面で優位 クラアントはあくまでもビューワー 予め翻訳済みのデータでやり取りを行う為、余計なオーバーヘッドが発生しない S-3. localize処理 23
Ver29.2で対応出来ていない負荷対策コードを移植 • 2年分の負荷対策コードをガンガン入れ込み シノアリス国内は3月時点でVer59.0の開発中であり、差分が大量にあった 元々同じソースコードなので、ガンガン入れ込み • リリース後に手を入れられなかった部分を修正 シノアリス海外はリリース前なので、ずっと手を入れたいと思っていたコードの修正が 容易
シノアリス国内でボトルネックとなっている部分を改修 S-4. 負荷対策関連コードの移植 / 実装 24
負荷試験 シノアリス国内リリース規模 (100万DAU) を凌ぐべく、現状の負荷から目標値を定 義 internal 目標RPS : 22,569 external
目標PRS : 31,801 シノアリス国内の実績があるので、より良い数値が出れば担保出来る!! S-4. 負荷対策関連コードの移植 / 実装 25
シノアリス国内でボトルネックになっており、今回対応を入れた箇所の一例 • sharding対応 キャラクターデータ • 非正規化 データが取り難い箇所の非正規化 S-4. 負荷対策関連コードの移植 /
実装 26
シノアリス国内とのグラフ差 S-4. 負荷対策関連コードの移植 / 実装 27 2020/06/25 シノアリス国内ニーアコラボ復刻時 sys_load (RDS)
シノアリス国内とのグラフ差 S-4. 負荷対策関連コードの移植 / 実装 28 2020/07/16 シノアリス海外ニーアコラボ時 sys_load (RDS)
Client 29 クライアント (Unity) 編
クライアント埋め込み文字 埋め込まれた場所の抽出 & 管理番号の付与 & Best Fitを入れる作業 C-1. クライアント側の対応 30
2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
139ヵ国同時パブリッシュ 日本, 繁体字, 簡体字を除く共通バイナリを実現 故にシノアリスに関しては全4つのバイナリが存在 ※簡体字未リリース (2020-09現在) C-2. 全世界共通バイナリでの実現 31
大まかな対応項目 (他にもあるけど) • 国毎の個別対応 GDPR対応, GRAC対応, PEGI対応, 倫理対応.. • 言語
(画像, 翻訳) 日本語が含まれる全ての表示項目が該当 • 時間 地域時間での表示に対応!! (一律UTC+0, UTC+0900にせず) C-2. 全世界共通バイナリでの実現 32
サーバー側で翻訳処理を行っている為、驚 異の作業なし!! ※正確にはTextFieldに対し、翻訳文字列の長さ 調整 (タイ語長い!!) 等の作業は発生するが、基本 的に何もしなくても動く ※Unity側はあくまでもマスタから読み込んで表示 のみを行っており、言語の違いを意識しない S-3.
localize処理で紹介したマスタデータを伴う翻訳 C-3. localize処理 33 2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
各TextFieldに対し管理番号を割り当て、 Object生成時に翻訳を行う ※UnityTextMst的なマスター情報をサーバーから DLし、それを元に翻訳を実施 ※ゲーム内で利用するMstと同じ属性を持たせてい る為、変更があった時のみDLを行う & 変更に強い (後述) ※C#のDictionary型に詰め込み、onMemory
から読み込む Unity側だけで利用する固定文字列による翻訳 C-3. localize処理 34 2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
言語の選択 ≒ 言語Mstの選択 と言う概念。 DLする言語Mstの切り替え C-3. localize処理 35 2017-2020 Pokelabo
Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
全てMst DLする言語Mstの切り替え C-3. localize処理 36 2017-2020 Pokelabo Inc./SQUARE ENIX CO.,
LTD. All Rights Reserved.
クライアント側で時間の判定を誤ってしま い、修正する為にはクライアント側のアップ デートが必要... 謎の時間表記でユーザー様は大混乱.. ※時間のコンバート処理が漏れ、JSTで表記されてし まっている状態 ※通常は端末のロケーションに沿った現地時間が表 示される実装 変更に強い C-3.
localize処理 37 2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
(UTC+9) を表記するコトで回避..!! ※全ての文字列はUnity外で管理されているので、 バイナリ変更なしで差し替えが可能 ※当然ですが、後日端末のロケーションに沿った現地 時間が表示される様に修正 変更に強い C-3. localize処理 38
2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
シノアリス国内で実装した チューニングコードを移植 移植 C-4. 負荷対策関連コードの移植 / 実装 39 2017-2020 Pokelabo
Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
Other 40 other (その他) 編
O-1. 人周り 41 とは言えシノアリス国内最優先!! 今やグリーグループの旗艦タイトルであるシノアリス国内の運営に支障が出てはなら ない シノアリス国内からの人員異動は僅か3名!! ナレッジの共有体制 スケジュールがタイトかつ人員が限られている案件であった為、メンバー全てが同じ 粒度で物事を話せる状態を構築
(特にクライアント側) プランナーにもJenkins経由での作業移譲を積極的に行い、協力体制を構築
O-2. シノアリス国内で踏み切れなかったコト 42 長年直せなかったtypo修正 quest (モノガタリに関連するテーブル) がqeustになっているとても気持ち悪い問 題の修正 シノアリス国内は今もqeustでガンバってます..!! 念願の.NETのupdate
シノアリス国内は運用中と言うコトも有り.NET 3.5を利用し続けているが、今回新規 タイトルなので、.NET4.xを採用 脱Legacy..!!
O-3. プラットフォーム審査対応 43 審査対応 Androidフィーチャー獲得の為、完璧な翻訳 & 完璧な動作を早々に求められる (c) 2017-2020 SQUARE
ENIX CO., LTD. All Rights Reserved.
O-4. 海外版ならではの不具合 44 あるあるな不具合 外国語読めない問題が引き起こす翻訳ミス 2017-2020 Pokelabo Inc./SQUARE ENIX CO.,
LTD. All Rights Reserved.
海外展開を全く考慮していない状態からでも、何とかなる • 当たり前の発想を少し変えるだけで、意外と何とかなったりする • 「出来ない理由を考える」より「出来る方法を考える」方が、楽しいし何とかなる localizeの手法は様々なので、localizeを諦めている会社さんもノリと勢いで一回検討し てみてはどうだろうか?? • 海外に日本のGameを発信しよう!! •
相談乗りますよ^ー^ まとめ 45
Happy Hacking !! 46
47