Roppongi.unity #3 で発表 ( https://roppongiunity.connpass.com/event/129420/ )
speakerdeck はリンクのクリックができないので、 リンクをクリックしたい方はダウンロード、もしくは下のリンクへ https://drive.google.com/open?id=1-5dTt6LCF_DbVGi3r8ekz4mEcllPRpCO
ϋτωίΤUnityでAndroid自動ビルドしたかった話@nekonenene2019年6月25日
View Slide
ࣗݾհハトネコエ• Twitter : @nekonenene• Github : nekonenene最近よ〜うやく インタラクティブミュージックのをやり始めました気持ちよさが追究されててすごい。
Unityͷ͖͔͚ͬ5月のコミティアでサークルさんと立ち話「新作出ないんですか?」 「プログラマーさんが都合つかなくて」 「なにかアドバイス程度なら…」 「もしかしてUnityやってくれますか」 「と…とりあえず企画書ください!」からスタート。Unity何もわからない。テラシュールブログさん助かってます
話すこと1. 結論2. つらい Unity x Docker3. つらい Android ビルド4. そして私はどうしたか5. まとめ
̍結論
݁• 身も蓋もないですが Unity Cloud Build を使いましょう• まだ初心者だし、 毎月9ドルを払うのはちょっと…… とあがいた結果が、 以降のスライドです
̎つらい Unity x Docker
DockerΠϝʔδͷ༻ҙ• CircleCI を使うにしても wercker を使うにしても、 Dockerイメージが必要です。• これを用意するのがとても大変です
Unity x Docker• https://hub.docker.com/r/gableroux/unity3d がとても優秀• 自動ビルドによりUnity最新版が すぐにDocker Hubにプッシュされるようになっています
͔͠͠……• https://gitlab.com/gableroux/unity3d-gitlab-ci-example に 使い方が書かれているが大変……• 実際に手順を見てみましょう (上のリンクで書かれているものとやや異なります)
͓͓·͔ͳखॱ 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/bashxvfb-run --auto-servernum --server-args='-screen 0640x480x24' /opt/Unity/Editor/Unity -logFile /dev/stdout -batchmode -quit -username "$EMAIL" -password "$PASS"echo ' unity3d.alf͜ΕΛ https://license.unity3d.com/manual ʹΞοϓϩʔυ
͓͓·͔ͳखॱ 2cp 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 0640x480x24' /opt/Unity/Editor/Unity -logFile /dev/stdout -batchmode -quit -buildOSXUniversalPlayer test.app# ライセンス正常(これが出力されるかが超大事!)LICENSE SYSTEM [2019625 0:39:31] Next license update check isafter 2019-06-26T04:29:25
खॱ͕໘ʂ• Dockerイメージがローカルで6GBもあるだけで病みそうなのに、 準備作業がCLIで完結しない!• しかもライセンスファイルが厄介で 異なるDockerイメージでは使え なかったり色々ライセンスエラーが 起きやすい! これは病む!
̏つらい Android ビルド
AndroidϏϧυ໘• Androidビルドのためには JDKおよびAndroid SDKが必要• これらをDockerにインストールするのはなかなか難易度が高い• 参考 : https://hub.docker.com/r/circleci/android/dockerfile
ਆ߱ྟͱࢥ͍͖…• gableroux/unity3d に、Android対応のMerge Request があり、それが 5月に適応されて「よっしゃ!」と 思ったけれど、残念ながらあれこれ試すも上手く行かず……• 上手くいった方いらっしゃいましたら 方法教えてください・・・
CIΛ͢ΔͳΒ• Dockerでがんばるのは、Unity, JDK,Android SDK をインストールするあたりで無理がある。ローカルでのサイズも7GB近くなりDockerらしくない• いらないPCで自宅サーバーを建てて、 Jenkins などのCIツールを入れて git hook で動かすのが現実的では
̐そして私はどうしたか
CI͖͋ΒΊͨ• CI導入をがんばるのを2日ほど続けた• 先ほどのような課題、および個人開発であることを踏まえると、 CIで便利になる時間よりもCI導入にかける時間の方が大きくなりそうだった
ָ͔͍ͨ͠͠͠• ふだんの「Build Settings」は 「PC, Mac & Linux Standalone」にしておいて、キリのいいときだけAndroidビルドをおこないたい• それを手動でやるのは面倒• Unity CLI は Unity.app 実行中は 実行できない問題
͡Ό͋Ͳ͏͔ͨ͠ʁBuildAndroidボタン!
Build Android Ϙλϯ• Unity Editorは拡張が可能なので 1. Platform を Android に Switch 2. ビルド 3. 元の Platform に Switch の一連の流れをおこなってくれる メニューアイテムを追加• お好みでショートカットも振れます
Build Android Ϙλϯ• コードは私のブログを↓ https://nekonenene.hatenablog.com/entry/2019/05/20/030642• より詳しく知りたくなった方は 『Unity エディター拡張入門』を↓ https://anchan828.github.io/editor-manual/web/index.html
deploygateCLIͰ.PHONY: deploydeploy:dg deploy ./Build/MyApp.apk --message '$(shell git log -1--pretty=%B)'• 上のように Makefile に書いており、 「make deploy」でデプロイしている• deploygateへ投げるのもUnity拡張で メニューアイテムにあると便利かも?
̑まとめ
·ͱΊ• Unity, JDK, Android SDK、いずれも 容量が大きくライセンスが絡むもので Dockerへのインストールとは相性悪い• CIをおこなうなら、Docker以外の手法も検討に入れると良さそう• CIが必要なら Unity Cloud Build に お金を払う価値は充分にある
࣭࠙ձͰ• 「CircleCI? deploygate?」とか 疑問点が多かった方や、 Editor拡張についてもっと知りたい方など、懇親会のお時間でぜひ。• 「うちは Unity Cloud Build 使わずCI 回せてるよ〜」って方いらっしゃいましたら詳しく伺いたいです!