6.5K Views
September 18, 23
スライド概要
Cloud Operator Days Tokyo 2023
https://cloudopsdays.com/
CircleCI の Japan・APAC 担当として、様々なCI/CD(Web/インフラ/モバイル/ゲーム)の導入・技術的支援をリードしています。前職ではフリマアプリ企業で Software Engineer in Test(SET)、AIスタートアップ企業で DevOps エンジニアとして CI / CD や自動テストの導入・改善を行ってきました。
Unityを使ったモバイルゲームCI/CD パイプラインをクラウドネイティブ化しよう 根本 征 CircleCI 合同会社 シニアソリューションズエンジニア 1
自己紹介 ● 名前:根本 征 / Tadashi Nemoto ● ポジション:Senior Solutions Engineer ● Japan / APAC 担当として、CI/CD(Web/インフラ/ モバイル/ゲーム)の導入・技術支援をリード ● 経歴 ○ フリマアプリ企業で Software Engineer in Test ○ AI スタートアップ企業で DevOps エンジニア tadashi0713 tadashi-nemoto 2
アジェンダ ● モバイルゲーム開発におけるCI/CDの重要性と課題 ● GameCI × fastlane × CircleCI を使った Unity モバイルゲーム CI/CDパイプライン(概要) ● CI/CD パイプライン解説 ● まとめ 3
モバイルゲーム開発における CI/CDの重要性と課題 4
https://gamewith.jp/gamedb/ios/ranking/index 5
● 低コストでソフトウェアの更新ができる ● 成功には継続率が重要 ● 様々なデバイスから快適に使ってもらうための品質向上 素早く、継続的に機能提供・改善していくことが重要 CI/CD(継続的インテグレーション/継続的デリバリー)が不可欠 6
モバイルゲームCI/CDに起きがちな課題 ● 実行するビルドマシン(特にiOSビルドに必要なmac) ○ スペックの高いマシンが必要 ○ macハードウェアの用意・メンテナンス ■ ○ ● 自前で購入 or 制限のあるクラウド macOS・Xcodeの定期的なアップデート CI/CDパイプラインのセットアップの難易度 ○ Unity Editor のインストール ○ ライセンスのアクティベート ○ スクリプト(各プラットフォームへのビルド・配信)の準備 7
モバイルゲームCI/CDに起きがちな課題 ● CI/CD を導入できていない ● 実行するビルドマシン(特にiOSビルドに必要なmac) ○ ローカルマシンでビルド・テスト ○ スペックの高いマシンが必要 ○ macハードウェアの用意・メンテナンス ● オンプレミス環境(Jenkinsなど)を運用 ○ ■メンテナンスコストが高い 自前で購入 or 制限のあるクラウド ○○ macOS・Xcodeの定期的なアップデート 開発のスケールに対応できない ● CI/CDパイプラインのセットアップの難易度 ○ 生産性が高くならない ○ ○ Unity Editor のインストール ■ ビルドスピードが遅い、ビルドが不安定 ライセンスのアクティベート ○○ スクリプト(各プラットフォームへのビルド・配信)の準備 リモート開発に不適 8
GameCI + fastlane + CircleCI を使った Unity モバイルゲーム CI/CDパイプライン(概要) 9
GameCI ● オープンソースプロジェクト ○ https://game.ci/ ● Unity の CI/CD のセットアップ・メンテナンスは難 易度が高い ○ Unity Editor のインストール ○ ライセンスのアクティベーション ○ プラットフォーム毎のビルド設定 ● これらを簡単に実装することができるツール ● CircleCI、GitHub Actions、GitLab CI に対応 10
GameCI Docker イメージ CircleCI Orb(設定ファイルパッケージ) 11
fastlane ● Ruby製オープンソースプロジェクト ○ ● https://fastlane.tools/ モバイルアプリ(iOS/Android)開発に必要な 作業を自動化するツール ● テスト実行、コード署名(fastlane match)、ビルド、デ バッグ版配布、App Store / Play Store への リリースなど ● 主にモバイルアプリ開発(iOS/Android/Flutter/React Navtiveなど)で使われるが、モバイルゲーム開発 にも活用することができる 12
CircleCI ソースコード管理 コードコミット コラボレーション オーケストレーション デリバリ ビルド • テスト • デリバリ 本番環境へのリリース 開発 運用 実行 モニタリング • 運用 + さまざまなパートナーとの インテグレーション VCS非依存を今後サポート予定 13
ゲーム開発にも対応できる様々なビルド環境を提供 https://circleci.com/ja/product/features/resource-classes/ 14
ゲーム開発にも対応できる様々なビルド環境を提供(mac) iOS向けゲームアプリをビルドするために必要 CircleCI は豊富かつ常にアップデートされたmacOS環境を提供 ● Intel Mac ● 2023年から Apple Silicon Mac(M1 Mac)を提供開始 Intel Mac よりビルドスピードを最大 2倍に高めることが可能 https://circleci.com/ja/product/features/resource-classes/ 15
ゲーム開発にも対応できる様々なビルド環境を提供(mac) iOS向けゲームアプリをビルドするために必要 ● ゲーム開発にも対応できる様々なビルド環境 CircleCI は豊富かつ常にアップデートされたmacOS環境を提供 ● メンテナンスの必要がない(特にmac) ● Intel Mac ● 必要に応じて自動でスケール ● ● ビルドした時間・リソースクラスに応じて課金 2023年から Apple Silicon Mac(M1 Mac)を提供開始 Intel Mac よりビルドスピードを最大 2倍に高めることが可能 (実行していない時間は課金対象にならない) https://circleci.com/ja/product/features/resource-classes/ 16
CI/CD パイプライン解説 17
Unity ライセンスのアクティベート ● 使用するライセンスによってアクティベーション方法が異なります ○ ● https://game.ci/docs/circleci/activation/ 今回は Personal ライセンスを利用しています 18
Unity ライセンスのアクティベート ライセンスファイル https://license.unity3d.com/manual ● 使用するライセンスによってアクティベーション方法が異なります ○ ● https://game.ci/docs/circleci/activation/ 今回は Personal ライセンスを利用しています 19
ライセンスファイルを保存(CircleCI Context) ● UNITY_ENCODED_LICENSE は先ほど取得したライセンスファイルを base64で暗号化したもの 20
Android プラットフォームへのビルド・配布 21
Android プラットフォームへのビルド・配布 .apk 22
CPU / RAM 使用率 23
Android プラットフォームへのビルド・配布 24
iOS プラットフォームへのビルド・配布 25
iOS プラットフォームへのビルド・配布 26
iOS プラットフォームへのビルド・配布 Xcodeビルド ● 先ほどの Job で実行されたのは、Unity プロジェクトから Xcode プロジェクトの生成のみ ● この Xcode プロジェクトを Xcodeがインストールされた macOS 環境でビルドすることによって、iOS アプリケーション用バイナリ(.ipa)を作成することができる 27
iOS プラットフォームへのビルド・配布 28
iOS プラットフォームへのビルド・配布 https://github.com/tadashi0713/circleci-demo-mobile-unity/blob/master/fastlane/Fastfile 29
解説・サンプルデモ ● Unity を使ったモバイルゲーム CI/CD 環境をクラウドネイティブ化しよう ○ https://circleci.com/ja/blog/unitymobile-cicd/ ● tadashi0713/circleci-demo-mobile-unity 30
まとめ 31
まとめ ● リリース頻度の高いモバイルゲームを継続的に開発するためにはCI/CDが不可欠 ● モバイルゲームのCI/CDでは実行するビルドマシン(特にmac)とセットアップの 難易度が課題になりがち ● GameCI × fastlane × CircleCI を使った Unity モバイルゲーム CI/CD パイプライン ○ GameCI によって Unity ライセンスのアクティベート、iOS/Android プラットフォームへの ビルドを簡単にすることができる ○ fastlane によってモバイルゲーム特有のコード署名(fastlane match)、 配信(Firebase、App Store、Play Store)を簡単にすることができる ○ CircleCI によってmac含むモバイルゲームCI/CDに必要なビルドマシンを、 メンテナンス不要かつオンデマンドに用意することができる 32
Thank you!! 33