iOS の開発におけるプロビジョニングプロファイルの生成は、最初はとても分かりにくいものです。そこで今回、自分が調べた情報をまとめました。Web で検索すると手順を書いてあるものが多く見つかるのですが、個人的には手順はもとより、それぞれのファイルやタスクの意味が知りたいと思ったので、そのあたりを中心にまとめました。
なお、本稿は2013年10月5日現在の情報です。また、Xcode 5 を利用しています。本稿の内容は 2014年12月3日、Xcode 6 でもそのままお読みいただけます。iOS Developer Center などでの操作や画面も頻繁に変わるようなので、古くなってしまったらすみません。また、もし記載事項に誤解や間違いなどございましたらご指摘ください。
また、本稿はほぼ次の資料を参考に実践してみた内容をまとめたものです。下記の資料だけでも十分なぐらいの素晴らしい資料ですので、より詳細な情報については、下記の資料をご一覧いただけると、きっと幸せになれると思います。
- iOS チーム管理ガイド [PDF]
https://developer.apple.com/jp/devcenter/ios/library/documentation/DevPortalGuide.pdf
タイトルとはちょっと違って、プロビジョニングプロファイルと生成と管理について、丁寧かつとても分かりやすく掲載されていました。チーム開発についての記述も、お客様とのやりとりにも役立つと思います。本稿はこの内容のほぼ受け売りです。とりあえず目次を見ただけで感激の内容でした。
- App Store への登録に関するチュートリアル [PDF]
https://developer.apple.com/jp/devcenter/ios/library/documentation/YourFirstAppStoreSubmission.pdf
App Store へのリリース関連が幅広く解説されています。プロビジョニングプロファイルの準備や運用についても書かれていて、こちらも iOS アプリケーションのリリースにあたって大変参考になる資料でした。
プロビジョニングプロファイルとは?
プロビジョニングプロファイルは、アプリケーションを iOS デバイス上で動作可能にする為に必要なリソースです。これが無いと、App Store でアプリケーションを配布することはもちろん、手元の自分の iPhone に開発中のアプリケーションをインストールして、実行することも出来ません。
プロビジョニングプロファイルは、App ID、証明書、テスト端末のUDID の3つの情報を関連づけるものです。これらの関連付けによって、アプリケーションの識別や、その妥当性、またテストの為にアプリケーションをインストールできる端末を指定するといったことが実現されています。
プロビジョニングプロファイルは、Apple 社のホストする Web サイトである「iOS Dev Center」で作成・管理します。ローカルだけで完結しないため、オペレーションの分かりにくさの原因の一つになっているようですが、そういうものだと思えば、特に難しいものではありません。
プロビジョニングプロファイルには、開発用、アドホック用(テスト等の為に配布する)、App Store 用と3種類あります。それぞれの役割と内容は以下の通りです。
- 開発用:
- [役割] 開発チームがアプリケーションをテストするために利用するために必要
- [内容] App ID、アプリをビルド可能な開発者の証明書(複数)、インストールできるデバイスのUDID(複数)
- AdHoc 用:
- [役割] 外部のテスト担当者が特定のデバイス上でアプリケーションを実行するために必要
- [内容] App ID、配布用証明書(1つ)、インストールできるデバイスのUDIDのリスト
- App Store 用:
- [役割] App Store でアプリケーションを配布するために必要
- [内容] App ID、配布用の証明書(1つ)
それぞれに、役割が異なり、また役割ごとに必要なリソースがパッケージされていることに注意ください。
プロビジョニングプロファイルの作成に必要なリソース
プロビジョニングプロファイルを作成するために必要なリソースの種類は多くて混乱しがちです。以下に、それぞれのリソースの役割と作成・取得方法などをまとめました。
- 証明書要求ファイル(csr)
- [役割] iOS Dev Center で証明書の作成をリクエストする為のファイル
- [作成] キーチェーンアクセスで作成する
- [備考] 証明書を作った後は、基本的に利用しない
- 証明書(cer)
- [役割] アプリの開発者や配布権限の特定の為の証明書
- [作成] iOS Developer Center で、証明書要求ファイル(csr)をアップロードして作成する
- 開発用(Development)と、配布用(Production)がある
- AppStore や AdHoc 版パッケージの作成は Production を用いる
- [利用] 作成後、ダウンロードしてキーチェーンアクセスにインストールする
- [備考] 証明書の有効期限は1年。配布用の証明書の更新や無効化には注意が必要
- App ID
- [役割] アプリケーションを識別するID
- [作成] iOS Developer Center で作成する
- [備考] 一度作ったら削除不可。複数のアプリケーションで共用可能
- UDID
- [役割] iPhone などのデバイス毎の固有の ID で、デバイスの特定に利用される
- [確認] Xcode のオーガナイザや iTunes で確認できる(オーガナイザが分かりやすい)
- プロビジョニングプロファイル(mobileprovision)
- [役割] App ID、UDID、証明書を関連づけるもの。アプリケーションをビルドする為に必要
- [作成] iOS Developer Center で作成する
大まかな作成・利用手順
- 証明書を準備する(開発用または配布用)
- キーチェーンアクセスで、証明書ファイル(csr)を作成する
- iOS Developer Center で、証明書(cer)を作成する
- 証明書(cer)をダウンロードし、ダブルクリックでキーチェーンアクセスにインストール
- iOS Developer Center に、App ID を登録する
- iOS Developer Center に、開発やテストに利用するデバイスの UDID を登録する
- iOS Developer Center に、プロビジョニングファイルを作成する
- [開発用] App ID + 開発者の証明書(複数)+ 開発用デバイスのUDID(複数)
- [AdHoc 用] App ID + 配布用証明書(1つ)+ テスト用デバイスのUDID(複数)
- [App Store 用] App ID + 配布用証明書(1つ)
- プロビジョニングファイルをダウンロードし、ダブルクリックで Xcode オーガナイザにインストール
- Xcode プロジェクトの [Build Settings] > [Code Signing] > [Provisioning Profile] に設定する
開発用の場合、開発者とインストールできるデバイスを限定する為に、それぞれ複数の情報を登録します。AdHoc 用では、インストールできるデバイスは限定するものの、配布用の証明書は1つだけ登録します。一方、App Store での公開用の場合、App Store で多くのユーザーに配信するために当然 UDID の限定は無くなります。
ここで、AdHoc や App Store 用など、配布する場合の証明書は1つであることに注意です。例えば、あなたとは別の担当者や企業が、配布用のアプリケーションをビルドすることもあるでしょう。その時には、配布用証明書の秘密鍵を、オペレーションを行う別の担当者に引き渡す必要があります。つまり、配布用証明書はアプリケーションの管理担当者間で共有されるものなのです。なお、配布用証明書の秘密鍵の引き渡しには、キーチェーンアクセスを用いて、個人情報交換ファイル(p12)を利用します。
作成・利用手順の詳細
幾つかの作業について手順を以下にまとめています。このあたりは、他の記事にもたくさん情報があると思いますので、都度最新の情報を見つけて参照されると良いかと思います。なお、本稿冒頭にあげた PDF のドキュメントは、本稿執筆時点でも少し古い内容でしたが、とても丁寧で分かりやすく、かつ詳しく、個人的には最も参考になった文書です。もしよければご参照ください。
証明書要求ファイル(csr)の作成
- キーチェーンアクセスを開いて、メニューから [キーチェーンアクセス] > [証明書アシスタント] > [認証局に証明書を要求…] を選択
- 証明書情報を記入して [続ける] を選択
- [ユーザーのメールアドレス] 自分のメールアドレス
- [通称] 任意の文字列を指定。例)Foreignkey Dev Key
- [CAのメールアドレス] 空にしておく
- [要求の処理] ディスクに保存
- ファイルに保存するダイアログが開くので、任意の名前を指定して保存する。
ちなみに、デフォルトのファイル名が「CertificateSigningRequest.certSigningRequest」で、拡張子「.certSigningRequest」が、要は「.csr」ですね。
証明書(cer)の取得とインストール
- iOS Dev Center にログインし、「Certificates, Identifiers & Profiles」ページを開く
- 左ナビゲーションから「Certifications」に入り、[+] マークから作成を開始する
- 「Select Type」ステップで、必要とする証明書のタイプを選択して [Continue]
- 「Request」ステップは CSR の生成の話なので、そのまま [Continue]
- 「Generate」ステップで作成しておいた CSR ファイルを選択して、[Generate]
- 「Download」ステップで作成した証明書(cer)を [Download]
- ダウンロードした CER ファイルをダブルクリックして、キーチェーンアクセスへインストール
App ID の作成
- iOS Dev Center にログインし、「Certificates, Identifiers & Profiles」ページを開く
- 左ナビゲーションの「Identifiers」に入り、[+] マークから作成を開始する
- [App ID Description / Name] App ID に付ける名前
- [App ID Prefix] Team ID のこと。指定されたもので変更不可
- [App ID Suffix] Bundle ID のこと。Explicit/Wildcard のいずれかを選択して入力
例)jp.foreignkey.* - [App Services] 必要なものを選択
- [Continue] で完了
(補足情報)
- App ID は、[Team ID] + [Bundle ID] の組み合わせ
例)A1B2C3D4E5.jp.foreignkey.appname(最初のセグメントが Team ID) - Team ID は、Apple によって指定される
- Bundle ID は、App ID を作成する時に自分で指定する
- Bundle ID は、ワイルドカード(*)が使えて、複数のアプリケーションで共用できる
例)jp.foreignkey.* ※別に * だけでも大丈夫です。 - 但し、APNS、In-App Purchase、iCloud、Game Cente を利用するアプリケーションの場合には、ワイルドカードを使った Bundle ID は利用できない。
デバイス(UDID)の登録
- iOS Dev Center にログインし、「Certificates, Identifiers & Profiles」ページを開く
- 左ナビゲーションの「Devices」に入り、[+] マークから作成を開始する
- [Name] 登録名。任意の文字列。後で変更可
- [UDID] 登録するデバイスの UDID
- [Continue] で完了
プロビジョニングプロファイルの取得とインストール
- iOS Dev Center にログインし、「Certificates, Identifiers & Profiles」ページを開く
- 左ナビゲーションの「Provisioning Profiles」に入り、[+] マークから作成を開始する
- 「Select Type」ステップで、必要なタイプ(Develop | App Store | Ad Hoc)を選択して [Continue]
- 「Configure」ステップで順番に設定する
- 「Select App ID」で、App ID を選択して [Continue]
- 「Select certificates」で、このアプリケーションに署名できる開発者の証明書を選択して [Continue]
- 「Select devices」で、このアプリケーションをインストールデバイスを選択して [Continue] ※Type が App Store の場合、このステップは無い
- 「Generate」Profile name を指定して [Generate]
- 「Download」ステップで作成したプロビジョニングプロファイル(mobileprovision)を [Download]
- ダウンロードした mobileprovision ファイルをダブルクリックして、Xcode(オーガナイザ)へインストール
[…] プロビジョニングプロファイルを作成しておく(ダウンロードは不要) => iOS プロビジョニングプロファイルの作成 […]