# iOS ゲームを iOS デバイスでデプロイするには、Xamarin がインストールされた Mac に接続するためのデバイスが必要です。 1. PC と Mac に Xamarin がインストールされていることを確認します。Xamarin のインストールとセットアップの手順については、Xamarin のドキュメントを参照してください。 * [Visual Studio 2019 での Xamarin のインストール](https://docs.microsoft.com/ja-jp/xamarin/get-started/installation/windows) * [Xamarin.iOS 開発のために Mac とペアリングする](https://docs.microsoft.com/ja-jp/xamarin/ios/get-started/installation/windows/connecting-to-mac/) 2. iOS がプロビジョニングされていることを確認します。手順については、Xamarin ドキュメントの [Xamarin.iOS のデバイス プロビジョニング](https://docs.microsoft.com/ja-jp/xamarin/ios/get-started/installation/device-provisioning/) を参照してください。 3. iOS プラットフォームが自身の Stride プロジェクトに追加されていることを確認します。追加するには、Game Studio でソリューションを右クリックし、[**Update package**] > [**Update platforms**] を選択して **iOS** をオンにします。 ![Add iOS](media/add-ios-platform.png) Game Studio でプラットフォームを追加する手順の詳細については、[プラットフォームの追加と削除](add-or-remove-a-platform.md) を参照してください。 4. Visual Studio で、自身のソリューションを開きます。 >[!Tip] > Game Studio から Visual Studio でプロジェクトを開くには、Game Studio のツールバーにある ![Open in IDE](../scripts/media/launch-your-game-ide-icon.png) (**Open in IDE**) をクリックします。 5. Visual Studio のツールバーにある ![Xamarin button](media/xamarin-button.png) をクリックします。 ![Connect to Xamarin](media/xamarin-button-in-toolbar.png) すると、**Xamarin Agent** が開きます。 ![Xamarin agent](media/xamarin-agent.png) 6. Xamarin 経由で Mac に接続します。手順については、Xamarin ドキュメントの [Xamarin.iOS for Visual Studio の概要](https://docs.microsoft.com/ja-jp/xamarin/ios/get-started/installation/windows/introduction-to-xamarin-ios-for-visual-studio) を参照してください。 7. **ソリューションエクスプローラー** で、プロジェクトを右クリックし、[**スタートアップ プロジェクトに設定**] を選択します。 ![Set as startup](media/set-ios-as-startup-project.png) 8. **ソリューションエクスプローラー** のメニューから [**iPhone**] を選択して、物理 iOS デバイス(iPad を含む)でビルドするか、あるいは [**iPhoneSimulator**] を選択してシミュレーター用にビルドします。シミュレーターはあなたのマシン上で iOS デバイスをエミュレートしますが、難点がいくつかあります(後述)。 ![Solution platform](media/solution-platform.png) 9. Visual Studio のツールバーから、ビルドしたい iOS デバイスを選択します。 ![Select device](media/select-ios-device-dropdown.png) 10. **ソリューションエクスプローラー** から、`info.plist` を開きます。 ![Select info file](media/info-plist.png) 11. リリースビルドを作成したい場合には、[**bundle identifier**] を設定します。これは、あなたのアプリケーション用の一意な ID です。 ![Select bundle ID](media/bundle-identifier.png) 12. iPad にもデプロイしたい場合には、[**Targeted device family**] の下の ![Add device icon](media/add-device-icon.png) をクリックします。 ![Added iPad](media/ipad-device-added.png) ## iOS デバイスでのビルドの高速化 iOS デバイスでのビルドには時間がかかります。以下がその理由です。 * Mac では、さまざまなデバイスに対応したコードを事前に作成する必要があります(AOT)。 * Apple のサンドボックスシステムでは、パッケージを段階的に更新することができないため、Mac では変更のたびにアプリケーションをデバイスにまるごとデプロイし直す必要があります。 より高速にコードをコンパイルするには、ソリューションエクスプローラーで iOS プロジェクトを右クリックし、[**プロパティ**] を選択します。 ![Project properties](media/ios-project-properties.png) * [**Linker Behavior**] > [**Don't link**] を選択します。 * [**Supported Architectures**] から、デバッグデバイスのアーキテクチャーだけを選択します。 * [**Strip native debugging symbols**] を無効にします。 * [**incremental builds**] を有効にします(ある実行から別の実行へと変化できるコードは、AOT だけです)。 詳細については、Xamarin ドキュメントの [iOS ビルドのしくみ](https://docs.microsoft.com/ja-jp/xamarin/ios/deploy-test/ios-build-mechanics?tabs=windows) を参照してください。プロファイリングについては、Xamarinドキュメントの [Instruments を使用した Xamarin.iOS アプリケーションのプロファイリング]( https://docs.microsoft.com/ja-jp/xamarin/ios/deploy-test/using-instruments-to-detect-native-leaks-using-markheap) を参照してください。 毎回の再デプロイを高速化するために、デバッグパッケージをできるだけ小さくします。 * Game Studio で、プロジェクトに含まれる [テクスチャー](../graphics/textures/index.md)の**サイズ** を削減します。 * 不要なアセットバンドルを削除します。 * シーンを同時にロードするのではなく、1 つずつテストします。 * 実デバイスの代わりに、**iPhoneシミュレーター**でアプリケーションをデバッグすることができます。ただし、シミュレーター上では実行速度が遅く、また、レンダリング時にいくつかのアーティファクトが発生するため、リアルタイムグラフィックスのデバッグに使用することはお勧めできません。 ## iOS でシェーダーをコンパイルする iPhone デバイスで Stride シェーダーを OpenGL シェーダーに変換するのには時間がかかるので、リモートで(つまり Game Studio で)変換することをお勧めします。 おすすめのワークフローは次の通りです。 1. Windows でアプリを実行します。シェーダーのパーミュテーション(不要な機能を生成しないようにしたバージョン)が作成されます。 ![New effects](../graphics/effects-and-shaders/media/new-effects-to-import.png) 2. Game Studio で新しいシェーダーをインポートします。これにより、エフェクトログが生成されます。 ![Effect log](../graphics/effects-and-shaders/media/effect-log.png) 3. iOS 上で、ゲームを保存し、実行します。 理想的には、すべてのシェーダーのパーミュテーションをリモートで作成するので、デバイス上で変換する必要はありません。しかし、サポートされている画面解像度などの違いにより、新しいパーミュテーションが発生する可能性があります。iOS でシェーダーをリモートでコンパイルする方法などの詳細は、[シェーダーのコンパイル](../graphics/effects-and-shaders/compile-shaders.md)を参照してください。 ## 関連項目 * [Xamarin.iOS(Xamarin ドキュメント)](https://docs.microsoft.com/ja-jp/xamarin/ios/) * [シェーダーのコンパイル](../graphics/effects-and-shaders/compile-shaders.md)