iOS TestFlightでベータ版公開

#アプリをTestFlightで利用できるようにするまでの流れ
 1. アプリをエラーがない状態にし、DeviceをGeneric iOS Deviceにする
 2. Product -> Archiveを実行
 2. 終わったらOrganizer windowが開くので、画面右のValidateを選択する
 3. この画面が開くはずなので、特に変更点がなければNextを選択
 <img width="746" alt="スクリーンショット 2018-06-01 14.58.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/188539/85c0b586-dc5b-f240-476c-76f9c5729d92.png">
 4. この画面では自動でやるか、手動でやるか決める。だいたいこの後証明書関係でつまずくので、一Automaticで実行してみて、エラーが出ればManuallyにすればいいのではと思う。
<img width="712" alt="スクリーンショット 2018-06-01 14.59.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/188539/6dd903b5-e73a-c8ad-8199-f931c95ca2bb.png">
 5.  最後にValidateして、Successfulと出れば大丈夫。
 6.  終わったら、画面右のUpload to App Storeというボタンがあるので(青色でなければ押せません)それをクリックして、先ほどと同じようなものがあるのでチェックを入れる。
 7.  最後にupload to App Storeでそれが終われば終了ですよ。

#Uploadの下準備
ValidateしてUploadするために、いくつかのファイルを作成しなければなりません。
手順としては

 1. CSR(Certificate Signing Request)を作成
 2. Certification fileの作成
 3. Provisioning fileの作成

##証明書要求ファイル - keychain CSR(Certificate Signing Request)を作成
 1. keychainを開く
 2. メニュー -> 証明書アシスタント　 -> 「証明局に証明書を要求」
 3. メールアドレスを入力
 4. 要求の処理を選択(まあ、「ディスクに保存」でいいと思う)
 5. 続ける
 6. どこでもいいので保存する
 7. 完了を選択して終了

## 証明書 - certification fileの作成
 1. What type of certificate do you need? DevelopmentのiOS App Developmentを選択
 2. CSR(Certificate Signing Request)の作成(上のやつで作れているので)Continueを選択
 3. 自分のPC上の***.certSigningRequestを選択して次に進む
 4. Downloadしたいならして終了


##Provisioning Profileの作成
Provisioning Profileとは、アプリをiOSデバイスにインストールすることを許可するためのものです。このファイルはsigning certification、デバイスID(device identifier)、App ID(アプリID)を含んでいます。二つの種類があります。

1. Development
この種類は、開発段階のアプリのビルドとインストールに使われます。

2. Distribution
この種類はApp Storeにアプリを提出したり、βテスターに配布するために使われます。

ここではTestFlightを利用してβテストをするので、App Storeに公開する時に必要になるDistributionファイルの作成を行ってください。

###Provisioning Profile - type of Development　の作成
 1. iOS App Developmentを選択して次へ(Continueをクリック、以下同様)
 2. App IDを選択して次へ
 3. certificatesを選択、自分がさっき作ったcertificateがあるはず
 4. Deviceを選択、おそらくiPhoneとかを登録していれば出てくるのでチェックをつける。
 5. Profile Nameに自分で分かるように名前をつける(devかDisかをつけてるほうがわかりやすいかもね)
 6. これで完成。

###Provisioning Profile - type of Distributionの作成
 1. App storeを選択して次へ
 2. 今回作っているアプリのApp IDを選択
 3. 証明書(certificate)を選択
 4. 作成完了

#iTunes Connectにアップロード後
アップロードが完了後すぐにiTunes Connectで確認をしようとしても、TestFlightではアップロード後しばらくは向こう側で処理をしているためアクティビティというページでしか確認できません。おそらく１0分程度待てばTestFlightの方でも表示されるようになります。

##輸出コンプライアンスの設定

###通信が暗号化されているか
暗号化がされているかどうかが聞かれます。これは基本的にhttpsのみで通信を行っているかどうかの確認です。
問題なければ「はい」を選択しましょう。

###米国輸出管理規則
いくつかの項目が表示されており、それに問題がないと判断できれば「はい」を選択します。

##テスターの追加
手順にしたがって、テスターを追加しましょう。
ちなみに製作者のTestFlightには自動的に新しいバージョンが使えるようになっているはずなので、自分のiPhoneで確認してください。

#注意点
僕もかなりここら辺でこけたので、皆さんの中でもかなりよく分からなくて困っている人たちもいると思います。
Validateとかする前にきちんと気をつけているとスムーズに行くはずですので、特に注意しておきたい部分を教えておきます。

## アプリ基本情報に注意!!
ここにはアプリ自体の情報に注意しておけば基本的には通ります。

###アプリのバージョンはほかのValidateのバージョンと重なっていないか

基本的に公開するアプリのバージョンが1.0.0でも、Archiveでは1.0.2とか普通です。**公開するアプリのバージョンとビルドのバージョンは違う**ということにご注意ください。また、アプリのバージョンとかはValidateして最後の最後でエラーが発覚します。基本的にArchiveとかだけでもかなり時間がかかるので、はじめにきちんと確認しておきましょう。

###Siginingでエラーがないか

正直、ここでエラーがあれば基本的にはじめでつまずくはずです。Teamは間違えていないか確認しましょう。Automatically manage signingをオンにしていてエラーが分からない場合は、一旦外して自分で手動で調整してみる方がいいかもしれません。

###Development TargetのiOSバージョンを大丈夫か
ここは、iOSの最新バージョンの特殊な機能(ARKitを使っている場合など)で気をつけるべきだと思います。それ以外であれば基本的に一応確認しておく程度で大丈夫かと。