iPhone/iPadにDelphi/C++Builder開発アプリを配置する手順(実機への配置）

#iPhone/iPadにアプリを配置する手順
この記事は 別記事[「[Hello World] iOS アプリをDelphiで作ってみよう」](http://qiita.com/kazaiso/items/b95322d995c73929b819)の続きです。そして、当記事は [「【超入門】iOSアプリ開発をDelphi/C++Builderで始めるためのファーストステップ」](http://qiita.com/kazaiso/items/10562f1d103c12d415af)としてまとめられている記事の一部でもあります。

が、**iOSアプリを作る前段階としてのXcode8におけるプロビジョニング設定手順の参考としてもご覧いただけます。**
さて、[前記事](http://qiita.com/kazaiso/items/b95322d995c73929b819)にて、シミュレーターでの動作ができたら、次は、実際にiPhone/iPadデバイスにアプリを配置して動作させましょう。アプリを「配置」する観点で、iOSアプリを大きく3つの種類に分けてみました。異論は認める。

|アプリの種類|主な用途|
|-----------------------------------------------|---------------------------------------------|
|開発|開発用で、特定のデバイスにアプリを配置してテストなど行うための形態|
|アドホック|ストア通さず配布し、テスト用に特定のデバイス配布したり、実稼働用に配布して使用。企業内でのみ使用する業務アプリなどで使用される種類|
|アプリケーションストア| App Store に登録して広く配布し、AppStoreからダウンロードして使用する種類。広く誰にでも使ってもらう方法|

これら、アプリの用途（種類）ごとに「プロビジョニング」、というものを設定しなければなりません。この記事では、まず、「開発」用のプロビジョニングを設定して、iOSのアプリの開発、テストが行えるようにします。

##使用環境
ここで手順ご紹介に使用しているOS,ソフトウエアなどのバージョンなどを記載します。

|環境 | バージョン | 
|---|---|
|Windows| 10 バージョン 1607 ビルド 14393.969|
|RAD Studio / Delphi / C++Builder |  10.2 Tokyo | 
|macOS | Sierra バージョン 10.12.4 |
| iOS | 10.3.1 |
|Parallels 11 for Mac| 11.2.2|
|Xcode | 8.3.1 *注１ |
*1 : 2017年4月現在、Xcodeは8.2の使用を推奨（8.3はRAD Studioとの相性問題あり）


##アプリケーションのプロビジョニング
開発しているアプリを実際にiPhone/iPadデバイスへテスト用に配置（デプロイ、と言います）して実行したり、アプリをアドホック（ストアを経由しないで配布インストールして使う方法）としてiOSデバイスにインストールしたり、Appleストアへ申請したりするには、アプリが「署名」されていなければなりません。そして、「署名」されているには、「デベロッパー証明書」というものを取得していなければなりません。そして「デベロッパー証明書」を取得するには、Apple Developer Programに参加しなければなりません。
そうやって手続きを終えたのちに、アプリのID、APP IDを取得し、デバイス情報、証明書と合わせて「プロビジョニング」します。順に見ていきましょう。

###Apple Developer Program(アップルデベロッパープログラム)への参加
1. [AppleIDをもっていなければ取得](https://appleid.apple.com/account)しておきます。AppleIDとはなんぞや？という方はこちらのアップルサポートの[記事をどうぞ](https://support.apple.com/ja-jp/HT204316)
2. [Apple デベロッパー プログラム](https://developer.apple.com/programs/jp/)に[加入登録](https://developer.apple.com/programs/enroll/jp/)します。年会費が必要です。この記事を書いている2017年4月現在では、個人向け年間 11,800円、法人向け年間 37,800円です。[(Appleの購入とアクティベーションサポート情報)](https://developer.apple.com/support/purchase-activation/jp/)

説明があっさりしていますが、こんなものです。Appleのデベロッパ申し込みWebの手順を記載しても、時折手順が変わることもあるとのことなので、ここにはAppleのWebサイト内での詳細手順は転記せず進めておきます。AppleのWebに従って進めてください（丸投げ）

ここからはプロビジョニングの作成まで、実際の詳細な手順を見てみましょう。ちなみに[「端折った手順」](http://qiita.com/kazaiso/items/bb13147f003841720f27#%E6%9C%80%E5%BE%8C%E3%81%AB%E7%AB%AF%E6%8A%98%E3%81%A3%E3%81%9F%E6%96%B9%E6%B3%95%E3%82%92%E3%81%94%E7%B4%B9%E4%BB%8B%E3%81%97%E3%81%BE%E3%81%99)もあります。楽な方法を選びたい方は[「端折った手順」](http://qiita.com/kazaiso/items/bb13147f003841720f27#%E6%9C%80%E5%BE%8C%E3%81%AB%E7%AB%AF%E6%8A%98%E3%81%A3%E3%81%9F%E6%96%B9%E6%B3%95%E3%82%92%E3%81%94%E7%B4%B9%E4%BB%8B%E3%81%97%E3%81%BE%E3%81%99)をご参照ください。端折ったオートマチックなやり方では、本質はつかめない！細かいこと通してやることで本質を覚えるんだ！って方はこのまま読み進んでください。([端折ったほう](http://qiita.com/kazaiso/items/bb13147f003841720f27#%E6%9C%80%E5%BE%8C%E3%81%AB%E7%AB%AF%E6%8A%98%E3%81%A3%E3%81%9F%E6%96%B9%E6%B3%95%E3%82%92%E3%81%94%E7%B4%B9%E4%BB%8B%E3%81%97%E3%81%BE%E3%81%99)が「開発」アプリを作るうえでは簡単でオススメです）

###証明書の取得
前述のとおり、アプリに署名するには「デベロッパ証明書」を取得しなければなりません。これはAppleに要求して取得します。要求と言っても手作業で申請とかするわけではなく、macOS上のXcodeでポチッとやるだけです。
Apple公式の手順は[こちらに記載](https://developer.apple.com/jp/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html)されています。

証明書は、用途ごとに用意する必要があります。その用途別はiOS向けには2種類あります。

|証明書の種類|説明|
|---|---| 
|iOSアプリ開発用 (iOS Development)|開発中にiOSデバイスでアプリを実行するため|
|iOS配布用 (iOS Distribution)| 指定したデバイスにテスト用、Ad Hocとして配布、またはストア登録するため|

などなど。他にもmacOSアプリ開発用や、macOSアプリのストア登録用や、macOSアプリでストアには登録時内で配布する物用、などいくつかあります。  くわしくは[Appleサポートのドキュメントをご参照](https://developer.apple.com/jp/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html#//apple_ref/doc/uid/TP40012582-CH31-SW41)ください。  それでは手順にはいります。


1. macOS上でXcodeを起動します。
2. [Xcode]-[Preferences]を選択して環境設定を開きます。
3. [Accounts] をクリックします。
4. 初めての開発アプリ作成なら、ここのAccountsにはアカウントが表示されていません。左下の[+]ボタンをクリックして[Add Apple ID...] を選択します。
![スクリーンショット 2017-04-17 20.57.07.png](https://qiita-image-store.s3.amazonaws.com/0/145847/5c19c44b-d6b7-43f2-d4eb-7952cb0f069c.png)

5. 表示されるダイアログ「Sign in to Xcode with Your Apple ID」に「Apple デベロッパー プログラム」登録したApple IDとパスワードを入力し、[Sign In]をクリックします。
6. Apple IDがアカウントとして表示されます。今度は右下の「Manage Certificate...]ボタンをクリックします。「Signing certificates for (Apple ID)」ダイアログが現れ、取得済の署名証明書が表示されます。取得歴がなければ、表示されません。
7. 「Signing certificates for (Apple ID)」ダイアログの左下の[+]ボタンをクリックして表示される [iOS Development]をクリックします。
![スクリーンショット 2017-04-17 21.11.35.png](https://qiita-image-store.s3.amazonaws.com/0/145847/6fca4d9b-c559-7bf9-b74f-135af4faa7cf.png)
8. 「Signing certificates for (Apple ID)」ダイアログに「iOS Development Certificate」が追加されます。
9. [Done]をクリックしてダイアログを閉じます。

これで証明書は取得できました。この方法を使うと、取得した証明書はmacOSのキーチェーンにも自動的に登録されます。



###実機の登録
今度は動作させるデバイスを登録します。「プロビジョニング」には動作させるデバイス情報も必要なんです。

10. 開発用アプリを送り込みたいiPhone/iPadをMacに接続します。（USB+Lightning)ケーブルで物理的に接続してください。
11. iPhone/iPadに接続したデバイスを信頼するかどうかの問い合わせが出てるかと思いますので、「信頼する」をタップします。
12. macOSの上部ツールバーのXcodeのメニュー内、[Window] - [Devises]を選択します。
13. 接続している（アプリを開発するアプリを配置したい）iOSデバイスが左側に表示されているので、それをクリックします。
14. デバイス情報が表示されます。このデバイス情報の「identifier」をコピーしておいてください。
1. [Appleデベロッパーアカウント](https://developer.apple.com/account) Web ページにいき、ログインします。
2. Web ページの「Certificates, Identifiers & Profiles」をクリックします
![image](https://qiita-image-store.s3.amazonaws.com/0/145847/74456b63-117a-609c-cbae-625849cd24b5.png)

3. 左下の「Devices]の「All」をクリックします。
4. All Devecisesが表示されるので、右上の「＋」ボタンをクリックします。
5. デバイス登録ページが表示されるので、デバイスの名前（好きなデバイス名でOK)と、先ほどコピーした「identifier」をUDIDに入力します。
![スクリーンショット 2017-04-18 17.00.36.png](https://qiita-image-store.s3.amazonaws.com/0/145847/ce91d25c-debb-1232-d601-7bb08dfda441.png)

6. 一番下に表示されている[Continue]をクリックします。
7. 画面が切り替わったら、情報が正しいかか確認の上、一番下に表示されている[Register]をクリックします。
8. [Done]をクリックすると「All Deceives」のページに戻ります。

これで実機登録完了です。

###APP IDの取得
今度は配置するアプリのIDを作成します。「プロビジョニング」にはアプリのIDも必要なんです。
が、開発向けのプロビジョニングでは、最初から登録されている ワイルドカードAPP IDが使えるので、ここでは新規追加せずに、APP IDの在りかのご紹介まで。

1. [Appleデベロッパーアカウント](https://developer.apple.com/account) Web ページにいき、ログインします。
2. Web ページの「Certificates, Identifiers & Profiles」をクリックします
3. 左の「Identifiers]の[App IDs]をクリックします。デフォルトで存在している Xcode iOS Wildcard App ID などが表示されているはずです。
![image](https://qiita-image-store.s3.amazonaws.com/0/145847/ad801edd-4644-ea22-ebe4-8c51925faf3a.png)

「Xcode iOS Wildcard AppID」 といったワイルドカードのAppIDがデフォルトで存在しているのを確認いただけるかと思います。存在しない場合には、下記の手順でワールドカードAPP IDを作っておきましょう。すでにワイルドカードがあるときには作らなくてOKです。

1. 右上の[+]ボタンをクリックし、
2. App ID Descriptionに[my Wildcard]名称をセット（名称は好きな名前でOK）
3. App ID Suffixに「Wildcard AppID], Bundle IDに[*]をセット
4. その後[Continue] - [Register]ボタンをクリック
5. [Done]ボタンをクリック  

App IDは以上。



###プロビジョニングプロファイルの作成
いよいよプロビジョニングまで到達しました。では、作りましょう、プロビジョニングプロファイル。

1. [Appleデベロッパーアカウント](https://developer.apple.com/account) Web ページにいき、ログインします。
2. Web ページの「Certificates, Identifiers & Profiles」をクリックします
3. 左下の下の「Provisioning Profile」の[All]をクリックします。
![スクリーンショット 2017-04-18 17.23.53.png](https://qiita-image-store.s3.amazonaws.com/0/145847/bd0df9f2-3efb-2643-49ae-dbf9c3bd9715.png)

4. 右上に表示されている「＋」をクリックします。
5. どんなタイプのプロビジョニングを必要としているか問い合わせされるので、[Development] - [iOS App Development] を選択し、下部に表示されている[Continue]をクリックします。
6. App IDを選択するように言われるので[Xcode iOS Wildcard App ID]、もしくは先のApp IDのセクションで作ったワイルドカードApp IDを選択して、下部に表示されている[Continue]をクリックします。開発向けであれば、とりあえず、このApp IDでOK。App perchesなどの機能が使えないので、本格稼働のときには、個別のApp IDを別途作ってあげればいいです。
7. Certificates（証明書）を選ぶように言われるので、 「証明書の取得」のセクションで作っておいたiOS Development の証明書を選択して[Continue]をクリックします。
8. デバイスを選ぶようにいわれるので、「実機の登録」のセクションで登録した、アプリを配置したいデバイスを選択して[Continue]をクリックします。
9. プロファイル名を決めてプロビジョニングを生成するように言われるので、プロファイルネームをお好きに設定して[Continue]をクリックします。
10. 「Your provisioning profile is ready」(プロビジョニングプロファイルの準備ができました）たと表示され、「Download]ボタンが表示されますので、これをクリック。ダウンロードが開始され、ダウンロードフォルダに保存されます。
11. Doneをクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/145847/4ff32d20-f609-e827-5ac6-55ab4324b195.png)

これで、プロビジョニングファイルが作成され、プロビジョニングも有効（アクティブ）な状態になりました！次の手順では、このプロビジョンングプロファイルを、開発アプリを動作させる実機にインストールします。

###動作実機へプロビジョニングプロファイルをインストール
さて、開発アプリをiOSデバイス上で動作させるためには、動作させる実機上に対応するプロビジョニングプロファイルがインストールされていなければなりません。下記手順にて先ほど作ったプロビジョニングプロファイルを実機にインストールしていきます。

1. 開発用アプリを送り込みたいiPhone/iPadをMacに接続します。（USB+Lightning)ケーブルで物理的に接続してください。
2. Xcodeを起動します。
1. macOSの上部ツールバーのXcodeのメニュー内、[Window] - [Devises]を選択します。
1. 接続している（アプリを開発するアプリを配置したい）iOSデバイスが左側に表示されているので、それをクリックします。
2. 先ほど、ダウンロードしたプロビジョニングプロファイルのファイル（デフォルトで「Downloads」」フォルダにダウンロードされている）をダブルクリックします。これでプロビジョニングファイルが、実機にインストールされました。
1. 次に、実機に、プロファイルが正しくインストールされたか、確認してみます。デバイス情報が表示されているダイアログの、左側に表示されているiOSデバイス（アイコン）を二本指タップしてコンテキストメニューを表示し、[Show Provisioning Profiles]を選択します。
2.「Provisioning profiles installed on xx(デバイス名)」のダイアログが表示されます。
![スクリーンショット 2017-04-28 19.07.49.png](https://qiita-image-store.s3.amazonaws.com/0/145847/0a030ca5-1b19-fc49-0d51-78a35a50c7b9.png)
インストールします。
ここに先ほどのプロビジョニングプロファイル名が表示されていれば、実機にプロファイルがインストールできています。

もし、表示されていなければ、

1. 左下の「＋」をクリックします。
1. 「Select a provisioning profile to install on the device] （デバイスにインストールするプロビジョンングファイルを選択）ダイアログが表示されるので、「プロビジョニングファイルの作成」手順で作成して、ダウンロードしているプロビジョニングファイル（デフォルトで「Downloads」」フォルダにダウンロードされている）を選択して[Install]をクリックします。
2. [Done]ボタンをクリックします。

これで、プロビジョニングファイルがiOSデバイス実機にインストールされました。
次の手順では、開発環境から、開発アプリを実機に配置（デプロイ）してみましょう。

##iPhone / iPad アプリを実機に配置
開発アプリをDelphi/ C++Builder / RAD Studio で ビルドして 実機へと配置します。
事前準備として macOS側で PA Serverを起動しておいてください。 もし、PA Serverが前述のプロビジョニングプロファイル作成前から起動しっぱなしだった場合には、**一度終了させて、再起動**させておいてください。
PA Server、なんのことだかわからんよ？という方は 別記事[XcodeのインストールとPAServerのインストール ](http://qiita.com/kazaiso/items/0a1ae778dc05f5eb7aed)をご参照ください。

では手順の説明に入ります。

1. RAD Studioを起動します。
2. [ツール] - [オプション] を選択し、オプションウインドウを開きます。
3. 左側のオプションリストから「プロビジョニング」をクリックします。
4. プロビジョニングの「ビルドの種類(B)」に[iOS デバイス - 64bit 開発」を選択します。
5. 自動的に先ほどの手順で作成したプロビジョニングプロファイルが選択され「選択したエンティティ」に情報が表示されます。確認し[OK]をクリックします。先ほど作成したアドホック用のプロビジョニングファイルではない場合(**※要注意**)、「プロビジョンプロファイル」のドロップダウンから、正しいプロファイルを選択して、[OK]をクリックしてください。
![iOSe64.PNG](https://qiita-image-store.s3.amazonaws.com/0/145847/c13ef990-b1e3-f6d2-d9d4-c210d02c21ae.png)
6. なにかアプリを作ります。[前の記事で作ったHello world](http://qiita.com/kazaiso/items/b95322d995c73929b819) アプリでもよいでしょう。作り終わったら次の手順へ。
7. プロジェクトマネージャのターゲットプラットフォームにて[iOSデバイス - 64bit - ...]を選択します。
8. ターゲットプラットフォームにて[iOSデバイス - 64bit - ...]の下位レベルにある「ターゲット」フォルダを開くと、macOS側に接続されている、実機iOS機が表示されているはずです。表示されていなければ、右クリックで表示される「更新」を選択してください。
9. 表示されている実機iOS機の名称をダブルクリックすると、太字で強調表示され、ターゲットとしてセットされます。
1. 同列に表示されている[構成]フォルダを開き、[開発]をダブルクリックすると、太字で強調表示され、ターゲットとしてセットされます。
![image](https://qiita-image-store.s3.amazonaws.com/0/145847/5d8baadf-e4af-49a8-cea5-7073043b7470.png)

10. それではビルド（実行）してみましょう。[Shift+Ctrl+F9]キーを押す、もしくはツールバー上の緑三角の[デバッガを使わずに実行]ボタンをクリックします。この時、心の中で"デプロイ！"と叫びます。決して声に出してはいけません。
11. macOS側で「Codesignはキーチェーンに含まれるキー"xxxx"へアクセスしようとしています」とダイアログが出ますので、「常に許可」もしくは「許可」をクリックします。
12. そのまましばらく待つと、iOSデバイス側で、アプリが起動してきます。
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/145847/270c051a-b5ae-8eef-799a-5b906c039abe.png)


以上で「開発」目的のアプリの配置は完了となります。 うまくいかない、というかたは、下記の「端折った方法」も試してみてください。


##最後に端折った方法をご紹介します。
Xcode8では、上記で記載している、証明書、App ID, device ID からプロファイルの作成まで自動で行い、「開発」目的のアプリをiOSデバイスにまで送り込んでくれるオプションがあります。 
つまり、上述の、面倒な開発用プロビジョンプロファイルの作成を自動でやってくれるんです！ 
これを使ってサクッとプロビジョニング作成をおこなってしまおう、というのが、この「端折った手順」の趣旨です。
※Adhocやストア登録向けのプロビジョニングプロファイルを作成したい場合には、上述の~~面倒な~~丁寧な手順にて設定を行うことが必要なようです。
子の端折った方法を使って設定を行っている方法についてビデオを公開しています。
こちらもご参考にどうぞ： https://youtu.be/r9vgMLSzloU

では、手順、参りましょう。

1. Xcodeを起動します。
2. XcodeのWelcomeページから [Create a new Xcode Project]を選びます。
3. Choose a template for your new project では「Single View Application」を選択して、[Next]をクリック
![スクリーンショット 2017-04-21 20.09.54.png](https://qiita-image-store.s3.amazonaws.com/0/145847/5b386748-8b1d-f8aa-18ee-193497042b37.png)

4. 作成するアプリの基本情報登録ダイアログに切り替わるので、Project Nameに任意の名前を入れます。ここでは [Test]と入力しました。Team欄や Organization Name欄にはご自分のApple ID登録名を入力しておけばよいかと。Team欄に過去、自分のApple IDを入力したことがない場合には、Apple IDの入力とパスワードを求められますので、それを入力してから、Team名にご自分のApple IDを選択しなおしてださい。
5. [Next]ボタンをクリックします。
1. おもむろに保存場所選択と思われるダイアログが開くので、「Create]をクリック
デバッグのアクセス許可を求められるので、お使いのmacOSのアカウントパスワードを入力して続行。
1. これで真っ白な画面を表示するだけの基本APPが作られたことになります。
2. 次に、iOSデバイスを接続します。開発用アプリを送り込みたいiPhone/iPadをMacに接続します。（USB+Lightning)ケーブルで物理的に接続してください。
iPhone/iPadに接続したデバイスを信頼するかどうかの問い合わせが出てるかと思いますので、「信頼する」をタップします。
2. 接続がうまくいって、少々待つと左上のプロジェクト名で対象のiOSデバイスが選択できるようになりますので、これを指定しておきます。
3. 中央あたりの「Signing」で[Automatically manage Signing] のチェックボックスをONにします。
4. 同様にTeam欄は、先ほどと同じく自分のApple IDの登録名をいれておきます。
5. ここまできたら、Xcode左上の右向き三角マークをクリックします。
![スクリーンショット 2017-04-21 20.22.13.png](https://qiita-image-store.s3.amazonaws.com/0/145847/570bca24-dba8-6f8c-1fbc-636136f619fc.png)

6. これで、ビルドが開始され、真っ白な画面のみが表示されるアプリが実機に送り込まれます。 

※実機を繋いですぐビルドすると、「iphone busy processing symbol filesエラー 」というダイアログが出ることがあります。このとき、Xcode中央上のステータス表示を見ると「Processing Symbol Files」と表示されプログレスバーがゆっくり動いているかとおもいます。このプログレスが終わってから、再度ビルドにチャレンジしてください。

さて、ここまで成功すると、内部的には、プロビジョニングファイルが作られ、iOS機にもプロビジョニングファイルがインストールされた状態になります。
つまり、前述のセクションの「証明書作成」～「プロビジョニング作成」まで自動でやってくれるのです！
あとは「iPhone / iPad アプリを実機に配置」のセクションに記述していることを実施するのみです。

それではiOSアプリの開発をお楽しみください。

##"デプロイ！" できない！
上記手順をなぞってやってみても、デプロイしたときにエラーが出てiOS実機に配置できない、ということが時々あります。そんなことになっていた時期が私にもありました。
これを回避するためにいくつかやったことを、参考として載せておきます。

* 基本として、エラーの時にRAD Studioに表示されるダイアログにいくつか解決のためのヒントがのっているので、まずはそれを参照してみる。
* Xcode上で同名の証明書を複数取得していないか確認。もし複数あったらリボークして1つにしてみる。
* キーチェーンに同名の証明書がのこっていないか？ [Launchpad] - [その他] - [キーチェーンアクセス] で表示されるキーや証明書でリボークされたものが残っていないか？複数同名キーが登録されていないか？を確認。もしあったら削除しておく。
* 上記に関連するプロファイル情報がのこっていないか？無効な証明書、過去に作ったプロファイルはmacOSの /Users/[ユーザー名]/Library/MobileDevice/Provisioning Profiles/の中に残っている場合があるので、これを削除。

証明書、プロファイル関連の重複や、古いものをクリーンアップしてあげると解決することがあるということですね。