20150123 第28回 unity 勉強会「unity に於けるビルド自動化のおはなし &...

58
Unity に於ける ビルド自動化のおはなし 【まとめ編】2015.01.23 (Fri) / Unity 勉強会 vol.28 株式会社キッズスター システムデベロプメントチーム リーダー 森 哲哉

Upload: tetsuya-mori

Post on 27-Jul-2015

443 views

Category:

Engineering


6 download

TRANSCRIPT

Page 1: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

Unity に於ける ビルド自動化のおはなし 【まとめ編】+α2015.01.23 (Fri) / Unity 勉強会 vol.28

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

森 哲哉

Page 2: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

あけおめ!

Page 3: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

毎度おなじみ? もんりぃです!

Page 4: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

今日のテーマ

Page 5: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」
Page 6: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

と、いうわけで

ビルド のおはなしです (最終回)

Page 7: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

と、思いきや…

Page 8: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

今日は、"+α" の 部分がメインですw

Page 9: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

おしながき

Page 10: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

おしながき

• Android ビルド自動化のおはなし

• iOS ビルド自動化のおはなし

• 【+α】Editor Script を用いた設定管理

• 【+α】KidsStar に於けるリソース管理の紹介

Page 11: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

自己紹介

Page 12: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

$ whoami

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

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

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

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

Page 13: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

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

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

• Unity 歴 2 年弱くらい。

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

• 最近は Kinect さんがお気に入り。

Page 14: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

$ whoami

Page 15: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

$ whoami

Page 16: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

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

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

• 「IID 世田谷ものづくり学校」という、元中学校に入居しております。

Page 17: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

$ jobs

Page 18: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

$ jobs

Page 19: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

$ jobs

Page 20: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

$ jobs

Page 21: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

$ ls -la apps/

なりきり!! ごっこランド

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

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

なりきり!! ママごっこ

お弁当をつくろう!

おかしの家を つくろう!

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

飛行機を 組み立てよう!

i18n i18n i18n

i18n

ゆかいな お花屋さん

App Sto

re / Goo

gle Play

カテゴリランキング1位

多数獲得!!!きかんしゃ トーマスと パズルで あそぼう!

Page 22: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

前置き

Page 23: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

環境• Operation System: OS X Yosemite

• Unity: 4.6.1p2 (Pro Only)

• Platform: iOS, Android

• Language: C#

• Other: Xcode, Android SDK, gradle

Page 24: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

今日 喋るコト

• iOS, Android に於けるビルド自動化のまとめ

• PostProcessBuild な話

• 複数プロジェクトに跨がるコードの話

• 画像やら音声やらのリソース管理の話

Page 25: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

今日 喋らないこと

• Native Plugin の話

• 各マーケットへの公開に関する話

• リソースの読み込み方に関する話

Page 26: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

iOS

Page 27: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

iOS

つ [ ]

Page 28: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

iOS

• BuildPipeline.BuildPlayer()

• Xcode Editor for Unity (forked by monry)

• xcodebuild

• xcrun

Page 29: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

iOS

• Provisioning Profile 周りは1回ハマっとけw

• 複数アプリ展開してるなら、Wildcard な AdHoc 作っとけ。

Page 30: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

iOS• テクスチャの圧縮は PVRTC がオヌヌメ

• アルファチャンネル分離して、Shader で 合成するようにしてあげれば RGB Compressed PVRTC 4bits とRGB Compressed PVRTC 2bits だけでコトが足りる

• imésta とか使って pvr コンテナを事前に生成しとく ってのもアリ

• PVR 荒れを起こしにくいよ!

Page 31: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

Android

Page 32: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

Android

つ [ ]

Page 33: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

Android

• BuildPipeline.BuildPlayer()

• gradle

• レシピはコチラ。

Page 34: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

Android

• Maven のローカルリポジトリにunity-classes.jar を登録しとく。

• Keystore とか Proguard とかは気を付ける。

• 各種広告 SDK とかを突っ込む際に、最低1回はハマるんじゃないかな?w

Page 35: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

Android• テクスチャの圧縮は ETC1 か DXT5 かな?

• 以前の勉強会で「ATC が~」とか言ったけど、あれ、嘘。

• GPU が Adreno じゃない場合とかに壊滅的。

• アルファチャンネル無しなら ETC1 で、 有りなら DXT5 が良いんじゃないかと。

Page 36: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

両 OS

Page 37: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

両 OS

• ビルド後のアレコレをちょっとでも楽に

• DeployGate なり TestFlight なりにデプロイ

• ChatWork なり Slack なりに通知

• Jenkins おじさんと密接な関係になろう!w

Page 38: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

ちょっと休憩…。

Page 39: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

+α 其の壱

Page 40: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

Editor Script による 設定管理

Page 41: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

設定管理

• コード共通化の際に直面する問題

• それが

• プロジェクト毎に異なる設定値

Page 42: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

設定管理

• 例えば、Flurry のような解析 SDK の API Key

• 例えば、広告 SDK の API Key

• 例えば、レビュー依頼ダイアログの遷移先 URL

• 例えば、AssetBundle のダウンロード URL

Page 43: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

設定管理• ポイントは

• ScriptableObject

• Editor Script を書く

• ".asset" ファイルを理解する

• 根性あるなら Editor GUI も頑張る

Page 44: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

設定管理

• AssetDatabase.CreateAsset(Object, string)

• [SerializeField]

• EditorUtility.SetDirty(Object)

• Resources.Load(string)

Page 45: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

設定管理

DEMO

Page 46: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

設定管理

• こちらに、本日のデモを push してあります。

Page 47: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

+α 其の弐

Page 48: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

KidsStar に於ける リソース管理の紹介

Page 49: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

リソース管理

• Unity でアプリとかを作る時に困るコト

• それが

• リソース管理

Page 50: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

リソース管理• 例えば、Texture

• 例えば、AudioClip

• 例えば、AssetBundle

• 例えば、外部 SDK

• 例えば、ローカライズテキスト

• 例えば、アイコンやスプラッシュ

Page 51: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

リソース管理

• 免責

• これからお話するのは、あくまで弊社での運用事例の紹介です。

• 「この通りやったら完璧」とは言いませんw

Page 52: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

リソース管理• Unity の特殊ディレクトリに対する理解

• Resources

• Streaming Assets

• Plugins

• これらのディレクトリ配下の Asset はビルド時にパッケージに含まれる

Page 53: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

リソース管理

• Import Asset に対する理解

• 大量の画像とかあると死にたくなるw

• ".meta" ファイル重要

• CacheServer 無いと死ねる

Page 54: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

リソース管理

• Unity による自動変換に対する理解

• 画像 → Texture

• 音声 → AudioClip

• オブジェクト → YAML (Force Text の場合)

Page 55: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

リソース管理

DEMO

Page 56: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

まとめ

Page 57: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

まとめ

• 自動化による怠惰なエンジニアライフを!

• 全ては公式リファレンスに載ってる!

• プロジェクト管理のベストプラクティスを 探す旅は果てしなく続く!!!w

Page 58: 20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」

Thank you foryour attention !