1から始めるiOSチーム開発：Production Certificatesのインポート〜アップロード編


# 前回まで
* [1から始めるiOSチーム開発：序](http://qiita.com/kurumaya/items/b204cbb7e83a63279133)
	* [Apple Developer Programにメンバーを招待する](http://qiita.com/kurumaya/items/9c007685543f51f14dd2)
	* [Apple Developer Programの招待を受ける](http://qiita.com/kurumaya/items/47c7af4662d9e6fc8634)
	* [リポジトリからのチェックアウト〜プロビジョニングプロファイル準備](http://qiita.com/kurumaya/items/a3a82c59c6ac41b15fa4)

前提：Apple Developerアカウントがあり、Xcodeに開発用のプロビジョニングプロファイルを追加してあること。

Apple Developerアカウントがない場合は[Apple Developer Programの招待を受ける](http://qiita.com/kurumaya/items/47c7af4662d9e6fc8634)、開発用のプロビジョニングプロファイルがない場合は[リポジトリからのチェックアウト〜プロビジョニングプロファイル準備](http://qiita.com/kurumaya/items/a3a82c59c6ac41b15fa4)を行ってください。

# ストア配布用証明書の追加

さて、実機で動作確認ができるようになりました。
開発用のプロビジョニングプロファイルとストア配布（公開）用のプロビジョニングプロファイルは異なります。後者では証明書の取り込みが必要です[^1]。
まず、配布用のSiging Identitiesを持っている開発者に証明書を書き出してもらってください。
なお、公式のドキュメント「[アプリケーションの配布に関するガイド](https://developer.apple.com/jp/devcenter/ios/library/documentation/AppDistributionGuide.pdf)」165ページに証明書・プロファイルのエクスポート・インポート方法が載っています。

## Xcodeから証明書を書き出してもらう

証明書の書き出しをしてもらいます。
![01_Argent_Account.png](https://qiita-image-store.s3.amazonaws.com/0/15926/9e8be06b-d305-d9f4-a0bb-b0674856c6a5.png "01_Argent_Account.png")

![02_Export_p12.png](https://qiita-image-store.s3.amazonaws.com/0/15926/39ac9b32-f284-b6e2-2043-fff0df28f143.png "02_Export_p12.png")
ViewDetailsからiOS Distributionを選択し、歯車ボタンからExportをクリックします。

![03_save.png](https://qiita-image-store.s3.amazonaws.com/0/15926/8edf7bf3-a647-e3bc-5d15-0851d654c8e9.png "03_save.png")
証明書を追加する際に要求するパスワードを設定し、任意の場所に保存してください。

![04_p12.png](https://qiita-image-store.s3.amazonaws.com/0/15926/0d4d7581-426b-ed79-ebbd-0bd88361f285.png "04_p12.png")
拡張子p12で保存されます。

## 書き出された証明書をインポートする

書き出してもらったp12ファイルを受け取り、ダブルクリックするとキーチェーンアクセスが開きます。

![05_input_pass.png](https://qiita-image-store.s3.amazonaws.com/0/15926/ce1eb921-9a86-b6bd-eadb-f6126941943d.png "05_input_pass.png")
書き出した際に設定したパスワードを入力してください。

Xcodeで確認します。
![10_Admin_Account.png](https://qiita-image-store.s3.amazonaws.com/0/15926/89f568fc-f61f-c6ee-5ffd-757be90e66cf.png "10_Admin_Account.png")
![11_added_cer.png](https://qiita-image-store.s3.amazonaws.com/0/15926/1b641a13-096d-b23b-6498-3fab84995c54.png "11_added_cer.png")
Signing IdentitiesにiOS Distributionが追加されているはずです。

# アプリのアーカイブ作成

ストアに公開するにはXcodeでアプリをアーカイブし、そのアーカイブをアップロードします。

## アーカイブのスキームをリリースに設定

まず、XcodeのメニューからProduct > Scheme > Edit Scheme...を選んでください。ArchiveのBuild ConfigurationをReleaseにして閉じます。

![01_archive_build_configuration.png](https://qiita-image-store.s3.amazonaws.com/0/15926/7828f37a-3da2-af65-3d47-3617c435347f.png "01_archive_build_configuration.png")

## プロビジョニングプロファイルのリリースへ公開用を設定

Build Settings > Code Signing > CodeSigning Identity > Releaseに「iOS Distribution:」から始まるIDを選択してください。
Build Settings > Code Signing > Provisioning Profile > Releaseにも公開用のプロビジョニングを選択します。
Apple Developerの[Provisioning Profiles](https://developer.apple.com/account/ios/profile/profileList.action?type=production)でTypeが「iOS Distribution」となっているのが公開用のプロビジョニングプロファイルです。
設定が見つからない場合はそのまま進んでしまってかまいません。

## アーカイブ

左上のDistinationで「iOS Device」か接続している端末を選択し、Product > Archiveを実行します。

# アップロード準備（バリデーション）

![04_Organizer_—_Archives.png](https://qiita-image-store.s3.amazonaws.com/0/15926/1e5d99ca-753a-12fc-7378-317282aff4eb.png "04_Organizer_—_Archives.png")
アーカイブが完了するとOrganizer画面が開くので[^2]、Validateを実行します。

![10_スクリーンショット_2015_01_13_11_03.png](https://qiita-image-store.s3.amazonaws.com/0/15926/3be6eb81-9f87-6b7c-8d91-4bd3070c3637.png "10_スクリーンショット_2015_01_13_11_03.png")
プロビジョニングファイルを保持しているチームを選びます。通常はデフォルトのままで問題ありません。

![11_スクリーンショット_2015_01_13_11_06.png](https://qiita-image-store.s3.amazonaws.com/0/15926/e09b5074-e2cc-a5f2-ee9b-3965b5409dca.png "11_スクリーンショット_2015_01_13_11_06.png")
そのままValidateを押してください。

![13_スクリーンショット_2015_01_13_11_07.png](https://qiita-image-store.s3.amazonaws.com/0/15926/0b800565-9a09-36ba-a227-d7ba3e39996c.png "13_スクリーンショット_2015_01_13_11_07.png")
バリデーションを通過すればこのような画面が表示されます。

![01_already_exists_binary.png](https://qiita-image-store.s3.amazonaws.com/0/15926/1fd10e2d-f8d6-4023-8de8-d26e249b12c0.png "01_already_exists_binary.png")
失敗するとエラーが表示されるので、内容に従って修正してください。上記はすでにアプリをアップロードしているというエラーです（一度Submitしたアプリはビルド番号を変更しないとアップロードできません）。

なお、間違えてBuild Configuration：Debugでアーカイブしても成功してしまうので気をつけてください。

# アプリのアップロード

準備が整ったので、ストアに公開するためアーカイブをアップロードします。ここでSubmitするとiTunes Connectへ「ビルド」が追加されます。

![20_Organizer_—_Archives.png](https://qiita-image-store.s3.amazonaws.com/0/15926/7e348e34-782e-d099-1704-53dcef7db080.png "20_Organizer_—_Archives.png")
バリデーションに通ってもステータスが変化しませんが[^3]、気にせず先ほどのアーカイブ一覧でSubmitボタンをクリックしてください。

![21_スクリーンショット_2015_01_13_11_08.png](https://qiita-image-store.s3.amazonaws.com/0/15926/b4663d8f-0ad3-76c9-8c12-c2f85802d116.png "21_スクリーンショット_2015_01_13_11_08.png")

![22_スクリーンショット_2015_01_13_11_09.png](https://qiita-image-store.s3.amazonaws.com/0/15926/e5fe9b16-4c9c-0070-a5f8-9d554fa2c10f.png "22_スクリーンショット_2015_01_13_11_09.png")
バリデーションと同様に進みます。

![24_スクリーンショット_2015_01_13_11_10.png](https://qiita-image-store.s3.amazonaws.com/0/15926/449e890a-ba11-c311-a8d6-1a35fa5f7713.png "24_スクリーンショット_2015_01_13_11_10.png")
Submitを押したらアップロードが完了するまで待ちましょう。進捗のバーは全くあてにならないので、進まなくても気にかける必要はありません。

![26_スクリーンショット_2015_01_13_11_10.png](https://qiita-image-store.s3.amazonaws.com/0/15926/03d40504-13d3-6b32-0b43-4f082520422d.png "26_スクリーンショット_2015_01_13_11_10.png")

![30_Organizer_—_Archives.png](https://qiita-image-store.s3.amazonaws.com/0/15926/89718a16-21e5-96a6-2297-b98bd4e1ad4e.png "30_Organizer_—_Archives.png")
相変わらずステータスが変わらないので、後で区別できるようにSubmitしたものはコメントをつけておきましょう。

# iTunes Connectでアップロードの確認

[iTunes Connect](https://itunesconnect.apple.com/)にアクセスし、「マイ App」からアップロードしたアプリを選んでください。

![41_iTunes_Connect.png](https://qiita-image-store.s3.amazonaws.com/0/15926/ad48e9b5-ef0f-8bf2-6831-57bf9cca6750.png "41_iTunes_Connect.png")

「プレリリース」を選択し、先ほどアップロードしたビルド番号が追加されていることを確認します。

![42_iTunes_Connect.png](https://qiita-image-store.s3.amazonaws.com/0/15926/1c63300e-d6fc-58bc-56c9-293adc78913a.png "42_iTunes_Connect.png")

# iTunes Connectで公開用のビルドを選択
送信しただけでは公開できません。アプリの「バージョン」をクリックして、「ビルド」項目から公開するビルドを選択します。

![43_iTunes_Connect.png](https://qiita-image-store.s3.amazonaws.com/0/15926/ad60a250-7a59-bc72-31ab-27eec4710651.png "43_iTunes_Connect.png")
すでに設定されている場合は-ボタンで消してください。

![44_iTunes_Connect.png](https://qiita-image-store.s3.amazonaws.com/0/15926/5ed1c05d-37c1-de33-735c-f62b6e873f57.png "44_iTunes_Connect.png")

![45_iTunes_Connect.png](https://qiita-image-store.s3.amazonaws.com/0/15926/73173553-f6ea-9f23-de67-5b57c0fe16a7.png "45_iTunes_Connect.png")
+ボタンを押し、公開するビルド番号を選びます。

![46_iTunes_Connect.png](https://qiita-image-store.s3.amazonaws.com/0/15926/58dfccb7-0ec5-7c07-d7e6-e79c364b0101.png "46_iTunes_Connect.png")
終わり **ません。**「保存」ボタンを忘れずに押してください。

![47_iTunes_Connect.png](https://qiita-image-store.s3.amazonaws.com/0/15926/57a28484-abb9-b5c3-d0b7-0e084658a9cd.png "47_iTunes_Connect.png")
保存ボタンが「保存済み」でグレーアウトすれば完了です。
レビューへ提出後、Appleの審査を経てアプリが公開されます。おつかれさまでした。


[^1]: 登録済みの証明書はXcodeで追加できないため。ProductionのCertificateはアプリ公開したことのあるチームなら既に存在するはず。
[^2]: 表示されない場合、XcodeのメニューからWindow > Organizerを選択してください。ちなみにEstimate Sizeをクリックすするとアプリのデータサイズを計算してくれます。
[^3]: 以前は「Passed Validation」などと表示されていたはずです。古い記事ではステータスが変わると書いてあるかもしれません。