TestFlightの機能・使い方まとめ

業務の中でTestFlightを使う機会があり、使い方やわからないことを一つ一つ調べていたので、今後使うときに参考にするために復習もかねて機能や使い方について備忘録としてまとめていきたいと思います。

# 目次
1. TestFlightとは？
2. テスト方式(内部・外部)
3. TestFlightの使い方
4. パブリックリンクの作成の仕方
5. フィードバック
6. 終わりに
7. 参考にしたサイト  

## 前提条件
今回作成したアプリの開発環境は以下の通りです。
|  項目 |        内容       | 
|:--------|:--------------:|
| OS |　macOS Ventura 13.0　|
| Xcode |　14.0.1(14A400)　|

TestFlightを使ってアプリの配布をするためには、権限がAdminかAppManagerである必要があります。
Developerの権限でできることはXcodeからアプリのビルドのアップロードのみのため、TestFlightを使用する前に権限がAdminかAppManagerになっているか確認してください。
権限について詳しくは公式のサイトがありますのでご確認ください。

https://developer.apple.com/jp/support/roles/

## 1. TestFlightとは？
TestFlightは、iOSなどで開発したアプリをストアに配信する前にテスターに限定公開してテストできるシステムのことです。
iOSのほかにも、iPadOS、macOS、tvOS、watchOS、iMessage向けのappにも対応しています。
TestFlightを使うためにはApple Developer Programのアカウントが必要になります。
アップロードしたビルドのテスト有効期限は90日で、超えてしまったら再度アップロードする必要があります。
次の章で説明しますが、TestFlightでは内部と外部のテスト方式があります。


## 2. テスト方式(内部・外部)
次に配信するアプリのテスト方式について説明します。

### 内部テスト
内部テストは社内や開発チーム内で行うテストです。テストをするにはAppStoreConectに登録する必要があり、テスターはAdmin、AppManager、Developer、Marketerのいずれかの権限を持っている人のみが参加できます。
テスターは最大100人で、それぞれ30台の端末までテストをすることが可能です。
内部テストをするためにはデバイスで使用しているAppIDのメールアドレスを登録して追加する必要があります。

### 外部テスト
外部テストは外部の人が参加することができるテストです。最大10000人がテスターとして参加することができます。
外部テストでは、テスターがAppStoreContentに登録する必要はありませんが、外部に出すため、Appleの審査を通過する必要があります。
審査の期間は調べてみると色々出てくるのですが、大体1日ぐらい待てば通るようです。
外部テストはEメールアドレスか、パブリックリンクを使ってテストをすることができます。　

#### パブリックリンク
パブリックリンクとは、配布用のリンクのことでリンクを知っていれば誰でもテストをすることができます。
Eメールアドレスを登録・追加する必要がないため、大規模なテストをする際に便利です。
パブリックリンクの作成の仕方は後ほど説明します。

## 3. TestFlightでアプリの配信の仕方
TestFlightでのアプリの配信の仕方を説明します。
### 内部テスト
まず内部テストの配信の仕方について説明します。
1．AppStoreConnectで新規Appの作成をします。
   バンドルIDを作成していない場合はこの時に作成してください。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/4f4a1c96-fe73-6003-fd43-83b33b3b91c3.png" width=70%>
2．Xcodeからアプリのビルドをアップロードします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/3fe1528f-2eb2-58ea-0b04-abd6ea948613.png" width=70%>
3．AppStoreConnectに戻ると、iOSビルドのところにアップロードしたビルドが表示されます。
　ステータスのところに「輸出コンプライアンスがありません」というワーニングが出るので横の「管理」をクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/b55dd5e6-c62c-59ef-9e4e-a9d127a14435.png" width=70%>
4．いくつかの質問が出てくるので回答することでワーニングを消すことができます。
　ステータスが「提出準備完了」に変更されたらOKです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/609c8bf2-f781-46d6-d686-8026ac4d3c2e.png" width=70%>
5. 内部テストの横の＋から内部テストグループを作成します。ここで「自動配信を有効にする」にチェックを入れるとすべてのXcodeビルドが自動的に配信されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/4a2b1175-8462-cd90-8f27-f37300fae0cf.png" width=70%>
6．テスターの横の＋からテスターの追加をします。ここに追加したいテスターが表示されない場合は、ユーザーとアクセスから該当テスターを追加してください。
7．ステータスがテスト中になりました。これで内部テスト用のアプリ配信は完了です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/edea3e4a-8326-aef3-9350-2f8fe999ebe1.png" width=70%>
内部テストが開始されると、テスターにこのようなメールが届くのでそこから開いてテストを行います。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/0998b92f-e41a-6046-4f81-fe3a52b8c42b.png" width=70%>

### 外部テスト
次に外部テストでのアプリ配信の仕方について説明します。
1～4まではAppStoreConnectにビルドを登録するところで、一度登録してしまえば他のテストグループでも使えるため、内部テストの1～４までが完了している前提で説明します。
5．メニューの一般情報の中からテスト情報を入力します。以下の項目の入力が必要です。
* フィードバックメールアドレス
* プライバシーポリシーURL
* 連絡先情報
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/a129a57d-f0b4-ec9c-c95b-3a9a996a56be.png" width=70%>

6．外部テストの横のプラスから外部テストのグループを作成します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/14d5a59e-92ac-c051-d44f-02ff9cc518ee.png" width=70%>
7. ビルドタブに移動し、テストするビルドを選択し「次へ」をクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/db1ce6e2-efbb-3f06-a4cb-591767430fbf.png" width=70%>
8．サインイン情報の入力画面になるので、アプリによって必要であれば「サインインが必要です」にチェックを入れ、「次へ」をクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/3ea2b4c0-f1e0-7b88-770f-75b5277175d5.png" width=70%>
9．最後にテスト情報を入力する画面が出てきます。
何も入力しないと「審査へ提出」ボタンが押せないため、なにかしらの入力する必要があります。4文字未満だとエラーが表示されるので、画像では「ベータテスト」テスト情報を入力して「審査へ提出」をクリックすることで提出完了です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/a00473e2-84ce-9d17-91d0-452d4b717251.png" width=70%>
10．ステータスは「審査待ち」となり、Appleの審査が終わるまで待ちます。1回目の審査は1日ほどかかりますが、2回目以降、修正して新しいビルドをアップロードして申請するとすぐに通ります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/d18be546-c449-f00e-3aa2-a8a6c0e19187.png" width=70%>
11．Appleの審査が終わるとステータスが、「承認済み」になります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/fd250336-c11f-8d04-9739-1ada9798032a.png" width=70%>
12. Eメールアドレスでテスターを追加する場合は、テスターの横の＋から追加することができます。
新規テスターを追加、既存テスターを追加、CSVから読み込むの3つから追加することができ、新規テスターはメールアドレスと名前を一人ずつ追加する必要があります。
既存テスターは登録されているテスターを追加できます。
CSVは名、姓、メールアドレスのフォーマットであればCSVファイルを登録するだけで複数を一気に登録することができます。CSVからテスターを読み込むに進むとテンプレートをダウンロードすることができます。

## 4. パブリックリンクの作成の仕方
ここでは先ほどの外部テストの配信の仕方でAppleの審査が通った前提でパブリックリンクの作成ほうｈのみ説明します。
1.先ほど作成した外部テストのグループに移動します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/b93eab94-eefd-a7f2-85ed-0267239858d9.png" width=70%>
2.テスターの管理のところで「パブリックリンクを有効にする」というボタンがあるのでクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/1563804d-bcde-594c-1ab7-6bd487e1a387.png" width=70%>
3.有効にするかの確認があるため、「有効にする」をクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/3f0e49a7-4e21-e237-c6e9-f60371055c3b.png" width=70%>
4.これでパブリックリンクが生成されました。
このリンクを知っている人ならば誰でもテストをすることができます。
この画面から、リンクを無効にしたり、テスター数を制限したりすることができます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/f34fe6c2-cd66-9756-2fdc-1bf760069a1c.png" width=70%>

## 5. フィードバック
これまでの情報でも、TestFlightの便利さが伝わったと思いますが、TestFlightの利点はもう一つあります。
それはフィードバックです。
TestFlightではiOS、iPadOS、およびmacOS向けのアプリの場合、テスターはスクリーンショットを撮るだけで、Appから直接フィードバックを送信することができます。この機能はiOS13またはmacOS12以降で実行するテスターのみが対応です。ベータフィードバックを送信からも簡単に送信することができます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2871987/1bc02f3d-1648-a787-11cb-879d293633fc.png" width=70%>

## 6. おわりに
TestFlightを使うとAppleの審査はありますが、外部の人にも簡単にアプリのテストをしてもらうことができるのでとても便利だと思いました。
私が権限の確認不足で困った経験があるので、TestFlightを使うときは必ずAppManagerかAdminであることを確認してください。
今回はTestFlightでのアプリ配信のところを説明しましたが、私はそれ以前のXcodeからアプリのビルドをアップロードする時点でいくつかエラーが出て困ったので、エラーと解決方法についてもまとめていきたいと思います。

## 7. 参考にしたサイト
https://testflight.apple.com/
https://developer.apple.com/jp/support/roles/
https://softmoco.com/devenv/how-to-create-ios-app-in-app-store-connect.php
https://dev.classmethod.jp/articles/how-to-distribute-app-with-testflight-public-link/
https://cpoint-lab.co.jp/article/202107/20553/