39
Unity に於ける Localization のおはなし 2014.05.30 (Fri) / Unity 勉強会 vol.21 株式会社キッズスター システムデベロプメントチーム リーダー 森 哲哉

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

Embed Size (px)

DESCRIPTION

2014年05月30日に TechBuzz Space にて開催された Unity 勉強会の資料です。

Citation preview

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

Unity に於ける Localization のおはなし

2014.05.30 (Fri) / Unity 勉強会 vol.21

株式会社キッズスター システムデベロプメントチーム リーダー

森 哲哉

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

こんばんは!

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

Good evening !

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

Guten Abend !

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

Bonsoir !

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

晚上好!

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

Bonan vesperon !

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

と、いうわけで

Localization のおはなしです。

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

自己紹介

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

$ whoami• “森 哲哉” と申します。

• a.k.a: もんりぃ / T: @monry / F: monry84

• 29歳 / ♂ / O型 / 天秤座 / 既婚

• 趣味は「お酒」と「合唱」です。

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

$ whoami• 大学を (自主的に) 卒業後、ベンチャーを転々。

• Web のフロントエンド、サーバサイドが得意。

• ようやく Unity 歴 1 年になりました。

• AWS とキャッキャウフフするのも好きです。

• 最近は社内インフラも やらされ… やってます。

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

$ jobs• “株式会社キッズスター” って会社で働いてます。

• 未就学児~小学生のお子さまをお持ちのファミリーをターゲットにした、知育/教育に関わるアプリ・サービスを展開しております。

• お陰様で EdTech な知育分野に於いてNo.1 規模で展開しております!(当社調べw)

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

$ ls -la apps/

森のえほん館 なりきり!! ごっこランド

パズル&テイルズおかしのくにを つくるのじゃ!!

なりきり!! アイスクリーム 屋さんごっこ

なりきり!! ママごっこ

お弁当をつくろう!

こえほん おかしの家を つくろう!

ハンバーガー やさんごっこ

飛行機を 組み立てよう!

i18n i18n

i18n i18n

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

前置き

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

環境• Unity: 4.3.4f1

• Platform: iOS, Android

• Development: Mac, Windows

• Dimension: (主に) 2D

• Language: C#

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

L10n? i18n? G11n?• スライドタイトルに Localization (L10n) って書いてあるけど…。

• 多少 Internationalization (i18n) に 絡んだ話もします。

• スライドタイトルを Globalization (G11n) にしとけば良かった…(́・ω・`)

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

対応可能範囲• 2014年05月現在、弊社が対応したコトのあるL10n はアメリカ英語のみとなります。

• 本スライドの内容だけでは、イギリス英語や 中国語の出し分け (簡体字/繁体字) などは難しいんじゃないかと思ってます。

• 方法あったらおせーてくださいw

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

言い訳• 本スライドで、ちょいちょい英語使ってます。

• セッションの内容に絡むから、ね。

• まぁ、要するに格好付けてるだけですが。ええ。

• が、 @monry は非常に英語が苦手ですっ!(キリッ

• 高校の時は常に 5 段階評価で 2 でした。(́;ω;`)

• 故に、文法おかしかったりするかもですが、 その辺はご愛敬ってコトで!!!

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

Localization の基本

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

What should I do?• テキストの L10n

• 画像・音声などのバイナリの L10n

• サーバサイドの L10n

• App Store, Google Play の L10n

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

未 L10n 環境• アプリの特性にも依存するが、基本的に 英語をデフォルトとしておくと良さそう。

• とは言え、英語翻訳すら出来ていない段階で 英語デフォは結構微妙。海外のストアに出してないなら、まだ良いが。

• 理想は、英語の L10n が完了した時点で デフォルト言語を変更出来るような仕組みを 予め作っておく。

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

時差• リテンション施策として、 PUSH 通知(APNs/GCM) が濫用されている昨今。

• デベロッパ視点では便利な機能なんだけど、 夜中に送ろうもんなら「通知がウザいです。☆1」ってな感じに置き土産付きでアンインストール されるのがオチです。

• ちゃんと時差を考慮した設計にしましょう。

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

リソースサイズ• バイナリファイルのサイズがネックになる。

• アプリ組み込み型でもダウンロード型でも。

• 個人的には全言語分のデータを突っ込むのはオヌヌメできない。

• 詳しくは後述。

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

開発/検証• 開発時や検証時に、言語切り替えを端末に依存させないような作りにするとベター

• 確認の度に端末の言語設定弄るのは強靱な精神力を必要とします。

• アプリの機能として言語切り替えがあるなら 問題ないけど。

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

開発/検証• KidsStar では Editor 実行時やDevelopment Build している場合にタイトル画面に OnGUI な言語切り替えボタンを出してます。

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

Localization の実装

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

端末の言語設定取得• 端末の設定言語を拾うには

UnityEngine.Application.systemLanguage を使う

• サポートしている言語はenum UnityEngine.SystemLanguage に定義されている

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

文字列等の L10n• 言語毎に翻訳テーブルを定義し、TextAsset か何かでアプリに埋め込む

• ダウンロード型にしても良いけど、 管理が大変なのでオススメできない。

• ポイントは翻訳テーブルの管理システム。

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

文字列等の L10n• KidsStar では…

• 言語/型毎に TextAsset を出力。

• English.string.txt, Japanese.float.txt 的な。

• key は別途 .asset ファイルで保持してTextAsset とリレーションさせるイメージ。

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

文字列等の L10n• Editor Script 頑張る

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

バイナリの L10n• 画像などの拡張子の前に .ja_JP のように付与

• Hoge.ja_JP.png, Hoge.en_US.png 的な。

• L10n 不要なファイルの存在も考慮し、リソースリスト内で L10n 対象かどうかをフラグ管理

• 勿論、リソースリストの実装は頑張る。

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

バイナリの L10n• Atlas 内の特定 Sprite のみ L10n も可能に。

• 泥臭いけど、null == GetSprite(name) で判定して、無いならGetSprite(name + “.” + I18N.currentLocale)とかかな…?

• 例は NGUI の場合。Native は分からんw

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

バイナリの L10n• ポイントは、アプリ組み込みであってもダウンロード型であっても、端末容量の圧迫を極力防ぐコト。

• 端末の言語設定に対して、必要最低限の リソースのみを保持させるような仕組みを作る。

• 特に Android は Non Wi-Fi だと APK サイズ上限は 50MB なので、相当頑張る必要アリ。

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

サーバサイドの L10n• ナウでヤングでモダンなフレームワークなら 標準対応してるコトも多いんじゃないかな?

• 設計上気を付けるコトとして、日時系のデータは UTC な DateTime で持つか UnixTimestampで 持つかの何れかがオヌヌメ。

• 文字列データの L10n は gettext 使うなり自前で組むなりご随意に。

• あ、間違っても Shift_JIS とか EUC-JP とかは NG。

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

サーバサイドの L10n• 予算との兼ね合いが大きいけど、mBaaS 使うのも手っ取り早いかも。

• 最低限の範囲でサポートしてくれてるトコが 多い印象なので、スタートアップ向けかな?

• この辺はエンジニアのスキルに依存しがち。

• ……(((((゚Д゚))))) ガクガクブルブル

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

App Store, Google Playの L10n

• 普通に L10n 対応されてますね。

• 注意点としては、Default Language をEnglish にしないと色々と面倒です。

• もし初期バージョンを Japanese にしちゃった 場合は こちら 参照のコト。(ステマ)

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

Demo

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

Any Questions ?

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

Thank you foryour attention !