Xcode Cloudワークフローによるビルドの強化

An app icon is centered on a blue gradient background. The icon is a white rounded square with a light blue grid pattern, featuring a blue cloud symbol in the middle. A black, three-dimensional hammer rests diagonally across the cloud.

初めてのアプリ開発でも、TestFlightにアプリをリリースする場合でも、Appleの継続的インテグレーションおよびデリバリーサービスであるXcode Cloudを使えば、ビルドインフラストラクチャの管理に伴う複雑さを排除して、ビルドとテストのワークフローを自動化できます。Xcode Cloudがあれば、デベロッパは最も重要なこと、つまりアイデアの実現に集中できるようになります。アプリのビルドやテスト、デプロイといった繰り返しのタスクは、自動化されたワークフローがすべて処理してくれます。

ここでは、Xcode Cloudチームが、作業効率をさらに高める5つのワークフローをご紹介します。


初めての方へ

Xcode Cloudの利用を開始するには、開発クイックスタートガイド(英語)をご覧ください。

ワークフローについて

Xcode Cloudワークフローとは、特定の条件を満たした時に実行される一連の自動化された処理のことです。これは、「Xが発生したらYを実行する」という手順をXcode Cloudに伝えるレシピのようなものです。例えば、「誰かがプル要求を送信するたびにアプリをビルドし、すべてのテストを実行する。すべてのテストに合格したら、チームにSlack通知を送信する」といったワークフローを作成できます。

各ワークフローは以下の要素で構成されています。

  • 開始条件: ワークフローの開始トリガ(プル要求、コードのプッシュ、スケジュールなど)
  • アクション: ワークフローがトリガされた時に実行される処理(ビルド、テスト、アーカイブ、解析など)
  • ポストアクション: メインのアクションの完了後に行われる処理(通知の送信、TestFlightへのデプロイなど)
  • 環境: 使用するXcodeバージョンとmacOSバージョン

ワークフローの設定について詳しくは、ドキュメントをご覧ください。


  1. すべてのプル要求を自動的に検証する

問題点: 提案された変更によってビルドが壊れたり、テストが失敗したりしないかを、マージする前に確認する必要があります。

解決法: プル要求ごとにビルドとテストを自動で行う検証ワークフローを作成することで、変更をマージしても問題がないかどうかのフィードバックをすばやく取得できます。プル要求の検証を有効にすると、新規または更新されたプル要求ごとにビルドが自動的にトリガされ、テストスイートが実行されます。結果はXcodeとApp Store Connectに直接表示されるので、変更をマージする準備ができているかどうかを簡単に確認できます。

設定:

  • Xcode内:Xcode Cloudの「Integrate」>「Create Workflow」を選択
  • 名前:「プル要求の検証」
  • 開始条件:「プル要求の変更」(「任意のブランチ」またはカスタムのブランチセット)
  • アクション:ターゲットプラットフォーム(iOS、macOS、tvOS、watchOS)向けのビルドとテスト
  • ポストアクション:Eメール通知(成功時と失敗時)
  • 環境:Xcodeバージョンと、対応するmacOSバージョンを選択

プロのヒント: テストスイートが大規模な場合は、最も重要なテストだけを含むスキームを別途作成し、主要な問題を見逃すことなく迅速なフィードバックを得られるようにしましょう。


  1. テスト済みの新しいビルドで一日を始める

問題点: 1日を通して複数のチームメンバーが何度もコミットを行うため、最新のコードが実際に機能するかどうかわかりません。

解決法: 夜間ビルドをスケジュールして、アプリを自動的にコンパイル、テスト、パッケージ化できます。このワークフローでは、テスト用に最新の夜間ビルドを生成し、リグレッションを迅速に検出することで、コードベースを常に検証済みの状態に保ちます。これにより、チームは毎日新しいビルドとフィードバックが用意された状態で作業を開始できるようになります。

設定:

  • トリガ:スケジュール(メインブランチで毎日午前2時など)
  • ブランチ:開発またはメイン
  • アクション:ビルド、テスト、アーカイブ
  • アーカイブの配信アクション:アーカイブを社内のTestFlightテスターに配信

プロのヒント: すべてのプラットフォームと構成にわたり、完全なテストスイートが実行されるように夜間ビルドを設定すると、開発を妨げることなく包括的なテストカバレッジを確保できます。


  1. 新機能に関するフィードバックをすばやく得る

問題点: 機能ブランチでの作業中に問題を早期に発見したいのですが、完全なテストスイートの実行には時間がかかりすぎるため、イテレーションを迅速に行えません。

解決法: 機能ブランチでターゲットを絞ったテストを実行する軽量なワークフローを作成することで、待ち時間なしで迅速なフィードバックが得られます。このワークフローは日々の開発に最適です。包括的なテストスイートの完了を待つことなく、最も重要な機能をすばやく検証できます。

設定:

  • トリガ:feature/*に一致するブランチへのプッシュ
  • アクション:ビルド、テスト(より軽量なスキームが対象)
  • オプションの条件:関連するファイルが変更された場合のみ実行

プロのヒント: テストのスコープ(ユニットテスト、統合テスト、UIテスト)ごとに別々のテストスキームを作成します。機能ブランチのワークフローでは、最も高速なテストスキームを使用しましょう。


  1. テスターにアプリをすばやく配信する

問題点: バグの修正や機能の追加を行った後、すぐにテスターにテストしてもらいたいのですが、手動でビルドしてTestFlightにアップロードする時間がありません。

解決法: TestFlight配信を自動化することで、コードをプッシュしてから数分以内に最新のビルドをテスターに配信できます。迅速な配信により、開発チームは最小限の待ち時間かつ実際と同じ条件下で、UXの変更、バグ修正、リリース候補版を検証できるようになります。

設定:

  • トリガ:testflight/*ブランチへのプッシュ、またはマージ後に手動で開始
  • アクション:ビルド、テスト、TestFlight配信用アーカイブ
  • ポストアクション:社内または社外のTestFlightテスターへの配信

プロのヒント: 配信する前に最も重要なテストのみを実行し、テスターが検証済みビルドを無駄な遅延なく入手できるようにしましょう。


  1. App Storeでのリリースを自動化する

問題点: リリース日には手作業で多くのステップ(ビルド、テスト、アーカイブ、アップロード)を実行する必要があり、エラーがあれば最初からやり直さなくてはなりません。

解決法: リリースプロセス全体を自動化して、バージョンにタグを付けるだけで、本番対応のビルドを自動的に作成できます。リリースをバージョンタグに関連付けることで、公開プロセスの予測可能性と再現性を確保できます。各タグでは、本番対応の検証済みビルドが自動的に作成され、App Store Connectにアーカイブされます。これにより、時間を節約できるだけでなく人為的なエラーも減り、各リリースの信頼性が高まります。

設定:

  • トリガ:タグ(v1.0.0、v1.1.0など)
  • アクション:ビルト、テスト、アーカイブ
  • ポストアクション:EメールとSlackでの通知

プロのヒント: タグにはセマンティックバージョニング(v1.0.0、v1.1.0)を使用し、リリースを整理して予測可能性を高めましょう。


まとめ

重要: 最適なワークフローとは、実際に役立つワークフローです。まずは1つか2つのワークフローから始めて、メリットを確認しながら徐々に自動化の範囲を広げていきましょう。気づけば、それなしでの開発が考えられなくなっているはずです。