SlideShare a Scribd company logo
Unity に於ける
Localization のおはなし
2014.05.30 (Fri) / Unity 勉強会 vol.21
株式会社キッズスター
システムデベロプメントチーム リーダー
森 哲哉
こんばんは!
Good evening !
Guten Abend !
Bonsoir !
上好!
Bonan vesperon !
と、いうわけで
Localization の

おはなしです。
自己紹介
$ whoami
• 森 哲哉 と申します。
• a.k.a: もんりぃ / T: @monry / F: monry84
• 29歳 / ♂ / O型 / 天 座 / 既婚
• 趣味は「お酒」と「合唱」です。
$ whoami
• 大学を (自主的に) 卒業後、ベンチャーを転々。
• Web のフロントエンド、サーバサイドが得意。
• ようやく Unity 歴 1 年になりました。
• AWS とキャッキャウフフするのも好きです。
• 最近は社内インフラも やらされ… やってます。
$ jobs
• 株式会社キッズスター って会社で働いてます。
• 未就学児∼小学生のお子さまをお持ちの

ファミリーをターゲットにした、知育/教育に

関わるアプリ・サービスを展開しております。
• お陰様で EdTech な知育分野に於いて

No.1 規模で展開しております!(当社調べw)
$ ls -la apps/
森のえほん館 なりきり!!
ごっこランド
パズル&テイルズ

おかしのくにを
つくるのじゃ!!
なりきり!!
アイスクリーム
屋さんごっこ
なりきり!!
ママごっこ
お弁当をつくろう!
こえほん おかしの家を
つくろう!
ハンバーガー
やさんごっこ
飛行機を
組み立てよう!
i18n i18n
i18n i18n
前置き
環境
• Unity: 4.3.4f1
• Platform: iOS, Android
• Development: Mac, Windows
• Dimension: (主に) 2D
• Language: C#
L10n? i18n? G11n?
• スライドタイトルに Localization (L10n) って

書いてあるけど…。
• 多少 Internationalization (i18n) に

絡んだ話もします。
• スライドタイトルを Globalization (G11n) に

しとけば良かった…(́・ω・`)
対応可能範囲
• 2014年05月現在、弊社が対応したコトのある
L10n はアメリカ英語のみとなります。
• 本スライドの内容だけでは、イギリス英語や

中国語の出し分け (簡体字/繁体字) などは

難しいんじゃないかと思ってます。
• 方法あったらおせーてくださいw
言い訳
• 本スライドで、ちょいちょい英語使ってます。
• セッションの内容に絡むから、ね。
• まぁ、要するに格好付けてるだけですが。ええ。
• が、 @monry は非常に英語が苦手ですっ!(キリッ
• 高校の時は常に 5 段階評価で 2 でした。(́;ω;`)
• 故に、文法おかしかったりするかもですが、

その辺はご愛敬ってコトで!!!
Localization の基本
What should I do?
• テキストの L10n
• 画像・音声などのバイナリの L10n
• サーバサイドの L10n
• App Store, Google Play の L10n
未 L10n 環境
• アプリの特性にも依存するが、基本的に

英語をデフォルトとしておくと良さそう。
• とは言え、英語翻訳すら出来ていない段階で

英語デフォは結構微妙。

海外のストアに出してないなら、まだ良いが。
• 理想は、英語の L10n が完了した時点で

デフォルト言語を変更出来るような仕組みを

予め作っておく。
時差
• リテンション施策として、 PUSH 通知

(APNs/GCM) が濫用されている昨今。
• デベロッパ視点では便利な機能なんだけど、

夜中に送ろうもんなら

「通知がウザいです。☆1」

ってな感じに置き土産付きでアンインストール

されるのがオチです。
• ちゃんと時差を考慮した設計にしましょう。
リソースサイズ
• バイナリファイルのサイズがネックになる。
• アプリ組み込み型でもダウンロード型でも。
• 個人的には全言語分のデータを突っ込むのは

オヌヌメできない。
• 詳しくは後述。
開発/検証
• 開発時や検証時に、言語切り替えを

端末に依存させないような作りにするとベター
• 確認の度に端末の言語設定弄るのは

強 な精神力を必要とします。
• アプリの機能として言語切り替えがあるなら

問題ないけど。
開発/検証
• KidsStar では Editor 実行時や

Development Build している場合に

タイトル画面に OnGUI な言語切り替え

ボタンを出してます。
Localization の実装
端末の言語設定取得
• 端末の設定言語を拾うには

UnityEngine.Application.systemLanguage

を使う
• サポートしている言語は

enum UnityEngine.SystemLanguage

に定義されている
文字列等の L10n
• 言語毎に翻訳テーブルを定義し、

TextAsset か何かでアプリに埋め込む
• ダウンロード型にしても良いけど、

管理が大変なのでオススメできない。
• ポイントは翻訳テーブルの管理システム。
文字列等の L10n
• KidsStar では…
• 言語/型毎に TextAsset を出力。
• English.string.txt, Japanese.float.txt 的な。
• key は別途 .asset ファイルで保持して

TextAsset とリレーションさせるイメージ。
文字列等の L10n
• Editor Script 頑張る
バイナリの L10n
• 画像などの拡張子の前に .ja_JP のように付与
• Hoge.ja_JP.png, Hoge.en_US.png 的な。
• L10n 不要なファイルの存在も考慮し、

リソースリスト内で L10n 対象かどうかを

フラグ管理
• 勿論、リソースリストの実装は頑張る。
バイナリの L10n
• Atlas 内の特定 Sprite のみ L10n も可能に。
• 泥臭いけど、

null == GetSprite(name)

で判定して、無いなら

GetSprite(name + “.” + I18N.currentLocale)

とかかな…?
• 例は NGUI の場合。Native は分からんw
バイナリの L10n
• ポイントは、アプリ組み込みであっても

ダウンロード型であっても、端末容量の

圧迫を極力防ぐコト。
• 端末の言語設定に対して、必要最低限の

リソースのみを保持させるような仕組みを作る。
• 特に Android は Non Wi-Fi だと APK サイズ

上限は 50MB なので、相当頑張る必要アリ。
サーバサイドの L10n
• ナウでヤングでモダンなフレームワークなら

標準対応してるコトも多いんじゃないかな?
• 設計上気を付けるコトとして、日時系のデータは

UTC な DateTime で持つか UnixTimestampで 

持つかの何れかがオヌヌメ。
• 文字列データの L10n は gettext 使うなり

自前で組むなりご随意に。
• あ、間違っても Shift_JIS とか EUC-JP とかは NG。
サーバサイドの L10n
• 予算との兼ね合いが大きいけど、mBaaS 使う

のも手っ取り早いかも。
• 最低限の範囲でサポートしてくれてるトコが

多い印象なので、スタートアップ向けかな?
• この辺はエンジニアのスキルに依存しがち。
• ……(((((゚Д゚))))) ガクガクブルブル
App Store, Google Play

の L10n
• 普通に L10n 対応されてますね。
• 注意点としては、Default Language を

English にしないと色々と面倒です。
• もし初期バージョンを Japanese にしちゃった

場合は こちら 参照のコト。(ステマ)
Demo
Any Questions ?
Thank you for

your attention !

More Related Content

PDF
SteamVRさわってみた
PDF
RoomAlive - HoloLensに向けていまできること
PDF
HoloLens first impression & development
PDF
HoloLens FirstImpression v2
KEY
プラグインカスタマイズを始めた理由、カスタマイズで良かった点・苦労した点
PDF
蜜葉流 デサインプロセスの基礎 - サトヤくじらが生まれるまで -
PDF
WinMR入門
PPTX
HoloLensの音声認識を使って対話エージェントからミニ四駆動かした話
SteamVRさわってみた
RoomAlive - HoloLensに向けていまできること
HoloLens first impression & development
HoloLens FirstImpression v2
プラグインカスタマイズを始めた理由、カスタマイズで良かった点・苦労した点
蜜葉流 デサインプロセスの基礎 - サトヤくじらが生まれるまで -
WinMR入門
HoloLensの音声認識を使って対話エージェントからミニ四駆動かした話

Similar to 20140530 Unity に於ける Localization のおはなし (13)

PPTX
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
PDF
Unityとスマートフォンアプリの最適化
PDF
20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」
PDF
Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし
PPTX
I18n for Your Web application
PDF
IGDA 日本 SIG-GLOCALIZATION GDC2012報告会
PPTX
Unity * スマートフォン開発で学んだこと
PDF
Unityで作るiOSゲームアプリ
PDF
Unity に於ける Android ビルド自動化のおはなし - 20141215 第27回 Unity 勉強会
PDF
できる! Unity 2D (vol.2)
PDF
土下座パラダイスはこうして生まれた
PDF
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
PPTX
Creative flow: ソフトウェアローカリゼーションのワークフローと今後
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
Unityとスマートフォンアプリの最適化
20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」
Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし
I18n for Your Web application
IGDA 日本 SIG-GLOCALIZATION GDC2012報告会
Unity * スマートフォン開発で学んだこと
Unityで作るiOSゲームアプリ
Unity に於ける Android ビルド自動化のおはなし - 20141215 第27回 Unity 勉強会
できる! Unity 2D (vol.2)
土下座パラダイスはこうして生まれた
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Creative flow: ソフトウェアローカリゼーションのワークフローと今後
Ad

More from Mori Tetsuya (20)

PDF
GraphView のすゝめ / Introduction of GraphView
PDF
基盤・設計まわりでしくじってしまった話
PDF
2020年版 Unity Package Manager 更新点まとめ
PDF
Unity Development Infrastructure / Unity プロジェクトの開発基盤を大公開
PDF
Future of UniFlow
PDF
Clean Architecture for Unity
PDF
Visual Programming Framework for Unity - UniFlow のご紹介
PDF
Unity ユーザのための Git ハンズオン #2
PDF
Unity で Unit な Test を書いてみた
PDF
Unity 5.3 の In-App Purchase を試してみた
PDF
AssetBundle (もどき) の作り方
PDF
Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space
PDF
Unity 5 の AssetBundle について (浅く) まとめてみた - 2015/05/22 第31回 Unity 勉強会
PDF
20150216 Unity Hands-on 「できる!Unity 2D」
PDF
20140926 NCMB勉強会 #4 - Unity meets SpriteStudio
PDF
20140829 第24回 Unity 勉強会 - Unity meets SpriteStudio
PDF
20140822 Swift 勉強会 vol.3 - はぢめての Swift
PDF
20140711 MySQL Casual Talks vol.6 / 続・Amazon RDS Casual Talks
PDF
20140618 教育・知育アプリのつくりかた
PDF
20140314 Unity勉強会 PostProcessBuild のおはなし
GraphView のすゝめ / Introduction of GraphView
基盤・設計まわりでしくじってしまった話
2020年版 Unity Package Manager 更新点まとめ
Unity Development Infrastructure / Unity プロジェクトの開発基盤を大公開
Future of UniFlow
Clean Architecture for Unity
Visual Programming Framework for Unity - UniFlow のご紹介
Unity ユーザのための Git ハンズオン #2
Unity で Unit な Test を書いてみた
Unity 5.3 の In-App Purchase を試してみた
AssetBundle (もどき) の作り方
Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space
Unity 5 の AssetBundle について (浅く) まとめてみた - 2015/05/22 第31回 Unity 勉強会
20150216 Unity Hands-on 「できる!Unity 2D」
20140926 NCMB勉強会 #4 - Unity meets SpriteStudio
20140829 第24回 Unity 勉強会 - Unity meets SpriteStudio
20140822 Swift 勉強会 vol.3 - はぢめての Swift
20140711 MySQL Casual Talks vol.6 / 続・Amazon RDS Casual Talks
20140618 教育・知育アプリのつくりかた
20140314 Unity勉強会 PostProcessBuild のおはなし
Ad

20140530 Unity に於ける Localization のおはなし