Slide 1

Slide 1 text

ϋτωίΤ UnityでAndroid 自動ビルドしたかった話 @nekonenene 2019年6月25日

Slide 2

Slide 2 text

ࣗݾ঺հ ハトネコエ • Twitter : @nekonenene • Github : nekonenene 最近よ〜うやく
 インタラクティブミュージックの をやり始めました 気持ちよさが追究されててすごい。

Slide 3

Slide 3 text

Unityͷ͖͔͚ͬ 5月のコミティアでサークルさんと立ち話 「新作出ないんですか?」
 「プログラマーさんが都合つかなくて」
 「なにかアドバイス程度なら…」
 「もしかしてUnityやってくれますか」
 「と…とりあえず企画書ください!」 からスタート。Unity何もわからない。 テラシュールブログさん助かってます

Slide 4

Slide 4 text

話すこと 1. 結論 2. つらい Unity x Docker 3. つらい Android ビルド 4. そして私はどうしたか 5. まとめ

Slide 5

Slide 5 text

̍ 結論

Slide 6

Slide 6 text

݁࿦ • 身も蓋もないですが
 Unity Cloud Build を使いましょう • まだ初心者だし、
 毎月9ドルを払うのはちょっと……
 とあがいた結果が、
 以降のスライドです

Slide 7

Slide 7 text

̎ つらい Unity x Docker

Slide 8

Slide 8 text

DockerΠϝʔδͷ༻ҙ • CircleCI を使うにしても
 wercker を使うにしても、
 Dockerイメージが必要です。 • これを用意するのがとても大変です

Slide 9

Slide 9 text

Unity x Docker • https://hub.docker.com/r/gableroux/ unity3d がとても優秀 • 自動ビルドによりUnity最新版が
 すぐにDocker Hubにプッシュされるよう になっています

Slide 10

Slide 10 text

͔͠͠…… • https://gitlab.com/gableroux/ unity3d-gitlab-ci-example に
 使い方が書かれているが大変…… • 実際に手順を見てみましょう
 (上のリンクで書かれているものとやや 異なります)

Slide 11

Slide 11 text

͓͓·͔ͳखॱ 1 # UNITY_EMAIL, UNITY_PASS は登壇に合わせて設定済みです docker run -it --rm -w /root/project -v $(pwd):/root/project -e EMAIL=$UNITY_EMAIL -e PASS=$UNITY_PASS gableroux/unity3d: 2019.1.7f1 /bin/bash xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' /opt/Unity/Editor/Unity -logFile /dev/stdout - batchmode -quit -username "$EMAIL" -password "$PASS" echo ' unity3d.alf ͜ΕΛ https://license.unity3d.com/manual ʹΞοϓϩʔυ

Slide 12

Slide 12 text

͓͓·͔ͳखॱ 2 cp Unity_v2019.x.ulf /root/.local/share/unity3d/Unity/ Unity_lic.ulf ʢUnityίϚϯυ͸ $HOME/.local/share/unity3d/Unity/Unity_lic.ulf Λ ୳͢ɻMac͸ /Library/Application\ Support/Unity/Unity_lic.ulfʣ xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' /opt/Unity/Editor/Unity -logFile /dev/stdout - batchmode -quit -buildOSXUniversalPlayer test.app # ライセンス正常(これが出力されるかが超大事!) LICENSE SYSTEM [2019625 0:39:31] Next license update check is after 2019-06-26T04:29:25

Slide 13

Slide 13 text

खॱ͕໘౗ʂ • Dockerイメージがローカルで6GBもある だけで病みそうなのに、
 準備作業がCLIで完結しない! • しかもライセンスファイルが厄介で
 異なるDockerイメージでは使え
 なかったり色々ライセンスエラーが
 起きやすい! これは病む!

Slide 14

Slide 14 text

̏ つらい Android ビルド

Slide 15

Slide 15 text

AndroidϏϧυ͸໘౗ • Androidビルドのためには
 JDKおよびAndroid SDKが必要 • これらをDockerにインストールするのは なかなか難易度が高い • 参考 : https://hub.docker.com/r/ circleci/android/dockerfile

Slide 16

Slide 16 text

ਆ߱ྟͱࢥ͍͖΍… • gableroux/unity3d に、Android対応の Merge Request があり、それが
 5月に適応されて「よっしゃ!」と
 思ったけれど、残念ながらあれこれ試す も上手く行かず…… • 上手くいった方いらっしゃいましたら
 方法教えてください・・・

Slide 17

Slide 17 text

CIΛ͢ΔͳΒ • Dockerでがんばるのは、Unity, JDK, Android SDK をインストールするあたり で無理がある。ローカルでのサイズも 7GB近くなりDockerらしくない • いらないPCで自宅サーバーを建てて、
 Jenkins などのCIツールを入れて
 git hook で動かすのが現実的では

Slide 18

Slide 18 text

̐ そして私はどうしたか

Slide 19

Slide 19 text

CI͸͖͋ΒΊͨ • CI導入をがんばるのを2日ほど続けた • 先ほどのような課題、および個人開発で あることを踏まえると、
 CIで便利になる時間よりもCI導入にかけ る時間の方が大きくなりそうだった

Slide 20

Slide 20 text

ָ͔͠͠͸͍ͨ͠ • ふだんの「Build Settings」は
 「PC, Mac & Linux Standalone」にし ておいて、キリのいいときだけAndroid ビルドをおこないたい • それを手動でやるのは面倒 • Unity CLI は Unity.app 実行中は
 実行できない問題

Slide 21

Slide 21 text

͡Ό͋Ͳ͏͔ͨ͠ʁ Build Android ボタン!

Slide 22

Slide 22 text

Build Android Ϙλϯ • Unity Editorは拡張が可能なので
 1. Platform を Android に Switch
 2. ビルド
 3. 元の Platform に Switch
 の一連の流れをおこなってくれる
 メニューアイテムを追加 • お好みでショートカットも振れます

Slide 23

Slide 23 text

Build Android Ϙλϯ • コードは私のブログを↓
 https://nekonenene.hatenablog.com/ entry/2019/05/20/030642 • より詳しく知りたくなった方は
 『Unity エディター拡張入門』を↓
 https://anchan828.github.io/editor- manual/web/index.html

Slide 24

Slide 24 text

deploygate΁͸CLIͰ .PHONY: deploy deploy: dg deploy ./Build/MyApp.apk --message '$(shell git log -1 --pretty=%B)' • 上のように Makefile に書いており、
 「make deploy」でデプロイしている • deploygateへ投げるのもUnity拡張で
 メニューアイテムにあると便利かも?

Slide 25

Slide 25 text

̑ まとめ

Slide 26

Slide 26 text

·ͱΊ • Unity, JDK, Android SDK、いずれも
 容量が大きくライセンスが絡むもので
 Dockerへのインストールとは相性悪い • CIをおこなうなら、Docker以外の手法も 検討に入れると良さそう • CIが必要なら Unity Cloud Build に
 お金を払う価値は充分にある

Slide 27

Slide 27 text

࣭໰͸࠙਌ձͰ • 「CircleCI? deploygate?」とか
 疑問点が多かった方や、
 Editor拡張についてもっと知りたい方な ど、懇親会のお時間でぜひ。 • 「うちは Unity Cloud Build 使わず CI 回せてるよ〜」って方いらっしゃい ましたら詳しく伺いたいです!