本記事はTVer Advent Calendar 2023の19日目の記事です。
はじめに
こんにちは、TVerでiOSアプリ開発を担当しています小森です。
Xcode Cloudの発表からしばらく経ちましたが、 CI/CDサービスを検討するに当たってXcode Cloudを初めて触ってみましたので、
本記事でXcode Cloudについてのセットアップ方法と、触ってみた感想をまとめたいと思います。
Xcode Cloudを検討されている方の参考になれば幸いです。
Xcode Cloudとは
Xcode CloueはAppleが提供するAppleプラットフォームのためのCI/CDサービスです。
利用手順について
XcodeのReport NavigatorのCloudタブからWorkflowの作成をして実行します。
Workflowについて
下記に簡易的なWorkflowの設定についてまとめます。 詳細情報は公式ドキュメントを参照してください。
General
ここではWorkflow名、ワークフロー説明文、リポジトリ、対象のProject or Workspaceの設定を行います。
Environment
ここでは実行するXcode VersionとmacOS Versionの選択と環境変数の設定を行います。 事前定義されている環境変数はこちらを参照してください。
Start Conditions
Workflowの起動トリガーの設定を行います。 他のCI/CDサービスと同じようにブランチの変更、プルリクエストの変更、タグの変更、スケジュール実行などに対応しています。
Actions
ActionはBuild, Test, Analyze, Archiveの4つから追加できます。 各Actionは並列実行することが可能です。
Post-Actions
Post-ActionsはTestFlight External Testing, TestFlight Internal Testing, Notarize, Notifyの4つから追加できます。 NotifyはSlackとEmailに対応しています。
触ったみた個人的感想
- とにかくシンプルで楽
Xcodeに組み込まれている機能ということもあり、セットアップはとても楽で簡単でした。
また、証明書やProvisioningProfileなどの管理が自動で対応されるのでfastlane matchを導入してごにょごにょなどする必要がありません。
そして、Test FlightやAppStoreConnectの連携も簡単にできます。
AppStoreConnectからWorkflowの実行も可能なので開発者以外も容易にWorkflow実行が可能なのは魅力的です。
- メンテナンスしにくいかも
ほかのCI/CDサービスだとWorkflowの設定をyamlファイルなどで記述し管理することができますが、
Xcode Cloudの場合は、XcodeもしくはAppStoreConnectからのGUIでの編集かApp Store Connect API経由での編集のみになります。
チームでメンテナンスしていくためにApp Store Connect APIも用意していると公式ドキュメントには記載されていますが
ソースコードでWorkflowの設定を管理することが可能な他のCI/CDサービスと比較するとちょっとメンテナンスしにくそうだなという印象を持ちました。
- キャッシュ機能がイマイチ
Deriverd Data配下のみがキャッシュ対象でSwift Package Managerを使用してインストールしたライブラリのみキャッシュされるみたいです。
サードパーティ製のツールやライブラリを導入する場合は、Xcode Cloudが提供しているHomebrewを使用し、
任意のタイミングで実行されるcustom build scriptsを使用してインストールする必要があります。
そのインストールしたツールやライブラリをキャッシュすることはできないので毎回インストールしなければならずイマイチだなという印象を持ちました。
ただ、Git LFSをサポートしてるので、CocoaPodsなどに関してはPodsディレクトリをGit管理下に置くアプローチを採用していればキャッシュ意識する必要がないので問題なく運用可能だと思います。
まとめ
今回はXcode Cloudの簡易的なセットアップ方法と触ってみた個人的感想を述べた記事でした。
個人開発をする上ではXcode Cloud一択で十分ではないかと思いますが、他のCI/CDサービスと比較するとメンテナンス性やキャッシュ機能などが少しネックかなと考えております。
ただ、料金に関しては比較的安く機能に関してもシンプルで使いやすい印象を受けたのでデメリットを補う案を模索しながら引き続き採用検討を進めたいと思いました。