【2022最新版】法人がiOSアプリをApp Storeに非表示アプリとしてリリースする方法

## はじめに
「iOSアプリのエンタープライズ配布がもう限界だ。非表示？非公開？Appってやつで配信したいので調べて。」と上司に言われてスタートしたApp Storeへのリリース作業。
これが思いのほか大変だったので、手順をまとめてみました。

## 対象者
この記事は下記のような人を対象にしています。

- 駆け出しエンジニア
- プログラミング初学者
- 初めてiOSアプリをリリースする方
- 非表示アプリに興味があるけど、リリース方法調べるのが面倒な方

## 結論
ゼロから始めたら1~2ヶ月はかかるから早めに着手しよう！

***
## **1. iOSアプリの配布方法**
まずはiOSアプリの配信方法について、おさらいします。
### a. AppStore公開App(app)
最も一般的な配布方法。AppStoreで公開されるアプリ。
### b. エンタープライズ([ADEP](https://developer.apple.com/jp/programs/enterprise/))
2020年ごろまで主流だった、従業員向けアプリの配布方法。<font color="Red">2022年以降は取得が困難。</font>
### c. カスタムApp([custom app](https://developer.apple.com/jp/custom-apps/))
非公開アプリとも。特定のユーザーのみに非公開かつ安全にアプリを配信する方法。<font color="Red">ABMの契約が面倒。</font>
### d. 非表示App([unlisted app](https://developer.apple.com/jp/support/unlisted-app-distribution/))
リンク経由でアプリを配信する方法。実質、エンタープライズの代替案として注目されている。
AppStoreに表示されなくなる。AppStoreの審査とは別に非表示アプリの申請が必要。
### e. [TestFlight](https://developer.apple.com/jp/testflight/), AdHoc
社内外にテスト目的でアプリを配布する方法。

|                       |AppStore公開App|エンタープライズ|カスタムApp|非表示App|TestFlight|AdHoc|
|:---|-------------|------------|------------|------------|------------|------------|
|契約                    |ADP,MDM      　|ADEP,MDM|ADP,ABM,MDM   |ADP          |不要         |不要|
|年間費用                |$99.00    　　   |$299.00   |$99.00        |$99.00       |$0          |$0|
|Provisioning<br>Profile|AppStore　　　    |InHouse   |AppStore      |AppStore     |AppStore    |AdHoc|
|再署名                  |不要      　　　　   |必要(年1回)|不要　　　　        　　|不要          |不要        |不要|
|申請・審査                |必要(公開を選択)|不要      |必要(非公開を選択)|必要(公開を選択)|必要な場合あり|不要|

ADP:Apple Developer Program
ADEP:Apple Developer Enterprise Program
ABM:Apple Business Manager
MDM:Mobile Device Management

以降は、「非表示App」の申請に必要な手順を紹介していきます！
***
## **2. 事前準備**
### **2-1. 法人でApple Developer Programに登録**
もし、あなたが受託企業のエンジニアの場合、ADPに申請することはできません。
エンドユーザー企業からADP申請を行うように依頼しましょう。
- 参考サイト：[参考記事](https://pentagon.tokyo/app/1305/)
- 必要なもの
    - Apple ID
        - 2ファクタ認証有効のもの。担当者個人ではなく、法人契約した電話番号推奨。(離職の際の紛失を防ぐため。)
        - emailアドレスはgmailなどのフリーメールでも登録は可能。
        - ただし、後述のApple Business Managerまで登録する場合は、有料ドメインのメールアドレス推奨。
    - 年間 99ドル
    - D-U-N-S番号
        - 取得方法は下記の2通りがある。
            - A)自分で取得する(最大2週間)
            - B)東京商工リサーチに依頼する
                - 3000円で7営業日後に発行してもらえる。
                - +10,000円払うと3営業日後に出してもらえるらしい。
                    - [参考記事](https://www.tsr-net.co.jp/service/online/get-a-duns-number/price.html)
- デベロッパーアカウントの作成
    - ここでD-U-N-S番号が必要になる。
        - [参考記事](https://developer.apple.com/jp/programs/enroll/)
    - 登録後Appleから電話がくる。(日本語可)
    - その後、Apple Developer Programのメンバーシップを購入する(年間99ドル)
        - 反映に約48時間かかる。
各サービスへの登録のイメージは下記の通り。
![AppStoreConnect.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2157342/a527d62e-ca04-84ef-adf2-82e058e46cba.png)

***
### **2-2. アイコン作成**

- `1024 × 1024`の透過なし画像で作成します。
- [icon generator](https://appicon.co/)などで各サイズの画像を生成します。
- Xcode > Assets.xcassets > AppIcon で登録できます。([参考記事](https://softmoco.com/basics/how-to-set-app-icon-in-xcode.php))
- xcode14では、1024*1024の画像1枚を登録すれば自動で他のサイズが登録される仕様に変更されました。([参考記事](https://www.fuwamaki.com/article/354))
***
### **2-3. App Store公開用のスクリーンショット作成**

- リリースする機種に対応したスクリーンショットを用意します。
- 下記のサイズに該当するスクリーンショットを、各3枚以上用意すること。

|デバイス                       |画像サイズ|
|:---|-------------|
|5.5インチ|1284 x 2778 px（縦向き）<br>2778 x 1284 px（横向き）|
|6.5インチ|1242 x 2208 px（縦向き）<br>2208 x 1242 px（横向き）|
|12.9インチ（第2世代）|2048 x 2732 px（縦向き）<br>2732 x 2048 px（横向き）|
|12.9インチ（第3世代）|2048 x 2732 px（縦向き）<br>2732 x 2048 px（横向き）|

***
### **2-4. プライバシーポリシー用のWebページを作成**

- App Store Connectに提出するためのプライバシーポリシーページを作成しましょう。
- 今回はアプリで利用するドメインがあったため、そこにページを作成して公開しました。
- 類似サービスのプライバシーポリシーページをいくつか参考にして作成しました。
- [プライバシーポリシージェネレーター](https://swift-study.com/app/app-store-connect/app-privacy-policy/)なるものもあるそうです。

***
### **2-5. Apple business Manager登録**

- 非表示アプリの申請には不要。カスタムApp(非公開アプリ)には必須。
- 必要なもの(結構多いです。)
    - D-U-N-S番号
    - 電話番号(会社管理の電話番号が好ましい。)
    - WebサイトURL(前述のプライバシーポリシーページに会社情報を記載したものでOK)
    - 組織を代表して登録を行う方（個人）の氏名
    - App StoreまたはiCloudのアカウントに関連付けられておらず、他のAppleサービスやWebサイトのApple IDとして使用されていない勤務先メールアドレス
    - 担当／役職名
    - 確認用連絡先情報(会社のCEO等の氏名、メールアドレス、役職)
- ドメインの確認について
    - (要注意！)ドメインの確認が済んでいなくても、後述のApp Store Connectへのアップロードなどはできてしまうが、期限は14日なので、忘れずにやっておくこと。
    (ちなみに、Apple Business Managerのアカウントから該当ドメインを削除して、再度登録すればリトライ可能。)   
    - 例)さくらインターネットで、txtレコードをゾーン情報に追加する方法([参考記事](https://help.sakura.ad.jp/domain/2302/?article_anchor=js-nav-3))
***
## **3. Xcode操作方法**
### **3-1. Xcodeに必要なファイルの作成**
まずはXcodeの開発とアプリの配布に必要なファイルについて解説します。
![appId.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2157342/e7fe88aa-de88-5cb1-e805-067e8c922756.png)

- 証明書
    - 配布用に1つ必要。
    - 開発用は開発者が各自作成。(事前にAppStoreConnectで招待されている必要あり。ドメインが違ってもOK。メール認証が必要。)
- identifier(AppID)
    - アプリごとに1つ必要。(開発・配布で共通)
- device
    - 開発用のprovisioning profileに登録するため、各自のiPadのudidで登録。
- provisioning profile
    - 証明書とidentifierを紐づけるファイル。
    - 各アプリの開発用・配布用が必要。
        - 開発用はdeviceで登録された端末を登録する。

それぞれのファイルの作成方法、App Store Connectでの登録方法は[こちらの記事](https://qiita.com/Labi/items/3b71b8f5ef065904c1de)を参考にしてください。
***
### **3-2. アプリのアーカイブとアップロード**
- 開発が終わったら、アプリをApp Store Connectにアップロードして、審査してもらいましょう。
- アップロードするためにはアーカイブする必要があります。([参考記事](https://bluebirdofoz.hatenablog.com/entry/2020/06/17/232615))
    - [申請時にiPad Multitasking support関係でエラーが起こった時の対処法](https://zenn.dev/justin999/articles/xcode-how-to-disable-ipad-multitasking-support)

#### アーカイブのアップロードに失敗した時

```
APP STORE connect operation error: An error occurred uploading to the App Store.
```
上記のようなエラーが出たときは、下記手順で対処できます。([参考記事](https://developer.apple.com/forums/thread/123649))
- app storeでtransporterというアプリをダウンロード
- xcodeでuploadではなくexportでipaファイル作成
- transporterにドラッグすればアップロード成功する

#### `ERROR ITMS-90023`の解決
- iOSの最低バージョンを11.0以上にすれば解決
    - [参考記事](https://docwiki.embarcadero.com/Support/ja/IOS%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92App_Store%E3%81%B8%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%97%E3%81%9F%E9%9A%9B%E3%81%ABITMS-90023%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%81%BE%E3%81%99)
#### `ERROR ITMS-90717`の解決
- アイコン画像の透過設定を解除すれば解決
  - [参考記事](https://softmoco.com/devenv/how-to-solve-invalid-app-store-icon-error.php)
***
## **4. App Store Connect 申請方法**
- [この記事](https://zenn.dev/moutend/articles/feebf0120dce6e6426fa)を参考に、登録を進める。
- 英語で記述する必要があるので頑張りましょう！
- 審査のレスポンスは思ったより早いです(~24時間以内)。日本時間の夕方に提出したら、翌朝には結果が確認できたことが多い。

- 申請の際の注意点
    - 添付ファイルは1個だけしか登録できないので要注意。
        - 複数ファイル必要な場合はまとめてzipにすること。
    - 添付ファイルとして好ましいもの(下記を添付すると、無駄なやりとりが省けます。)
        - 操作マニュアル(日本語でOK)
        - 利用制限(6:00~22:00JSTしか稼働しませんよ、とか)
        - デモアカウント、パスワードなどの情報
        - 利用イメージの動画
    - 非表示アプリとして申請する場合、下記2点に注意。
        - 公開形式は「公開」を選択。(非公開では無いので要注意！)
        - コメントに「非表示アプリで申請したい」旨、記載する。
- 審査に合格すれば、晴れて「公開アプリ」としてApp Storeに掲載されます！
- あとは、非表示アプリの審査を通すだけです。もう少し！
***
## **5. 非表示アプリの申請方法**
- [こちら](https://developer.apple.com/jp/support/unlisted-app-distribution/)から申請。
- App Store Connectとは別の、シンプルなフォームです。
- 全部英語なので頑張りましょう！
- 「なぜ非表示Appじゃ無いといけないのか、普通のAppやカスタムAppではいけない理由を述べよ」など、やや答えにくい質問もありますが、正直に答えましょう。
- フォーム送信後はApp Store Connectとは異なり、特にフィードバックのメールやコメントなども来ませんでした。
- 2~3日待ってたら、App Store Connectの配信方法の部分が「非表示」に変更されていました！
- 気長に待ちましょう。
- App Store Connectで表示されたリンクを配布対象者にお知らせすれば、配布可能になります。
- おつかれさまでした！
***
## **おわりに**
App Storeに法人として、非表示Appをリリースする方法についてまとめました。

***
## 参考記事
[【2020年度版】 iOSアプリをApp Storeに公開する手順を簡潔に解説](https://qiita.com/Labi/items/3b71b8f5ef065904c1de)
[（2022年版）iOSアプリをAppStoreで公開する手順まとめ](https://zenn.dev/moutend/articles/feebf0120dce6e6426fa)
[カスタムApp（CustomApp）とは何か](https://www.micss.biz/2021/03/15/3507/)
[【2021年版+画像15枚】法人でApple Developer Programに登録する手順](https://pentagon.tokyo/app/1305/)
[D-U-N-S® Number検索の料金一覧・利用許諾書](https://www.tsr-net.co.jp/service/online/get-a-duns-number/price.html)
[登録に必要な事項](https://developer.apple.com/jp/programs/enroll/)
[Xcode で iOS アプリアイコンを設定する方法](https://softmoco.com/basics/how-to-set-app-icon-in-xcode.php)
[Xcode14: 既存アプリのAppIconサイズを1種類に切り替え（Single Size）【WWDC 2022】](https://www.fuwamaki.com/article/354)
[iOSアプリの公開に必要なスクリーンショット画像サイズまとめ](https://tech.naturalmindo.com/notwork_appstore_screenshot/)
[アプリのプライバシーポリシーを作成する](https://swift-study.com/app/app-store-connect/app-privacy-policy/)
[XCodeでiOS用のアーカイブファイルを作成してiTunesからアプリインストールを行う](https://bluebirdofoz.hatenablog.com/entry/2020/06/17/232615)
[APP STORE connect operation error:... | Apple Developer Forums](https://developer.apple.com/forums/thread/123649)