unity...

40
モバイルプラットフォーム ビルド自動化のおはなし 2014.07.31 (Thu) / Unity 勉強会 vol.23 株式会社キッズスター システムデベロプメントチーム リーダー 森 哲哉

Upload: tetsuya-mori

Post on 15-Jun-2015

2.927 views

Category:

Engineering


0 download

DESCRIPTION

2014年07月31日に行われた「第23回 Unity 勉強会」にて発表した資料です。

TRANSCRIPT

Page 1: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

モバイルプラットフォームビルド自動化のおはなし

2014.07.31 (Thu) / Unity 勉強会 vol.23

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

森 哲哉

Page 2: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

こんばんは!

Page 3: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

毎度お馴染み (?)もんりぃです。

Page 4: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

エンジニアとは

Page 5: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

「傲慢」 「短気」 「怠惰」

(順不同)

Page 6: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

である。

Page 7: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

と、いうわけで

「怠惰」に関する おはなしです。

Page 8: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

おしながき

Page 9: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

おしながき• 自己紹介

• 前置き

• ビルド自動化の概要

• ビルド自動化の詳細

• ビルド自動化のデモ (時間余れば)

Page 10: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

自己紹介

Page 11: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

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

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

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

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

Page 12: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

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

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

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

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

• 何故か社内インフラも やらされ… やってます。

• 近頃は Backbone.js (と CoffeeScript と SASS) と戯れてます。

Page 13: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

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

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

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

Page 14: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

$ ls -la apps/

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

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

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

なりきり!! ママごっこ

お弁当をつくろう!

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

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

飛行機を 組み立てよう!

i18n i18n

i18n i18n

Work in Progress

Page 15: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

前置き

Page 16: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

環境• Unity: 4.3.4f1

• Platform: iOS, Android

• Development: Mac, Windows

• Dimension: (主に) 2D

• Language: C#

Page 17: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

環境• Homebrew (じゃなくても良いけど)

• Xcode / Command Line Tools

• gradle (brew install gradle)

• DeployGate (optional)

• ChatWork (optional)

Page 18: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

本題

Page 19: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

おおまかな流れ• Unity からプロジェクト出力

• コマンドラインからビルド・パッケージング

• (任意) 何らかのデプロイサービスに配信

• (任意) 何らかの手段で配信結果を関係者に通知

Page 20: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Export Project• 素直に Unity の機能使う

• が、標準のビルドウィンドウは使わない

• 例えば弊社の場合: →

Page 21: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Export Project• 各種設定値とかを事前チェックしたい

• 理想とする出力形式に調整し易い

• APK にはせずに Android Studio 出力とか

• ビルド後に Finder 開くのがウザい

• Keystore Password 入れるのがダルい

Page 22: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

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 に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Export Project• Xcode / Android Studio 出力するには

BuildOptions.AcceptExternalModificationsToPlayer

• Development Build にするにはBuildOptions.Development

• その他色々あるけど、詳しくはマニュアル参照

Page 24: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

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 に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Build / Packaging• 本日のメインディッシュ

• 出力完了後に実行する必要あり

• Jenkins / grunt / maven / etc…

• PostProcessBuild でも実行可能

• PPB にするとプログレスバーとか制御し易い

• PostProcessBuild についてはコチラ (ステマ)

Page 26: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Build / Packaging(iOS)

• 使うコマンドは xcodebuild, xcrun の二つ

• CLT 入れてたら /usr/bin の下に居るハズ

• xcodebuild  でビルドしてから、xcrun で .ipa ファイル (AdHoc ビルド)の生成を行う

Page 27: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

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 に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Build / Packaging (iOS / xcrun)

• xcrun コマンドの引数は以下のような感じ-sdk iphoneos \!PackageApplication "path/to/built.app" \!-o "path/to/output.ipa" \!--embed "$ProvisioningProfileID$.mobileprovision"

Page 29: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Build/Packaging (Android)

• 使うコマンドは gradle だけ!

• 出力先ディレクトリ直下に build.gradle などを配置しておく必要あり

• この辺も頑張って PostProcessBuild で配置すると幸せになれる

• ぶっちゃけ一筋縄ではいかない (いかなかった)

Page 30: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Build/Packaging (Android / gradle)

• build.gradle はこんな感じ

• 多少 Gradle (てか Groovy) の知識必要かも

• unity-classes.jar をローカルの Maven リポジトリに食わせる必要があったり

• 特に Facebook SDK for Unity 使う場合、たぶん必須

• gradle.properties が必要だったり

• 色々面倒ですw

Page 31: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

そろそろ疲れてきたでしょ?

Page 32: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

もうちょっとだけ 続くんじゃ。

Page 33: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Deployment• 折角ビルドしたモノは検証しないとね!

• ちょっと前だったら TestFlight が有力だった

• Android が使えなくなっちゃいました(́・ω・`)

• 今は DeployGate かな?

• Crashlytics とかもありますね。

Page 34: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Deployment• まぁ、好きなの使えば良いんじゃね?

• ウチでは DeployGate 使ってます。

• コマンドラインツールがシンプルで良い。dgate push path/to/apk!dgate push path/to/ipa

Page 35: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Deployment• 選定ポイントとしては…

• iOS / Android 両対応

• Provisioning 周りを巧いコトやってくれる

• 配布ページとかも生成できると尚良し

• 受託とかやってる場合、お客さんに 直接インストールしてもらえれば楽かも?

Page 36: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Announcement• 最後は「お知らせ」

• ウチでは ChatWork にビルド結果通知専用 のルームを作って、そこに結果を通知してます

• これも PostProcessBuild で頑張ってる

• ChatWork API をキックするライブラリは 割と巧く書けてるから、AssetStore とかで販売してみようかしらw

Page 37: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Announcement• まぁ、伝われば何でも良いと思うので「メール」「APNs/GCM」「口頭」「伝書鳩」「矢文」「テレパシー」etc…を駆使して伝えるべき人に伝えましょう。

• 伝える内容としては、「アプリ名」「バージョン」「ビルド種別 (Dev?Prod?)」辺りは最低限必要かな?

Page 38: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Demo

Page 39: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Any Questions ?

Page 40: Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし

Thank you foryour attention !