[UE5]リモートビルドを活用したIOS向けアプリ開発(実機にデプロイまで)

# はじめに
こちらは[Unreal Engine (UE) Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ue) の記事になります。
「UnrealEngine5でIOSアプリを作ってみたい」という方の参考になれば幸いです。また、間違っている点を発見された場合はご指摘いただけると嬉しいです。
>参考文献：[Unreal Engine 4でiOSアプリを開発する4つの方法](https://soramame-games.com/setup-ios#comment-47)


# 動作環境
Unreal Engine 5.1.0
iOS 17.1.2
Visual Studio 2022 
MacOS 13.2.1
Xcode 14.2

# 開発環境
UE5でiOS向けのアプリ開発環境は大まかに分けると以下の４つに分類できます。

1.WindowsでBlueprintのみのプロジェクト
2.WindowsでBlueprint&C++のプロジェクト
3.MacでBlueprintのみのプロジェクト
4.MacでBlueprint&C++のプロジェクト

今回私は**2.WindowsでBlueprint&C++のプロジェクト**で実装を行いました。
（注意：C++を含むプロジェクトの場合、iOS実機で動かすためにはMacでの一部ビルド処理がどうしても必要となるので、**WindowsとMacPCが必要**になってきます。）

# Apple Developer Programに登録する(Mac)

iOS端末でアプリを動作させるためには、Apple Developer Programに登録して年間99米ドルを支払う必要があります。以下のサイトが分かりやすかったです。
>参考：[【2022年10月】 最新版 Apple Developer Program【法人】登録手順](https://shusanblog.net/2019/10/04/post-8/)

# 証明書(p.12ファイル)とプロビジョニングプロファイルの作成方法(Mac)

iOSゲーム開発では**証明書(p.12ファイル)とプロビジョニングプロファイル**が必要になります。
作成手順を以下にまとめました。

1.**キーチェーンによる、Signing Certificate（証明書）作成の下準備**(**CertificateSigningRequest.certSigningRequest**の生成とインポート)
+ Macでキーチェーンアクセス(アプリケーション)を起動
+ メニューから、[キーチェーンアクセス]＞[証明書アシスタント]＞[認証局に証明書を要求]を選択
+ 証明書アシスタントにユーザーのメールアドレス、通称(組織名などがおすすめ)、要求の処理(ディスクに保存と鍵ペア情報を選択)、(CAのメールアドレスは無記入)を入力
+ CertificateSigningRequest.certSigningRequestの保存場所指定
+ [鍵ペア情報]はデフォルトのままでOK

2.**Apple Developer ProgramからCertificateSigningRequest.certSigningRequestを使用して、Signing Certificateの作成**
+ [Apple Developer Program](https://developer.apple.com/programs/jp/) の [Certificates](https://developer.apple.com/account/ios/certificate/certificateList.action) ページにアクセス
+ Create a certificateを選択
+ iOS App Developmentを選択して続けるをクリック
+ Choose Fileで、1で作成したCertificateSigningRequest.certSigningRequestを選択
+ Generateをクリック

3.**Apple Developer Programからデバイスの追加(開発デバイスが増えるたびに行う)**
+ [Apple Developer Program](https://developer.apple.com/programs/jp/) の [Devices](https://developer.apple.com/account/resources/devices/list) ページにアクセス
+ Register a Deviceを選択
+ Register a DeviceのPlatform(今回はIOS)、Device Name(端末名)、Device ID (UDID) を入力([Apple Configuratorを使用した調べ方(おすすめ)](https://www.micss.biz/2022/06/13/5335/#4))
+ Registerを選択

4.**Apple Developer ProgramからアプリIDの作成**
+ [Apple Developer Program](https://developer.apple.com/programs/jp/) の [Identifiers](https://developer.apple.com/account/resources/identifiers/list) ページにアクセス
+ Register an App IDを選択
+ App IDsを選択してContinueをクリック
+ Register an App IDのDescriptionにアプリ名を、Bundle IDはWildcardを選択し、[com.組織名.*]と記入
+ Registerを選択

5.**Apple Developer Programから2.3.4で作成した『署名証明書、デバイス、アプリ ID』を使用して、プロビジョニングプロファイルの作成とインポート**
+ [Apple Developer Program](https://developer.apple.com/programs/jp/) の [Profiles](https://developer.apple.com/account/resources/profiles/list) ページにアクセス
+ Generate a profileを選択
+ DevelopmentからiOS App Developmentを選択
+ Select an App IDのApp IDに**4で作成したアプリID**を選択
+ Select Certificatesにて**2で作成したSigning Certificate**を選択
+ Select Devicesにて**3で追加した開発端末**を選択
+ Review, Name and Generateにてプロビジョニング名を入力してGenerate
+ プロビジョニングプロファイルが生成できたら、ダウンロードする

6.**Macで作成した証明書をWindowで使用するため、キーチェーンアクセスからp.12ファイルを書き出し**
+ キーチェーンアクセスの証明書項目から、証明書と秘密鍵の階層構造を見つける(**iPhone Developer:名前**の証明書と1の**通称で記入した名前**の秘密鍵)
+ 証明書を右クリック
+ ~を書き出すを選択
+ パスワードを設定
+ .p12ファイルが書き出される

**注意**
+ 証明書と秘密鍵が階層構造が見当たらない場合は「Signing Certificate(証明書)作成の下準備」で作成した**cerファイルをダブルクリックする**と出現します。
+ Apple Developer Program で発行した証明書に対して「**証明書が信頼できない**」と赤文字のエラーが発生する場合は、**システムキーチェーンに中間証明書をインストールする必要がある。(以下のサイトを参照)**
>参考：[Apple 発行の証明書が信頼されない問題を解決する](https://www.gclue.jp/2022/07/trust-certificates-in-keychain.html)


# リモートビルド用にXcodeをインストール(Mac)

### Xcodeをインストール
以下のダウンロードサイトからバージョンを選んでXcodeインストールします。
[ダウンロードサイト](https://developer.apple.com/download/all/?q=xcode)

**注意**
+ Xcode14.1以上のバージョンでビルドしないと、ストア申請ができない。(2023年12月現在)
+ Xcode14.1・Xcode14.2は上手くビルドできるが、Xcode15以上のバージョンだと上手くいかない(原因わかる人教えてください🙇)

### 元々Xcodeが入っていない人の場合
1. ダウンロードできたらファイルを展開
2. アプリケーションにXcodeを入れ、起動
3. 古いバージョンだと起動できないとこがあるので、その時は以下のサイトを参照
>参考:[macOS MontereyでXcode 14を起動する、またはmacOS VenturaでXcode 13以下を起動する](https://blog.kishikawakatsumi.com/entry/2022/06/09/093538
)

### 元々Xcodeが入っている場合
1.ダウンロードできたらファイルを展開
2.アプリケーションに入っている元々のXcodeの名前にバージョン名を加える(名前が被らないようにする)
3.アプリケーションにXcodeを入れ、起動。
4.古いバージョンだと起動できないとこがあるので、その時は以下のサイトを参照
>参考:[macOS MontereyでXcode 14を起動する、またはmacOS VenturaでXcode 13以下を起動する](https://blog.kishikawakatsumi.com/entry/2022/06/09/093538
)

5.以下のコマンドをターミナルで入力する。(使用するXcodeの指定)
```
sudo xcode-select --switch /Applications/Xcode.app
```
6.以下のコマンドで使用しているXcodeのバージョンの確認
```
    - xcodebuild -version
```
### Xcodeの起動
+ Select the platformsでiosを選択後、DownloadとInstall

# リモートビルド設定(Mac)
1.システム設定→一般→共有→リモートログインのiマークを押す
2.リモートログインのトグルをオン
3.「このコンピュータにリモートからログインするには、”ssh ユーザー名@アドレス”と入力してください」と記載してある所からユーザー名とアドレスをメモする。
4.アクセスを許可を全てのユーザに変更

# プロジェクトの作成と下準備(Windows)
1.WindowsにVisual Studio 2022をインストールする
+ オプション設定がいくつか必要
    + 以下のサイトを参照
    >参考:[UE5のソースコードビルドのやり方](https://zenn.dev/pate_techmemo/scraps/cd1f4970ca04b2)

2.WindowsにiTunesをインストールする
- Microsoftではなく、公式サイトからインストールがおすすめ
    - 以下のサイトを参照
    >参考:[iPod Wave / iTunesの使い方 / iTunesをパソコンにダウンロードする](https://www.ipodwave.com/ipod/downloaditunes.htm)

3.[**C++**]のプロジェクトをUnrealEngineで作成

# 証明書(p.12ファイル)とプロビジョニングプロファイルの設定(Windows)

1.UnrealEngineを開き、編集>プロジェクト設定>プラットフォーム>iOSへ移動する
2. Macで作成したプロビジョニングプロファイルと証明書(.p12ファイル)をインポート
+ .p12ファイルのインポート時には設定したパスワードを入力

3.新しいファイルと入れ替える時は古いファイルを削除し、追加する
- 証明書削除方法
    - windowsキーとRキーを押し、certmgr.mscと入力→個人→証明書から[iphone Developer:名前ファイル]を削除
- プロビジョニングプロファイル削除方法
    - ユーザー>ユーザー名>AppData>Local>AppleComputer>MobileDevice>ProvisioningProfiles>.mobileprovisionを削除

[Bundle Information]＞[Bundle Identifier]にはApple Developer Programのサイトで登録した Bundle ID を入力(*のところには自由に入力可能)

# リモートビルド設定(Windows)
1. UnrealEngineを開き、編集>プロジェクト設定>プラットフォーム>iOSへ移動する
2. 下の方にスクロールすると[ビルド]->[リモートビルドオプション]という閉じたセクションがあるので、これを開く。
    + [リモートサーバー名]にはリモートビルド設定(Mac)でメモしたアドレスを入力
    + [RSync ユーザー名] にはリモートビルド設定(Mac)でメモしたユーザー名を入力
3. [新規SSHキーを生成] ボタンを押し、何かのキーを押し続けるとパスワードを要求される
    + パスワードはMacのパスワードと同じ
4. 正常に作成されれば、鍵ファイルのファイルパスが自動的に入力される。（初回は反映までに数十秒かかることがある）

# 実機にデプロイ(Windows& Mac)
1. UnrealEngineを開き、プラットフォーム>IOS>プロジェクトをパッケージ化
2. できたipaファイルをMacへ持っていく
3. [AppleConfigurator](https://support.apple.com/ja-jp/apple-configurator)をmacにインポートし、起動
4. iosデバイスをMacに繋げるとデバイスが表示されるので、ipaファイルをドラッグ&ドロップ
5. iosデバイスでアプリを起動する
    + 初回はiosデバイスの方で設定>プライバシーとセキュリティ>ディベロッパーモードをオンにする必要あり

# 最後に
IOS向けの環境構築で詰まってしまって諦めました😭という人をこの記事で救うことができれば嬉しいです。