unity...
DESCRIPTION
2014年07月31日に行われた「第23回 Unity 勉強会」にて発表した資料です。TRANSCRIPT
![Page 1: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/1.jpg)
モバイルプラットフォームビルド自動化のおはなし
2014.07.31 (Thu) / Unity 勉強会 vol.23
株式会社キッズスター システムデベロプメントチーム リーダー
森 哲哉
![Page 2: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/2.jpg)
こんばんは!
![Page 3: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/3.jpg)
毎度お馴染み (?)もんりぃです。
![Page 4: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/4.jpg)
エンジニアとは
![Page 5: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/5.jpg)
「傲慢」 「短気」 「怠惰」
(順不同)
![Page 6: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/6.jpg)
である。
![Page 7: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/7.jpg)
と、いうわけで
「怠惰」に関する おはなしです。
![Page 8: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/8.jpg)
おしながき
![Page 9: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/9.jpg)
おしながき• 自己紹介
• 前置き
• ビルド自動化の概要
• ビルド自動化の詳細
• ビルド自動化のデモ (時間余れば)
![Page 10: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/10.jpg)
自己紹介
![Page 11: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/11.jpg)
$ whoami• “森 哲哉” と申します。
• a.k.a: もんりぃ / T: @monry / F: monry84
• 29歳 / ♂ / O型 / 天秤座 / 既婚
• 趣味は「お酒」と「合唱」です。
![Page 12: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/12.jpg)
$ whoami• 大学を (自主的に) 卒業後、ベンチャーを転々。
• Web のフロントエンド、サーバサイドが得意。
• ようやく Unity 歴 1 年チョイになりました。
• AWS とキャッキャウフフするのも好きです。
• 何故か社内インフラも やらされ… やってます。
• 近頃は Backbone.js (と CoffeeScript と SASS) と戯れてます。
![Page 13: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/13.jpg)
$ jobs• “株式会社キッズスター” って会社で働いてます。
• 未就学児~小学生のお子さまをお持ちのファミリーをターゲットにした、知育/教育に関わるアプリ・サービスを展開しております。
• お陰様で EdTech な知育分野に於いてNo.1 規模で展開しております!(当社調べw)
![Page 14: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/14.jpg)
$ ls -la apps/
森のえほん館 なりきり!! ごっこランド
パズル&テイルズおかしのくにを つくるのじゃ!!
なりきり!! アイスクリーム 屋さんごっこ
なりきり!! ママごっこ
お弁当をつくろう!
こえほん おかしの家を つくろう!
ハンバーガー やさんごっこ
飛行機を 組み立てよう!
i18n i18n
i18n i18n
Work in Progress
![Page 15: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/15.jpg)
前置き
![Page 16: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/16.jpg)
環境• Unity: 4.3.4f1
• Platform: iOS, Android
• Development: Mac, Windows
• Dimension: (主に) 2D
• Language: C#
![Page 17: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/17.jpg)
環境• Homebrew (じゃなくても良いけど)
• Xcode / Command Line Tools
• gradle (brew install gradle)
• DeployGate (optional)
• ChatWork (optional)
![Page 18: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/18.jpg)
本題
![Page 19: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/19.jpg)
おおまかな流れ• Unity からプロジェクト出力
• コマンドラインからビルド・パッケージング
• (任意) 何らかのデプロイサービスに配信
• (任意) 何らかの手段で配信結果を関係者に通知
![Page 20: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/20.jpg)
Export Project• 素直に Unity の機能使う
• が、標準のビルドウィンドウは使わない
• 例えば弊社の場合: →
![Page 21: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/21.jpg)
Export Project• 各種設定値とかを事前チェックしたい
• 理想とする出力形式に調整し易い
• APK にはせずに Android Studio 出力とか
• ビルド後に Finder 開くのがウザい
• Keystore Password 入れるのがダルい
![Page 22: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/22.jpg)
Export Project
• UnityEditor.BuildPipeline.BuildPlayer()
• Scene ファイルパスの配列
• 出力先のパス
• ビルド対象プラットフォーム
• 何かオプション (ないなら BuildOption.None でおk)
BuildPipeline.BuildPlayer( new string[] { "path/to/scene1", "path/to/scene2", // ... }, "path/to/output", BuildTarget.Android, BuildOptions.Development | BuildOptions.AcceptExternalModificationsToPlayer);
![Page 23: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/23.jpg)
Export Project• Xcode / Android Studio 出力するには
BuildOptions.AcceptExternalModificationsToPlayer
• Development Build にするにはBuildOptions.Development
• その他色々あるけど、詳しくはマニュアル参照
![Page 24: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/24.jpg)
Export Project• あと、あまりオススメできないけど、Keystore Password もコードから指定可能
PlayerSettings.Android.keystoreName = "path/to/keystore";PlayerSettings.Android.keystorePass = "hogehoge";PlayerSettings.Android.keyaliasName = "fugafuga";PlayerSettings.Android.keyaliasPass = "piyopiyo";
![Page 25: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/25.jpg)
Build / Packaging• 本日のメインディッシュ
• 出力完了後に実行する必要あり
• Jenkins / grunt / maven / etc…
• PostProcessBuild でも実行可能
• PPB にするとプログレスバーとか制御し易い
• PostProcessBuild についてはコチラ (ステマ)
![Page 26: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/26.jpg)
Build / Packaging(iOS)
• 使うコマンドは xcodebuild, xcrun の二つ
• CLT 入れてたら /usr/bin の下に居るハズ
• xcodebuild でビルドしてから、xcrun で .ipa ファイル (AdHoc ビルド)の生成を行う
![Page 27: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/27.jpg)
Build / Packaging (iOS / xcodebuild)
• xcodebuild コマンドの引数は以下のような感じ(環境依存あるかもね。)
-project "path/to/Unity-iPhone.xcodeproj" \!-sdk iphoneos \!-target "Unity-iPhone" \!-configuration Release \!clean build \!CODE_SIGN_IDENTITY="iPhone Distribution" \!PROVISIONING_PROFILE="$ProvisioningProfileID$"
![Page 28: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/28.jpg)
Build / Packaging (iOS / xcrun)
• xcrun コマンドの引数は以下のような感じ-sdk iphoneos \!PackageApplication "path/to/built.app" \!-o "path/to/output.ipa" \!--embed "$ProvisioningProfileID$.mobileprovision"
![Page 29: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/29.jpg)
Build/Packaging (Android)
• 使うコマンドは gradle だけ!
• 出力先ディレクトリ直下に build.gradle などを配置しておく必要あり
• この辺も頑張って PostProcessBuild で配置すると幸せになれる
• ぶっちゃけ一筋縄ではいかない (いかなかった)
![Page 30: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/30.jpg)
Build/Packaging (Android / gradle)
• build.gradle はこんな感じ
• 多少 Gradle (てか Groovy) の知識必要かも
• unity-classes.jar をローカルの Maven リポジトリに食わせる必要があったり
• 特に Facebook SDK for Unity 使う場合、たぶん必須
• gradle.properties が必要だったり
• 色々面倒ですw
![Page 31: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/31.jpg)
そろそろ疲れてきたでしょ?
![Page 32: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/32.jpg)
もうちょっとだけ 続くんじゃ。
![Page 33: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/33.jpg)
Deployment• 折角ビルドしたモノは検証しないとね!
• ちょっと前だったら TestFlight が有力だった
• Android が使えなくなっちゃいました(́・ω・`)
• 今は DeployGate かな?
• Crashlytics とかもありますね。
![Page 34: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/34.jpg)
Deployment• まぁ、好きなの使えば良いんじゃね?
• ウチでは DeployGate 使ってます。
• コマンドラインツールがシンプルで良い。dgate push path/to/apk!dgate push path/to/ipa
![Page 35: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/35.jpg)
Deployment• 選定ポイントとしては…
• iOS / Android 両対応
• Provisioning 周りを巧いコトやってくれる
• 配布ページとかも生成できると尚良し
• 受託とかやってる場合、お客さんに 直接インストールしてもらえれば楽かも?
![Page 36: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/36.jpg)
Announcement• 最後は「お知らせ」
• ウチでは ChatWork にビルド結果通知専用 のルームを作って、そこに結果を通知してます
• これも PostProcessBuild で頑張ってる
• ChatWork API をキックするライブラリは 割と巧く書けてるから、AssetStore とかで販売してみようかしらw
![Page 37: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/37.jpg)
Announcement• まぁ、伝われば何でも良いと思うので「メール」「APNs/GCM」「口頭」「伝書鳩」「矢文」「テレパシー」etc…を駆使して伝えるべき人に伝えましょう。
• 伝える内容としては、「アプリ名」「バージョン」「ビルド種別 (Dev?Prod?)」辺りは最低限必要かな?
![Page 38: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/38.jpg)
Demo
![Page 39: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/39.jpg)
Any Questions ?
![Page 40: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし](https://reader031.vdocuments.net/reader031/viewer/2022012309/557ddc3bd8b42a4e358b48e3/html5/thumbnails/40.jpg)
Thank you foryour attention !