AppleのCIビルドサービスであるXcode Cloudを理解する

AppleのCIビルドサービスであるXcode Cloudを理解する

Xcode Cloudは、Appleが提供する開発者向けの継続的インテグレーションビルドサービスです。ソフトウェア開発にXcode Cloudを使い始める方法をご紹介します。

WWDC 2021で、Appleは開発IDE向けの新しいクラウドビルドサービス「Xcode Cloud」を発表しました。

Xcode Cloud は、 Apple のサーバー上でホストされる継続的インテグレーション(CI) ビルド サービスであり、開発チームが共同作業を行って、ソフトウェアの構成とビルドのためのビルドおよびソフトウェア パッケージング サービスを自動化できます。

継続的インテグレーションの背後にある考え方は、ボットまたはボットのセットがソース コード リポジトリでコードの変更を監視し、特定の間隔でソース コードを取得してソフトウェア コンポーネントを自動的に構築し、関係者に自動的に配布するというものです。

CIを利用することで、開発者や企業は他のコンピューターにビルドプロセスを手動で管理させることで、ビルドと配布の時間を短縮できます。CIがあれば、開発者が手動でビルドを行うために時間を費やす時代は終わります。

CI を自動化されたビルド エンジニア、つまりビルドと配布のあらゆる側面を管理できるボットと考えてください。

Xcode Cloud ビルド プロセス。

Xcode Cloud ビルド プロセス。

要件

Xcode Cloud を使用するには、次の要件を満たす必要があります。

  1. Apple Developer Programに登録する
  2. Xcode 14.0.1以降を使用してください
  3. Xcodeの設定でApple IDを追加する
  4. App Store Connect にアプリのアプリレコードを作成します
  5. Xcode Cloudをオンラインソースコード管理システムに接続します

料金

Appleは現在、Apple開発者アカウントごとにXcode Cloudのコンピューティング時間を25時間無料で提供しています。追加のコンピューティング時間は、100、250、1000時間単位で、月額49.95ドルから399.99ドルの範囲でご利用いただけます。

詳細については、Xcode Cloud の概要ページを参照してください。

複雑

ご注意ください。Xcode Cloud の使用は簡単ではありません。Apple は Xcode Cloud を簡単に使い始められるようにしようと試みましたが、その努力は失敗に終わりました。

Xcode Cloud は複雑で、その使用方法を完全に理解するには、 Apple の開発者向けドキュメントの10以上のセクションを読む必要があるかもしれません。そして、Apple の開発者向けドキュメントはすでに非常に冗長で散在しています。

Apple の Xcode Cloud 開発者ページにあるリンクから次のリンクへとジャンプしていると、ドキュメントを読み進めすぎて、理解しようとしていたトピックを忘れていることに気づくことがあります。

App Store Connectは、開発者とチームがチームメンバー、アプリの設定、詳細情報、開発者間のコラボレーションを管理するAppleのウェブポータルです。App Store ConnectとXcode Cloudのどちらにも、サインインするためのApple DeveloperアカウントとApple IDが必要です。

アカウントの問題、チームと権限の問題、ソースコード管理のセットアップと構成、App Store Connect の問題があります。

特に、App Store Connect の「証明書、識別子、プロファイル」セクションに古い App ID があり、Xcode Cloud のリリース後にそれを設定していない場合は、App Store Connect ポータルの Xcode Cloud タブがそのアプリでは機能しないことがあります。

古い App ID での Xcode Cloud の障害。

古い App ID での Xcode Cloud の障害。

Apple はこれについて現時点では説明しておらず、この場合の唯一の解決策は、まず App Store からアプリを削除し、App ID を削除して、同じアプリ バンドル ID を持つ新しいアプリを作成し、その App ID に対して App Store Connect で Xcode Cloud を設定することです。

これは Apple 側のばかばかしく許しがたい見落としだ。

さらに悪いことに、App ID を削除して再作成する必要がある場合、アプリの過去の指標や分析データもすべて失われる可能性があり、すべてのアプリの詳細、スクリーンショット、ムービーを App Store Connect に再入力して再アップロードする必要があります。

あなたまたはチーム メンバーの 1 人が、git、GitHub、またはその他のサポートされているソース コード管理システムなどのソース コード管理に精通している必要もあります。

最低限、以下のドキュメントのほとんどを読む必要があります。

  1. App Storeコネクト
  2. App Store Connect の証明書、識別子、プロファイル
  3. App Store Connect のチームとメンバーの管理
  4. Xcode ソースコード管理
  5. Xcode の歌唱と機能
  6. Xcodeスキームと共有
  7. Xcode Cloud による継続的インテグレーションとデリバリーについて
  8. チーム用の Xcode Cloud の設定
  9. 依存関係をXcode Cloudで利用できるようにする
  10. Xcode Cloud の使用要件
  11. ソース管理の要件
  12. 最初のXcode Cloudワークフローを構成する

さらに、Apple は Xcode 10 で Xcode のビルド システムを変更したため、これらの変更にまだ慣れていない場合は、Xcode 10 リリース ノートの「Xcode 10 のビルド システム リリース ノート」ページを読む必要があります。

Apple の開発者向けドキュメントを確認するの に何時間、あるいは何日もかかる覚悟をしておいてください。

プロジェクトとワークスペースの要件

Xcode Cloud を使用するには、プロジェクトまたはワークスペースで設定しなければならない項目が多数あります。リストが長すぎるため、ここでは詳しく説明しません。

Xcode プロジェクトとワークスペースの要件の詳細については、Apple Xcode Cloud の要件ページをご覧ください。

プロジェクトが要件を満たしたら、Xcode Cloud を設定して、GitHub、GitLab、BitBucket、または BitBucket サーバー上のプロジェクトのソースコード管理アカウントにアクセスできるようにする必要があります。Xcode Cloud が動作するには、Git ベースのネットワーク対応 SCM システムが必要です。

プロジェクトに SCM (ソースコード管理) 管理者がいる場合は、上記の SCM サービスのいずれかを使用して、Xcode Cloud と開発チームのアカウントが Xcode Cloud 内の SCM アカウントにアクセスできるように設定するよう依頼してください。

Xcode Cloud を GitHub に接続します。

Xcode Cloud を GitHub に接続します。

Apple の「チーム用に Xcode Cloud を構成する」ページに詳細情報が記載されています。

Apple は、Xcode プロジェクトまたはワークスペースを生成または変更するサードパーティ製ツールの使用について、Xcode Cloud の要件ページで次のような警告も提供しています。

重要:
Xcode Cloud では、常に存在する一貫性のある Xcode プロジェクトまたはワークスペースが必要です。プロジェクトまたはワークスペースを動的に生成または編集するサードパーティ製ツールを使用すると、Xcode Cloud の初期設定およびその後のビルドが失敗する可能性があります。

Xcode Cloud を SCM システムにまだ接続していない場合、App Store Connect で App ID とバンドル ID が設定されている Xcode プロジェクトを開くと、次に Xcode プロジェクトを開いたときに、Xcode に次のアラートが表示されることがあります。

ビルドの詳細を詳しく見る

Xcode Cloud と App Store Connect の開発者情報をすべて確認して理解し、Xcode Cloud を GitHub またはサポートされている他のクラウド SCM サービスに接続し、Xcode Cloud を使用するように App ID を構成したら、Xcode 自体から使用を開始できます。

CIサービスであるXcode Cloudでは、監視対象のソースコードリポジトリ(使用するブランチを含む)の指定、ビルドの設定、ビルドの実行と監視、ビルドのエラーチェックが可能です。Xcode Cloudボットを使用すると、ビルドの実行タイミングの設定、ビルドの監視、AppleのTestFlightビルド配信アプリおよびサービスを使用したビルドの配信タイミングの自動化が可能です。

たとえば、Xcode Cloud ボットを設定して、夜間ビルドを実行するだけでなく、特定のプロジェクト マイルストーン、ソース コードのコミットが発生したとき、またはリポジトリ内の特定のブランチに変更が発生したときのみビルドを実行することもできます。

Xcode Cloud ボットは、ビルドがいつ失敗したか、失敗した場合、その原因は何か、誰が責任者であるかを知らせてくれます。

Xcode の Xcode Cloud 概要ペイン。

Xcode の Xcode Cloud 概要ペイン。

Xcode Cloud ボットを設定すると、指定した時間にビルドが自動的に実行されるため、ソフトウェアのビルドについて心配する必要がなくなります。Xcode Cloud がすべてのビルドを処理します。

Xcode Cloudの現在のバージョンでは、GitHubリポジトリにログインして認証すると、AppleのXcode Cloudサーバー上で自動的にプライベートビルド用のソースコードを取得できます。コードのダウンロードとビルドはすべてAppleのサーバー上で行われるため、ビルドマシンをビルドサーバーとして動作させるための設定を気にする必要はありません。

Xcode の Could ビルドの概要タブにある 「Mine」タブをクリックすると、チーム全体または自分だけのすべてのビルド ステータスとエラーを確認することもできます。

使用

「マイニング」タブを使用すると、自分の結果だけを表示できます。

Xcode 内から Xcode Cloud を使用する

面倒なセットアップとドキュメント作成がすべて完了すれば、AppleはXcode IDEアプリ内からXcode Cloudを非常に簡単に使えるようにしまし。また、Appleの開発者向けWebポータルApp Store ConnectからXcode Cloudの詳細を確認したり設定したりすることもできます。

Mac の Xcode IDE で Xcode Cloud を使い始めるには、Xcode を起動し、画面上部のメニューバーにある 製品メニューからXcode Cloud -> Create Workflow...を選択します。

Xcode プロジェクトの App ID、チームと署名の設定、および SCM 情報が Xcode Cloud に接続されるまで、Xcode Cloudメニュー項目は Xcode に表示されないことに注意してください。

次に、プロジェクトまたはワークフローウィンドウの左側にあるXcodeのプロジェクトエディタで、「ローカル」タブの隣にある「クラウド」タブを選択します。これにより、XcodeのビューがXcode Cloudビューに切り替わります。

クラウドビューでは、現在のプロジェクトのすべてのビルドワークフローとタスクを確認できます。また、最近のビルドの結果もこのビューで確認できます。

クラウドビューの右側には 「ビルドを開始」ボタンがあり、これをクリックするとすぐにビルドを開始できます。App Store Connectのビルドレイアウトビューは、Web版と似ています。

エラーのためにビルドが失敗した場合は、概要ペインに [再構築]ボタンが表示されます。

Xcode Cloud ワークフロー

Xcode Cloud はワークフローを使用して、ビルドの開始時に実行するビルド条件を設定します。

Xcode プロジェクトで新しい Xcode Cloud ワークフローを作成するには、左側のプロジェクト ウィンドウ ナビゲータで[ Cloud]タブを選択し、Xcode のメニュー バーから[Product] -> [Xcode Cloud] -> [Create Workflow]を選択します。

これにより、Xcode で Xcode Cloud プロジェクトのオンボーディング シートが開きます。

ここから、GitHub 上のソースコードリポジトリ、またはサポートされているその他の Git ベースサービスへのアクセスを許可できます。これは、上記の Xcode Cloud のセットアップ手順で SCM システムが既に接続されていることを前提としています。

GitHub へのアクセスを許可します。

GitHub へのアクセスを許可します。

アクセスを許可したら、シートでXcode Cloudワークフローの初期条件を設定できます。これには、開始条件、環境、アクション、および事後アクションが含まれます。

電子メールまたは Slack 経由で通知を設定することもできます。

「一般」行では、ワークフローの名前と説明を入力し、ポップアップメニューからリポジトリを選択し、プロジェクトまたはワークスペースを選択できます。次のステップで初期ビルド条件を設定する前に、これらを設定しておく必要があります。

[全般] タブでワークフロー情報を設定します。

[全般] タブでワークフロー情報を設定します。

[開始条件]では、ビルドに使用する Git ブランチ、SCM の変更に基づいてビルドをトリガーするタイミング、ファイルの変更時にビルドを開始するか、カスタム条件に基づいてビルドを開始するかを選択できます。

ビルドの開始条件をすべて設定したら、[保存]ボタンをクリックします。

ビルドの開始条件を設定します。

ビルドの開始条件を設定します。

ビルド中およびビルド後に実行する環境設定やアクションを設定することもできます。

Xcode Cloud ワークフローが設定されると、Xcode Cloud は設定した条件に基づいてクラウドベースのビルドの実行を開始します。

監視

Xcode プロジェクトのナビゲータ ウィンドウの [ クラウド]タブをクリックするか、App Store Connect の [Xcode クラウド] タブをクリックすると、いつでもビルドのステータスを確認できます。

Xcodeのプロジェクトナビゲータの「クラウド」タブには、すべてのビルドの概要、各ビルドの結果、そしてプロジェクトの各コントリビュータで発生した可能性のあるエラーが表示されます。「概要」サマリーペインでは、すべてのビルド結果を一目で確認できます。

学習曲線は急だが、非常に役に立つ

Xcode Cloudは、急峻な学習曲線を乗り越えれば、大きな可能性を秘めています。しかし、非常に速く読み書きできる人でない限り、製品をマスターするには、少なくとも数日かけてドキュメントを読み、Xcode CloudとXcodeの機能を実際に試してみる必要があるでしょう。

Xcode Cloudをシームレスで使いやすくするために、AppleはまずApp Store Connectの問題を修正し、次にApple Store Connect内での設定を容易にする必要があります。署名機能とケーパビリティ機能がアップグレードされたように、自動設定機能も導入されると良いでしょう。

最も重要なのは、Apple が開発者向けドキュメントを削減、短縮、合理化、統合して、Xcode クラウドの学習と使用をより迅速かつ容易にすることです。

チームと自動化の観点から見ると、Xcode Cloud が有益であることは間違いありません。ビルドサーバーのインフラストラクチャと管理から解放されることは、あらゆる開発チームにとって大きなメリットです。

さらに、最高レベルのプランでも、Xcode Cloud の月額コストは、同等のビルドおよびサーバー エンジニア チームに比べて大幅に低くなる可能性があります。

Apple が上記の問題を修正すれば、Xcode Cloud はあらゆる企業や開発チームにとって大きな資産となるでしょう。

今後の記事では、Xcode ワークフローの使用と、Xcode Cloud でテストを実行する方法についてさらに詳しく説明します。