ハイライト
Apple は TestFlight を macOS に導入し、開発者が Mac テスターにベータ ビルドを配布し、スクリーンショットのフィードバックとクラッシュ ログを収集し、内部テスト グループと Xcode Cloud を使用してビルドの配布を管理できるようにします。
主な内容
Mac アプリケーションのベータ テストは、以前は簡単に手作業になってしまいました。開発者はビルドをパッケージ化してテスターに送信し、新しいバージョンをインストールするように通知する必要があります。テスターは問題に遭遇した後、現象を説明し、ログを見つけてスクリーンショットを返送する必要があります。
このプロセスは長い間 iOS 上の TestFlight に引き継がれてきました。テスターは招待を受け入れ、ベータ版アプリをインストールすると、アプリのアップデートが自動的に届きます。クラッシュとスクリーンショットのフィードバックは App Store Connect に返されます。
WWDC 2021 の新機能: TestFlight が Mac に登場します。ネイティブ Mac アプリだけでなく、Apple Silicon Mac 上で実行される iOS アプリもサポートします。テスターは Mac App Store から TestFlight をダウンロードし、ベータ版アプリをインストールし、自動更新をオンにして、フィードバックを送信できます。
これにより、Mac テストの 3 つの問題点が解決されます。まず、App Store Connect を通じて均一に構築して配布します。 2 番目に、テスターはスクリーンショットを通じて問題を直接報告できます。 3 番目に、クラッシュ ログが自動的に収集され、App Store Connect と Xcode Organizer に表示されます。
Apple はチーム コラボレーション シナリオも追加しました。内部テストで複数のグループを作成できるようになりました。開発チームはすべてのビルドを自動的に受信でき、QA チームは安定したビルドのみを受信できます。 Xcode Cloud によって生成されたビルドはワークフローと Git ブランチごとに整理されているため、テスターはテストしたいバージョンを簡単に見つけることができます。
##詳細
Mac での TestFlight テスト プロセス
(00:26) TestFlight の主な仕事は、ベータ ビルドを配布し、フィードバックを収集することです。 2021 年より前に、すでに iOS と tvOS をサポートしています。同じ機能セットが macOS にも拡張されました。
TestFlight on Mac
- install beta apps
- setup automatic updates
- share feedback
- support native Mac apps
- support iOS apps on Apple Silicon Mac
キーポイント:
install beta apps: テスターは電子メールの招待状またはパブリック リンクを受け入れると、ベータ版アプリを Mac にインストールできます。setup automatic updates: テスターは自動更新を有効にすることができ、後続のビルドは自動的にインストールされます。share feedback: テスターは、改善のための質問や提案を送信できます。support native Mac apps: ネイティブ Mac アプリは TestFlight を通じて配布できます。support iOS apps on Apple Silicon Mac:Apple Silicon Mac 上で実行されている iOS アプリもテスト プロセスに入ることができます。
(01:07) テスターがテストに参加するには、電子メールによる招待とパブリック リンクという 2 つの入り口があります。招待を受け入れると、アプリのテスターになり、バージョンごとにグループ化されたさまざまなビルドを表示し、インストールするビルドを選択できます。
Tester invite flow
1. Developer sends an email invite or shares a public link
2. Tester accepts the invite
3. Tester browses builds grouped by versions
4. Tester clicks Install
5. Tester launches the beta app from TestFlight, Dock, Launchpad, or Finder
キーポイント:
- ステップ 1: 開発者は電子メールまたはパブリック リンクを通じてテスターを募集します。
- ステップ 2: テスターが招待を受け入れた後にのみ、アプリの TestFlight テストに参加します。
- ステップ 3: ビルドはバージョンごとにグループ化され、テスターは特定のバージョンを選択できます。
- ステップ 4: Mac 上の TestFlight でインストールが行われます。
- ステップ 5: インストール後、ベータ版アプリは TestFlight、Dock、Launchpad、および Finder から起動できます。
(01:42) Mac はベータ アプリをマークします。 Dock と Launchpad のアプリ名の横に黄色の点が表示されます。 Finder にベータ アプリケーションとして表示されます。
Beta app indicators on Mac
- Dock: yellow dot next to the app name
- Launchpad: yellow dot next to the app name
- Finder: Beta Application
キーポイント:
Dock:ユーザーはアプリを起動するとテストバージョンマークが表示されます。Launchpad: アプリリストにも同じ黄色い点が表示されます。Finder: テスト バージョンと正式バージョンの間の混乱を避けるために、ベータ アプリケーションをファイル レベルで表示します。
フィードバックとクラッシュ ログを App Store Connect に送信
(02:09) テスターは問題が発生した場合、アプリから直接フィードバックを送信できます。このプロセスは、スクリーンショットを撮って添付し、指示を記入して送信することから始まります。
Screenshot feedback flow
1. Tester takes a screenshot
2. Tester attaches the screenshot
3. Tester adds comments to describe the issue
4. Tester submits feedback
5. Developer views it in App Store Connect > Screenshot Feedback
キーポイント:
- ステップ 1: スクリーンショットを撮って、問題のあるシーンを保存します。
- ステップ 2: スクリーンショットをフィードバックの添付ファイルとして送信します。
- ステップ 3: コメントは、レプリケーション パスまたは目的の動作を補足するために使用されます。
- ステップ 4: フィードバックはテスター デバイスから直接送信されます。
- ステップ 5: 開発者は、App Store Connect のスクリーンショット フィードバック エリアでそれを確認します。
(02:38) ベータ アプリケーションがクラッシュすると、TestFlight は自動的にクラッシュ ログ (クラッシュ ログ) をキャプチャし、テスターがコメントを追加するためのダイアログ ボックスをポップアップ表示します。開発者は、App Store Connect のクラッシュ フィードバック エリアでログをダウンロードしたり、Xcode Organizer で表示したりできます。
Crash feedback flow
1. Beta app crashes
2. TestFlight automatically captures crash logs
3. Tester enters additional comments
4. Developer downloads crash logs in App Store Connect
5. Developer views the feedback in Xcode Organizer
キーポイント:
- ステップ 1: プロセスはベータ版アプリのクラッシュによってトリガーされます。
- ステップ 2: TestFlight はクラッシュ ログを自動的に収集します。
- ステップ 3: テスターはクラッシュ前に行ったことを追加できます。
- ステップ 4: App Store Connect はログのダウンロードを提供します。
- ステップ 5: Xcode Organizer もこのフィードバックを表示できます。
ネイティブ Mac アプリの配布条件
(03:22) ネイティブ Mac アプリは、TestFlight を通じて配布するときにプロビジョニング プロファイルが必要です。プロジェクトで Xcode の署名の自動管理を使用する場合、Xcode は説明ファイルを作成してインクルードします。プロジェクトが署名を手動で管理する場合、開発者は説明ファイルを明示的に追加する必要があります。
Native Mac app signing for TestFlight
- Xcode Automatically manage signing
- Xcode creates and includes the provisioning profile
- Manual signing
- Developer adds the provisioning profile explicitly
- Creation and upload are documented in the Developer portal
キーポイント:
Xcode Automatically manage signing: 自動署名パスは、プロファイル内の Xcode によって処理されます。Xcode creates and includes the provisioning profile: ビルドをアップロードすると、必要な説明ファイルがすでにビルドに含まれています。Manual signing: 手動署名プロジェクトの場合は、説明ファイルを自分で追加する必要があります。Developer portal: プロファイルを手動で作成してアップロードするプロセスについては、開発者ポータルで説明されています。
(03:53) 説明ファイルとともにアップロードされると、ビルドは App Store Connect の macOS エリアに表示されます。開発者は、テスト グループを作成し、ビルドを配布し、各ビルドのテスト データを表示できます。
App Store Connect metrics for a macOS TestFlight build
- invited testers
- installations on devices
- sessions in the last seven days
- crashes
- feedback count
キーポイント:
invited testers:招待されたテスターの数を表示します。installations on devices:デバイス上のインストール数を表示します。sessions in the last seven days: 過去 7 日間のセッション数を表示します。crashes:クラッシュ回数を表示します。feedback count:テスターのフィードバック数を表示します。
(04:22) クラッシュまたはスクリーンショットのフィードバックを表示する場合、開発者はプラットフォームごとに macOS を選択し、引き続き Mac デバイスまたは macOS バージョンごとにフィルタリングできます。
Feedback filters
- platform: macOS
- device: a specific Mac device
- OS version: a specific macOS version
キーポイント:
platform: macOS: 他のプラットフォームからの Mac フィードバックをフィルタリングします。device: 特定の Mac モデルの問題を特定します。OS version: 特定の macOS バージョンの問題を特定します。
Apple Silicon Mac 上の iOS アプリ TestFlight コントロール
(04:54) iPhone および iPad アプリは Apple Silicon Mac 上で実行できます。 TestFlight を使用すると、開発者はテスター グループごとにこれらの iOS ビルドを Mac で利用できるかどうかを制御できます。
Tester group setting
- enabled: iOS builds in this group are available to TestFlight on Apple Silicon Macs
- disabled: iOS builds from this group stop being available on Mac
キーポイント:
enabled: このグループの iOS ビルドは、Apple Silicon Mac の TestFlight に表示されます。disabled: このグループの iOS ビルドは Mac では利用できなくなります。Tester group: 制御の粒度はテスト グループ レベルとなり、アプリ全体よりも小さくなります。
(05:22) iOS ビルドは現在と同様に表示されますが、統計には Apple Silicon Mac も含まれます。クラッシュとスクリーンショットのフィードバックは、App Store Connect の iOS プラットフォームに残り、Apple Silicon Mac から送信されたデータが含まれます。
iOS build data with Apple Silicon Macs
- build counts include Apple Silicon Macs
- crashes appear under platform iOS
- screenshot feedback appears under platform iOS
- feedback submitted from Apple Silicon Macs is included
キーポイント:
build counts: iOS ビルド数には Apple Silicon Mac が含まれます。crashes: クラッシュ フィードバックは iOS プラットフォームで表示されます。screenshot feedback: スクリーンショットのフィードバックは iOS プラットフォームでも表示できます。Apple Silicon Macs: Mac から送信されたデータは、同じフィードバック フローに入ります。
社内テストグループが複数グループ管理に
(05:52) 内部テストは、以前は App Store Connect チームによるクイックトライアルとして利用可能でした。 2021 年の改善点は、複数の内部グループです。各内部グループは、ビルドの配布とフィードバックの収集を個別に構成できます。
Internal testing improvements
- create multiple internal groups
- configure build distribution per internal group
- configure feedback collection per internal group
- applies to all supported platforms
キーポイント:
create multiple internal groups: 内部テストはチームごとに分割できます。build distribution: 異なるグループは異なるビルドを取得できます。feedback collection: 異なるグループが個別にフィードバックをオンまたはオフにできます。all supported platforms: この改善は、TestFlight がサポートするすべてのプラットフォームに適用されます。
(06:20) Apple が挙げた例は、開発チームと QA チームです。開発チームは開発サイクル内のすべてのビルドにアクセスする必要があり、QA チームは特定の安定したビルドにのみアクセスする必要があります。
Internal group example
- Development Team
- automatic distribution enabled
- all current and future builds are available
- QA Team
- automatic distribution disabled
- specific builds are manually added
キーポイント:
Development Team: 開発グループは自動配布を有効にしており、現在および将来のビルドはこのグループに入ります。automatic distribution enabled: 最新のビルドを常に最新の状態に保つ必要がある人向け。QA Team: QA グループは自動配布をオフにし、特定のビルドのみを手動で追加します。specific builds: 安定した候補バージョンのみをテストするプロセスに適しています。
(07:02) セットアップ手順は App Store Connect で行われます。開発者は、「内部テスト」の横にあるプラス記号をクリックしてグループを作成し、名前を付けて、自動配布を有効にするかどうかを選択します。グループが作成されたら、ビルドとテスターを手動で追加できます。
Create internal groups in App Store Connect
1. Click the plus button next to Internal Testing
2. Give the internal group a name
3. Choose Enable automatic distribution for the Dev Team
4. Uncheck Enable automatic distribution for the QA Team
5. Add specific builds to the QA Team
6. Add testers to each group
7. Enable or disable feedback per group
キーポイント:
- ステップ 1: 入り口は内部テストの隣にあります。
- ステップ 2: 各内部グループには独自の名前があります。
- ステップ 3: 開発チームは自動配布を有効にします。
- ステップ 4: QA グループは自動配布をオフにします。
- ステップ 5: QA グループは、プラス記号を使用して手動でビルドを選択します。
- ステップ 6: 各グループは、対応するテスターを手動で選択します。
- ステップ 7: フィードバック収集はグループごとにオン/オフを切り替えることができます。
(07:52) チームが App Store Connect API を使用している場合は、BetaGroups リソースを通じてさまざまな構成で内部グループを管理できます。 Apple はプレゼンテーションでリソース名のみを指定し、具体的なリクエスト パスやフィールドについては明らかにしませんでした。
App Store Connect API resource
BetaGroups Resource
- manages internal groups
- supports different group configurations
キーポイント:
BetaGroups Resource: これは、講演内で明示的に言及された API リソースです。manages internal groups: 内部グループは API 経由で管理できます。different group configurations: さまざまなグループ構成を処理できます。- スピーチでは、API エンドポイント、リクエスト本文、またはフィールド名が表示されませんでした。実際のアクセスは、App Store Connect API ドキュメントに基づく必要があります。
Xcode Cloud を TestFlight に組み込む
(08:13) Xcode Cloud は同じ年にリリースされ、TestFlight と統合されました。 TestFlight を介して、アプリケーションを自動的にビルド、テストし、指定されたベータ グループに配布します。
Xcode Cloud + TestFlight
1. Xcode Cloud builds the app
2. Xcode Cloud tests the app
3. Xcode Cloud distributes builds through TestFlight
4. TestFlight sends builds to specific beta groups
キーポイント:
- ステップ 1: ビルドは Xcode Cloud によって実行されます。
- ステップ 2: テストは Xcode Cloud プロセスでも実行されます。
- ステップ 3: 配布は TestFlight 経由で行われます。
- ステップ 4: ターゲット テスト グループを事前に指定できます。
(09:04) 新しいビルド グループ ビューが App Store Connect に追加されました。ビルドは Xcode Cloud ワークフローと Git ブランチごとにグループ化されます。内部テスターは、TestFlight で使い慣れたブランチ名やワークフローでビルドを検索することもできます。
Build Groups view
- grouped by Xcode Cloud workflow
- grouped by Git branch
- supported in the App Store Connect app on iOS
- visible to internal testers on TestFlight
- feedback can be filtered by a specific Build Group
キーポイント:
Xcode Cloud workflow: ビルドはワークフローごとに編成されます。Git branch: ビルドはブランチごとに編成されます。App Store Connect app on iOS: App Store Connect for iOS もビルド グループをサポートします。internal testers on TestFlight: 内部テスターはこれらのグループを使用してビルドを検索できます。feedback: フィードバック領域は、特定のビルド グループによってフィルタリングできます。
重要なポイント
-
やるべきこと: Mac アプリを TestFlight ベータ テストに接続します。 実行する価値がある理由: Mac 上の TestFlight は、ベータ アプリケーションのインストール、自動更新、スクリーンショットのフィードバック、クラッシュ ログの収集をサポートし、手動のパッケージ配布を置き換えます。 開始方法: Xcode でのサインインの自動管理を有効にし、プロビジョニング プロファイルを含む macOS ビルドを App Store Connect にアップロードして、TestFlight テスト グループを作成します。
-
やるべきこと: 内部テスト プロセスを開発グループと QA グループに分割します。 実行する価値がある理由: 内部テストは複数のグループをサポートしており、各グループはビルドの配布とフィードバックの収集を個別に構成できます。開発チームはすべてのビルドを自動的に取得でき、QA チームは安定したビルドのみをテストします。 開始方法: App Store Connect の内部テストの隣に 2 つの内部グループを作成し、開発グループの自動配布を有効にし、QA グループのビルドを手動で追加します。
-
やるべきこと: iOS アプリを Apple Silicon Mac 上で対象を絞ったベータ テストに利用できるようにします。 実行する価値がある理由: TestFlight は、Apple Silicon Mac で iOS ビルドを利用できるかどうかをテスト グループごとに制御できます。これは、最初に小規模な範囲のユーザーで Mac エクスペリエンスを検証するのに適しています。 開始方法: 対応するテスター グループに入り、Apple Silicon Mac で iOS ビルドの可用性設定を有効にし、iOS プラットフォームでクラッシュとスクリーンショットのフィードバックを確認します。
-
やるべきこと: Xcode Cloud を使用して、すべてのビルドを TestFlight に自動的に配布します。 価値がある理由: Xcode Cloud は、TestFlight 経由で自動的にビルド、テスト、指定されたベータ グループに配布できるため、アップロードと配布の手動手順が削減されます。 開始方法: Xcode Cloud ワークフローを作成し、App Store Connect を関連付け、配布ターゲットを指定された TestFlight テスト グループに設定します。
-
やるべきこと: Git ブランチごとにテストのフィードバックを追跡します。 実行する価値がある理由: ビルド グループは、Xcode Cloud ワークフローと Git ブランチごとにビルドを整理し、フィードバック領域を特定のビルド グループでフィルターできます。 開始方法: さまざまな開発ラインで明確なブランチ名とワークフロー名を使用し、App Store Connect のフィードバック エリアでビルド グループごとに問題をフィルター処理します。
関連セッション
- Xcode Cloud の紹介 — Xcode Cloud が Apple プラットフォーム アプリケーションの継続的統合と継続的デリバリーをどのように提供するかを紹介します。
- Xcode Cloud ワークフローを探索する — ワークフローがアプリケーションを自動的に構築、分析、テスト、アーカイブ、配布する方法について説明します。
- クラウド署名を使用して Xcode でアプリを配布する — Xcode 配布プロセスと App Store Connect アップロードのクラウド署名の改善を示します。
- Xcode Organizer での TestFlight クラッシュのトリアージ — Xcode Organizer で TestFlight クラッシュとテスト フィードバックを処理する方法について説明します。
- M1 を搭載した Mac 上の優れた iPad および iPhone アプリの品質 — M1 Mac で iPhone および iPad アプリを実行する際に重視すべきエクスペリエンスの品質について説明します。
コメント
GitHub Issues · utterances