個人開発のUnityアプリをApp Storeに公開するまで

#概要
個人開発したUnity製のアプリをGoogle PlayとApp Storeに公開したのでプロセスを整理がてらまとめてみた。
App Storeは色々わかりにくく、つまづくポイントも多かった。
Google Play版はこちら -> [個人開発のUnityアプリをGoogle Playに公開するまで](https://qiita.com/tanakaPH/items/6843c2b0308b7cd4907b)

#前提
- PCはMac

- Unityで開発

- Xcodeインストール済（Ver.11以降）

- [Apple Developer Program](https://developer.apple.com/jp/programs/enroll/)に登録済み
（$99が**毎年**必要、筆者は時価で税込&yen;12,980だった）

- ストア公開に必要な情報が準備済
参考 -> [iOSアプリ申請要綱まとめ【App Store Connect】](https://qiita.com/umi_mori/items/4cc96fa7c07622d8705c)



#App Storeへの公開手順
ざっくり言うと、

1. Unityで下準備してビルド（手順1）
2. 自分の署名付証明書作成（手順2, 3）
3. アプリID＋テスト用デバイスID＋証明書を紐づけた設定ファイル作成（手順4）
4. 証明書や設定ファイルとアプリ本体を紐づけてXcodeでアップロード（手順5）
5. AppStore Connectでアプリ情報を入力して審査提出（手順6）

う～～～ん、長い！！！

基本的には配信ベースだが、開発（実機テスト）用の証明書作成についても記述する。
あと手順5と6は外部サイトに丸投げです、すんません。
では気合を入れていきましょう。

###1. UnityのPlayer Settingsで必要な情報を登録する
- Product Name -> アプリアイコンの下に表示されるアプリ名（主言語）
- Bundle ID -> いわゆる識別子。ドメインを逆にしたもの（jp.co.[団体名].[アプリ名]）が一般的。
- バージョン番号 -> 公開用のバージョン番号（ex. 1.0, 1.1, 2.0 ...）
- ビルド番号 -> 内部ビルド用のバージョン番号（ex. 1, 2, 3, ...）
- アイコン画像 -> App Store及びインストール後のアプリアイコン画像

※アプリをローカライズしていて、副言語のアプリ名を指定したい場合は、下記URLを参考にInfoPlist.stringsを配置する。
参考 -> [[Unity]アプリ名ローカライズ対応メモー](https://qiita.com/ptkyoku/items/3f25872ae0f356966c88)

情報登録が終わったらiOS用にビルドしておく。

###2.証明書リクエスト（csrファイル）を作成する
イメージはこんな感じ。
![qiita用.004.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/056c5842-4442-98a6-2547-307d8a0a4f46.jpeg)


まずキーチェーンアクセスアプリを使って、自身の秘密鍵と公開鍵から証明書リクエスト（csrファイル）を作成する。
キーチェーンアクセスアプリを開き、タブから「認証局に証明書を要求」を選択する。
![スクリーンショット 2020-05-13 17.44.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/f14195d3-bcfc-a562-0e3c-6bbb4f846b7f.png)

次に自身のメールアドレス、通称を入力しディスクに保存、鍵ペア情報を指定を選択して「続ける」を選択（CAのメールアドレスは空欄）。
![スクリーンショット 2020-05-13 17.46.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/7472bda7-e611-19f2-e34a-3be9acba3743.png)

鍵のサイズ、アルゴリズムはデフォルトのまま「続ける」を選択してcsrファイルをPCに保存する。

###3.開発用・配信用の証明書を発行する
イメージはこんな感じ。![qiita用.005.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/d8f1cca6-a8a9-64ea-ee71-7fa6b0d0c81f.jpeg)
![qiita用.006.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/fde27d99-6196-537f-d1aa-167ec4f338b1.jpeg)

[Apple Developer](https://developer.apple.com/account/#/welcome)のサイトに行き、「Certificates, Identifiers & Profiles」から「Certificates」を選択し、＋マークをクリック。
![スクリーンショット 2020-05-13 17.50.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/1caf359d-a840-6a28-e57c-d716e2fad193.png)

開発用であればApple Development、配信用であればApple Distributionを選んで「Continue」（通常両方作るのでまずは一方でよい）。
iOS App Development以下はXcode10以前のものなので気にしなくてよい。
![スクリーンショット 2020-05-13 17.50.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/6eaf4bdf-bcb9-d789-efb1-3fbd9de249e1.png)

「Choose File」より2.でPCに保存したcsrファイルを選択して「Continue」。
![スクリーンショット 2020-05-13 17.51.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/e37225e2-6508-ddcb-9ccd-d3c3c125cfda.png)

有効期限などの情報とともに確認事項が表示されるので、「Download」を選択してPCに保存。
**保存した証明書をダブルクリックしてキーチェーンアクセスに反映させる。**
これを開発用・配信用の2回行う。

手順2及び3の参考URL -> [[iPhone] iOS, Certificate 証明書を作ってみる](https://i-app-tec.com/ios/apply-application.html)

###4.開発用・配信用のプロビジョニングプロファイルを発行する
イメージはこんな感じ。
![qiita用.007.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/a0447e18-1a70-8726-a7ad-27bd7d768005.jpeg)

「Certificates, Identifiers & Profiles」から「Identifiers」を選択し、＋マークをクリック。
![スクリーンショット 2020-05-13 17.52.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/b95ddcdb-cddf-9d01-8d5c-48fa8d362ae7.png)

App IDsを選択して「Continue」。
![スクリーンショット 2020-05-13 17.53.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/720a0fa4-d0d7-417f-4f75-2be710aca6e2.png)

Descriptionにアプリ説明、Bundle IDに一意のアプリ識別子（一般的にはjp.co.[団体名].[アプリ名]）を指定。
Capabilitiesの一覧にある各種機能を使っている場合は、そちらも選択する（詳しくは参考URLから）。
![スクリーンショット 2020-05-13 17.55.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/ba078187-e9eb-414e-eeaa-f64a2bc035be.png)

確認画面が表示されるので、「Register」を選択。
「Identifiers」のページに戻って登録できているかを確認する。

次に、「Devices」を選択し、＋マークをクリック。
![スクリーンショット 2020-05-13 17.58.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/a596e188-beb9-bdf3-df53-954ddac5f38c.png)

テスト用に使うデバイスのデバイス名とデバイスのUDIDを入力して「Continue」。![スクリーンショット 2020-05-13 17.59.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/f2db1797-967d-f55c-227c-b4355dbd7d51.png)

（UDIDの確認方法 -> [iPhone XSシリーズからのUDID・識別子の確認方法](https://qiita.com/takashings/items/f4f96d8f948e14cd98d9))　※8以前はiTunesから確認可能
Device Listから複数台同時に登録することもできる。

![スクリーンショット 2020-05-13 17.57.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/52f39315-1571-b873-95ce-1d878058610c.png)

確認画面が表示されるので、「Register」を選択。
「Devices」のページに戻って登録できているかを確認する。

次に、「Profiles」を選択し、＋マークをクリック。
![スクリーンショット 2020-05-13 17.58.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/6e4ef963-d29a-fb95-3881-2684022563d2.png)

開発用ならiOS App Development、配信用ならApp Storeを選択して「Continue」（こちらも通常両方作るのでまずは一方でよい）。
**※iOS App Developmentを選択した場合、下記の手順の途中でテスト用デバイスを選択する画面が表示される。その際は先ほど登録したDeviceを選択する。**
![スクリーンショット 2020-05-13 17.59.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/1c40077e-9309-550b-b84a-0a78b45cde81.png)

App IDには先ほど作成したApp IDを選択して「Continue」。
![スクリーンショット 2020-05-13 17.59.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/974b65de-fed1-4006-f26e-3960a72ed4e5.png)

Select Certificatesには先ほど作成したCertificates（開発用or配信用）を選択。
![スクリーンショット 2020-05-13 18.00.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/acc19662-5004-a4cd-b341-e46503868328.png)

Provisioning Profile Nameにわかりやすい名前をつけて「Generate」。
![スクリーンショット 2020-05-13 18.00.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/9b90c24f-f444-0549-17cc-fb7161d086a7.png)

確認事項が表示されるので、「Download」を選択してPCに保存。
**保存したプロビジョニングプロファイルをダブルクリックしてキーチェーンアクセスに反映させる。**
これを開発用・配信用の2回行う。

参考 -> [[iPhone] iOS App IDs を登録する](https://i-app-tec.com/ios/ios-app-ids.html)， [[iPhone] Provisioning Profile を作ってみる](https://i-app-tec.com/ios/provisioning-profile.html)

###5.各種ファイルとアプリを紐づけてXcodeからアップロード
イメージはこんな感じ。
![qiita用.008.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/0b2cb52b-33f7-9d42-305c-615f66a3468f.jpeg)

Xcodeでビルドして配信用証明書とプロビジョニングファイルを紐づけて、AppStore Connectにアップロードする。
発生しやすいエラー等も含め、以下のサイトで詳細に解説されているので、そちらを参照されたい。

参考 -> [[iPhone] アプリ申請のためXcodeでアップロードする](https://i-app-tec.com/ios/app-upload.html)

###6.AppStore Connectで必要情報を入力後、審査に提出
こちらもローカライズ方法も含めて以下のサイトで詳細に解説されているので、そちらを参照されたい。

参考 -> [[iPhone] App Store Connect にアプリ情報を登録して申請してみる](https://i-app-tec.com/ios/itunes-connect.html)

#結論
色々ググりながら手探りでやってみたが、全体像が中々つかめず途中で何度も心が折れかけた。。。
**個人開発で重要なのは間違いなく根気強さだろう。**

ちなみに作ったゲームアプリはこちら -> [とんずらぺーちゃん（iOS）](https://apps.apple.com/jp/app/%E3%81%A8%E3%82%93%E3%81%9A%E3%82%89%E3%83%9A%E3%83%BC%E3%81%A1%E3%82%83%E3%82%93/id1497409069?mt=8)
![unnamed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635329/f6150684-d629-2c99-f69c-fdf5586a2c07.png)