【RPGツクールMV】WindowsだけでiOSアプリをビルドする方法【Cordova】

12月17日に発売された[RPGツクールMV][MV]では、従来のWindows/exe形式だけでなく、
新機能としてウェブブラウザからプレイできるHTML5形式やMacで実行するapp形式、
またAndroidのapk、iOSのipa形式の4種類のパッケージングが可能になりました。

# iOSアプリのパッケージングにはMacが必要
[新機能紹介のページ][新機能]にはそのように書かれていましたが、
実際に製品を購入してからヘルプファイルを読んでみると、
iOS向けにビルドするためにはMacが必要であると書かれています。

そうです。
iOSアプリを作成するには、どうしてもMacが必要なのです。
Mac向けアプリをビルドするためには、Macは必要ないというのに！

## サーバ上のMacでiOSアプリのビルドを代行してくれるサービス
結論から申し上げるとWindows版RPGツクールMVからiOSアプリを作成するには、
最終的にはMacを持っている誰かにMacを借りてビルドする必要が出てきます。

有名な代行サービスとして下記のようなものがあります。

* [Adobe PhoneGap Build][Adobe]
* [CircleCI]
* [Monaca]
* [TravisCI]

[PhoneGap Build][Adobe]は[Creative Cloud]登録者なら無料で使えるので、
私が登録している都合から[PhoneGap Build][Adobe]を使ってビルドしてみたいと思います。

#Adobe PhoneGap Build
今回は既に[Creative Cloud]に登録しているという前提で進めさせて頂きます。

###アプリケーションの登録
![スクリーンショット 2015-12-18 20.56.59.png](https://qiita-image-store.s3.amazonaws.com/0/5420/6412cd56-1092-8fbe-5826-aacf23ac59ab.png "スクリーンショット 2015-12-18 20.56.59.png")

[PhoneGap Build][adobe]にログインすると、上記のような画面が表示されますので、
MVから下記の手順で出力したフォルダをzipファイルに圧縮して、
「zipファイルをアップロード」ボタンを押して選択します。

メニュー > ファイル > デプロイメント > Android / iOS > OK

今回は新規作成した直後のプロジェクトをデプロイして試してみました。

##ビルド準備完了

![スクリーンショット 2015-12-18 21.10.22.png](https://qiita-image-store.s3.amazonaws.com/0/5420/11eadd9f-3f2d-02e0-2451-e0b47f540168.png "スクリーンショット 2015-12-18 21.10.22.png")

zipファイルのアップロードが完了すると上記のような画面になりますので、
アップロードしたアプリケーションのゲーム名と内容の説明を入力してから、
「ビルド準備完了」ボタンを押下してアプリケーションのビルドを実行します。

##iOSビルドのみ失敗
![スクリーンショット 2015-12-18 21.13.54.png](https://qiita-image-store.s3.amazonaws.com/0/5420/fb878db7-6d14-1c50-c24f-5c8e8fb20726.png "スクリーンショット 2015-12-18 21.13.54.png")

しばらくするとこのような画面になり、Android向けとWindows向けにビルドが成功し、
iOS向けのビルドが失敗していることを示す画面が表示されます。
詳細を表示すると下記のようなエラーメッセージが出ます。

```
You must provide a signing key, first. Find out how to fix this.
```

これは、iOSアプリの遠隔ビルドには[Apple Developer Program][adp]への登録とその証明書、
アプリごとに作成されるプロビジョニングプロファイルが必要となるにもかかわらず、
PhoneGap Buildにその登録が行われていないために発生しているエラーです。

具体的には下記のファイルをPhoneGap Buildに登録する必要があります。

* p12証明書ファイル
* プロビジョニングプロファイル

# プロビジョニングプロファイルの作成
ヘルプに書かれている通り、iOSアプリの遠隔ビルドには[Apple Developer Program][adp]への登録が必要です。

```text:ヘルプ->▼RPGツクールMV->▼資料集->iOSアプリへの変換->4.パッケージング->4-2.プロビジョニングプロファイルの作成
iOS端末実機にインストール可能なipaファイルを作成するには“プロビジョニングプロファイル”と呼ばれるアプリ識別用ファイルが必要になります。
プロビジョニングプロファイルを取得するには、Appleの［Apple Developer Program］への登録（有料）が必要です。
```
## RPGツクールMVのヘルプに書かれた、Macを使う方法
RPGツクールMVのメニューから開けるヘルプを下記のようにたどると、
Mac上でプロビジョニングプロファイルを作成する方法が書かれています。

0. ヘルプの目次
0. ▼ RPGツクールMV
0. ▼ 資料集
0. iOSアプリへの変換
0. 4 パッケージング
0. 4-2 プロビジョニングプロファイルの作成

基本的にはブラウザ操作が中心になりますが、鍵の作成等には「証明書アシスタント」や
「キーチェーンアクセス」等といったMac特有のアプリを使っています。

Windowsでもヘルプに書かれた方法でブラウザの操作をすれば問題ありませんが、
Mac特有のアプリをWindowsで代替するための方法を書いていきたいと思います。

## opensslのインストール
Windowsで鍵ファイルの作成等を行うためのOpenSSLというソフトをインストールします。
下記の手順で[管理者権限でコマンドプロンプトを起動][cmd]して、コマンドを入力して下さい。

1. Windows キー押下
2. 検索ボックスに cmd と入力
3. Ctrl + Shift + Enter
4. Alt + Y

OpenSSLをインストールするためにコマンドプロンプトへ入力するコマンドは下記の通りです。


```bash:cmd.exe
@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))"
SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
choco install openssl.light -y
```

## 鍵ファイルの作成と証明書要求・登録
ヘルプの「4-2-1 鍵ファイルの作成と証明書要求・登録」で必要となる要求ファイルを作成します。
下記コマンドのyour@name.comとYour Nameを書き換えてコマンドプロンプトへ入力します。

```bash:cmd.exe
cd "\Program Files\OpenSSL\bin"
openssl genrsa -out ios.key 2048
openssl req -new -key ios.key -out ios.csr -subj "/emailAddress=your@name.com, CN=Your Name, C=JP"
```

C:\Program Files\OpenSSL\bin に ios.csrというファイルが作成されているので、
「要求ファイルの選択画面で、キーチェーンアクセスで作成した要求ファイルを指定します。」
とヘルプに書かれた選択画面でios.csrを選択してアップロードすれば、
証明書ファイルios_development.cerがダウンロードできますので、
C:\Program Files\OpenSSL\binに保存して下さい。


## P12形式証明書ファイルの作成

ダウンロードしたios_development.cerからp12ファイルを作るために、
下記のコマンドを使い、ios.p12ファイルを作成します。

```bash:cmd.exe
openssl x509 -in ios_development.cer -inform DER -out ios.pem -outform PEM
openssl pkcs12 -export -inkey ios.key -in ios.pem -out ios.p12
```

この時、パスワードの設定が求められるので、適切なパスワードを入力して下さい。
パスワードはこの後のPhoneGap Buildへのキー登録時に必要なので覚えておいて下さい。

## プロビジョニングプロファイルのダウンロード
ヘルプの「4-2-4 プロビジョニングプロファイルの作成と登録」に書かれた通りの手順で、
プロビジョニングプロファイルを作成してからダウンロードします。



# Adobe PhoneGap Build
作成したキーを登録して、改めてビルドしてみます。
## キーの追加
![スクリーンショット 2015-12-18 21.49.10.png](https://qiita-image-store.s3.amazonaws.com/0/5420/6661c0f5-b959-002d-86cd-c981c7da491a.png "スクリーンショット 2015-12-18 21.49.10.png")

ページ右上にあるアカウントアイコンから下記の通りに遷移してキーを登録します

1. アカウントを編集
2. 署名キー
3. iOS
4. 「キーを追加」ボタンを押下
5. タイトルを入力
6. p12ファイルの選択
7. プロビジョニングプロファイルの選択
0. 「キーを送信」ボタンを押下

## キーのパスワードロックを解除
![スクリーンショット 2015-12-18 22.02.57.png](https://qiita-image-store.s3.amazonaws.com/0/5420/2b611a7e-b4ef-1911-a8b0-fbb4ae5f6213.png)

キーの登録が出来たら、同じく署名キー画面で下記の通り操作してロックを解除します

0. 「ロック解除」ボタンを押下
0. p12ファイルの作成時に設定したパスワードを入力
0. 「キーを送信」ボタンを押下

## アプリケーションの再ビルド
![スクリーンショット 2015-12-18 22.10.31.png](https://qiita-image-store.s3.amazonaws.com/0/5420/9189e99e-8226-8a5a-a90a-3fca866c4b7a.png "スクリーンショット 2015-12-18 22.10.31.png")

アプリケーションのページから先ほど登録したiOSのキーを選択して、再ビルドボタンを押下します。
しばらくするとビルドが完了します。

## iOSのSafariからPhoneGap Buildへアクセス
<img width="375" alt="2015-12-19 19.14.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/5420/e456b95f-a5b4-296c-aecd-6ed62cdf59ba.png">

iOSのSafariから[PhoneGap Build][adobe]にアクセスすれば、
iOSアプリとしてインストールすることが出来ます。

# アドベントカレンダー
これは[QiitaのRPGツクールMV Advent Calendar 2015][qiita]の18日の記事でありながら、
[RPGツクールMV(なんでもあり) Advent Calendar 2015][adv]の18日の記事でもあります。

明日は前者は[kyubuns]さん、後者は[erorpginfo]さんのご担当です。

MVで真っ先に[MMORPG]を開発された[kyubuns]さんと、
[RGC]の[erorpginfo]さんにバトンをお渡し出来て光栄です（ｷﾘｯ

[cmd]: http://qiita.com/takuya0301/items/df6cde3bbaf9e13ef8f0
[AC]: http://qiita.com/advent-calendar/2015/rmmv "RPGツクールMV Advent Calendar 2015 - Qiita"
[MV]: http://tkoolmv.com/
[新機能]: http://tkool.jp/mv/new_function/index.html
[もくもく会]: http://tkoolmv-mokumoku.peatix.com/
[Adobe]: https://build.phonegap.com/
[Monaca]: https://ja.monaca.io/
[TravisCI]: https://travis-ci.org/
[CircleCI]: https://circleci.com/
[DevCenter]: https://developer.apple.com/account/ios/certificate/certificateList.action
[ADP]: https://developer.apple.com/programs/
[qiita]: http://qiita.com/advent-calendar/2015/rmmv
[adv]: http://www.adventar.org/calendars/1119
[kyubuns]: http://qiita.com/kyubuns
[erorpginfo]: http://www.adventar.org/users/9405
[MMORPG]: http://kyubuns.net/MMOM/
[RGC]: http://gametkool.com
[Creative Cloud]: http://www.adobe.com/jp/creativecloud.html