iOSアプリ制作で必要な権限とValidate機能の利用

#はじめに

```
2019/2/20あたりからAppleStoreConnectのApp Managerの権限周りでトラブルが発生しているようで
見にきてくれている人がいたらすみません。
こちらはだいぶ古い記事なので、解決には遠いかもしれませんが、何かの参考に貼っておきます
```

https://help.apple.com/app-store-connect/?lang=ja-jp#/deve5f9a89d7

`App Managerの権限は、アプリ制作に関することはAdmin同様`に読めますが、2019/2/27現在、リリース用のプロビジョニングファイルが作れません。もうちょっとAppleの対応を待ってみます（問い合わせはしました）

![スクリーンショット 2019-02-27 17.44.13.png](https://qiita-image-store.s3.amazonaws.com/0/12362/e333190e-cbc6-e8df-8b61-5e804a9c3951.png)

問い合わせにエラーの表示されたキャプチャーなどを送り、Appleから調査しますと返信メールがきた数時間後にApp Managerでもリリース用プロビジョニングファイル作成ができるようになったことを確認しました。こっそり直すのなんなの。

のちほど、こっそりでなく返信はもらえました。

![スクリーンショット 2019-03-07 13.17.10.png](https://qiita-image-store.s3.amazonaws.com/0/12362/9bd4de11-8730-25fa-bc77-0c8287325795.png)

この返信に続いて別の権限について質問・回答を続けさせてもらい、結果、Appleの問い合わせ対応には満足しています。

以降は、
プログラミング知識、というよりは運用知識になります。

 * 各制作段階で必要なユーザアカウントの権限
 * Validate機能を活用しよう

最もばかばかしい

>アップロード時のWarning発生、改修、そして内部バージョンあげ

を未然に防ぐための備忘録として書いています。

Submitしてしまうと内部バージョンをあげなければいけません。

![スクリーンショット 2014-11-14 8.32.12.png](https://qiita-image-store.s3.amazonaws.com/0/12362/6844edcd-b0cf-7d56-da4f-732f05c1adad.png)

その他、ipaの提出環境の確認に使える点をなど。

書いている時点での運用方法の一例であることをご理解ください。

#権限分担
外注先や、クライアントなど、自社以外の方をアプリ制作のフローにアサインした場合に必要なアカウントと権限、そのフローの一例を
AppleIDの又貸しはAgreementで禁止されていることも踏まえて書いています。

#アプリ制作とアカウント区分

最低限必要な権限について。
Archiveについては、Code Signing Identityの指定で`iPhone Distribution`を指定する場合はAdmin権限がいるかも、な部分がうろ覚えです。

|  | Certificates, Identifiers & Profiles |iTunes Connect|
|----------- |:------------:|:------------:|
| Run| member | |
| Archive| member, Admin||
| IPAのExport| Admin | |
| Validate| Admin?（memberで通るか確認後変更）| Technical（） |
| Submit |  |Technical<br>（My Appの利用権限） |
| Application Loaderの利用 |  |Technical<br>（My Appの利用権限） |
##Build & Run
実機転送を行うアプリの動作確認は、iOS開発者プログラムに参加したメンバーであれば可能
##Archive
開発現場の終端として、Projectファイルで指定した証明書で署名されます。
アーカイブ時のBuild Configrationの初期設定がreleaseのままであれば、アーカイブ後にadhoc用、release用と署名の書き換えができます。

ソースコードの引き渡しがない外注先についてはこの形式でのやり取りをされているのではないでしょうか。

##IPA書き出し
iTunes Connectへのユーザ登録は不要です。
書き出す場合は、adhocかrelease用のipaと想定

##Validate

アーカイブにした状態からipaをアップロードすることなく簡易チェックができるので、多いに利用したいところ。
そのため、Enterprise版のipaでは使えない機能。

Terminalから
> $ /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool -v -f /Users/`ユーザ名`/Documents/aaa/test.ipa -u [AppleID]

上記のように指定する場合はiTunes Connectのユーザは不要なようです。
~~iTunes Connectのユーザ登録がなくても出来るようになっていました。`2015.7.8に確認`~~
Xcodeから行う場合はiTunes Connectでのユーザ登録は必要。`2016.3.8に確認`

仕様がコロコロ変わっているのはいつものことで
作業するユーザアカウントについて制約が増えている印象は否めません。

##Submit
iTunes Connectのユーザ登録が必要です。`2015.7.8に未確認なので、確認が必要`
My Appの機能と考えるとTechnicalの権限が最低必要（？）。
アーカイブにした状態からのアップロード方法。
提出するipaは先にアップロードしたipaより内部バージョンをあげなければいけない。

##Application Loaderの利用
ipaにした後のアップロード方法。機能的にはSubmitと同じ。
submit時はあっという間にテキストに流れるアップロードの行程を見れるツール。

#Validate機能で分かること

 * アーカイブされたアプリの状況
 * ipaを提出するXcode環境

##アプリの状況
ビルド時に行った署名の状況やアイコンや起動画面といった画像の有無をチェックできます

##ipaを提出するXcode環境
Xcodeの環境でのアカウントの設定やProvisioing Fileの同期が適当な場合は提出時のprovisioning Fileがおかしくなることがあります

 * Certificates, Identifiers & Profiles
 * iTunes Connect

ipaにする、validateする、でどちらの権限も必要になるので確認に使えます。

#その他
##使用アカウントのIDパスワードの管理
開発者サイトに入ってほしくないから、ユーザ追加できない、という場合は
XcodeのAccountsからエクスポートすれば、パスワードを教えずに運用できます。
エクスポート時に登録しているアカウント全部書き出されるので調整は必要。

#参考URL

About Apple Developer Program Team Roles and Privileges
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/ManagingYourTeam/ManagingYourTeam.html

Table 10-2  Abbreviated list of iTunes Connect modules, including availability by role
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/UsingiTunesConnect/UsingiTunesConnect.html

#さいごに
手戻りのない制作が望ましいのですが、Appleの仕様変更に付き合う限り、難しいところがあります。
公式の情報が足りないのか、探しにくいなども感じていて悩ましいです。