---
title: Mono スクリプティングバックエンド終了
product: Unity Editor
version: '6000.0'
latest_version: '7000.0'
status: This page documents version 6000.0. The latest version is 7000.0.
canonical: https://docs.unity.com/ja-jp/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/backends/mono
latest_url: https://docs.unity.com/ja-jp/engine/7000.0/manual/scripting/compilation-and-code-reload/script-compilation/backends/mono.md
generated_at: 2026-11-14T04:52:27.928Z
locale: ja-jp
---

# Mono スクリプティングバックエンド終了

> Mono は、C# コードをジャストインタイムで(JIT)コンパイルするためのマネージ環境を提供する、安定した成熟した .NET ランタイムです。

Mono スクリプトバックエンドは、オープンソース [Mono プロジェクト](https://www.mono-project.com/)の Unity の[フォーク](https://github.com/Unity-Technologies/mono)です。Mono は、互換性のある性のあるプラットフォームで Unity のエディターとプレイヤーを動かす、成熟したクロスプラットフォームの .NET ランタイムです。高速なイテレーションと優れたツールを提供しますが、ランタイム パフォーマンスは [IL2CPP](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/backends/il2cpp.md) よりも低く、最新の .NET 機能には対応していません。

Mono は JIT （ジャストインタイム） コンパイルを使用して、ランタイムに C# コードをマシンコードに変換します。Monoは、マネージ オブジェクトのライフサイクル管理、コード リロードの処理、[Boehm-Demers-Weiser](https://www.hboehm.info/gc/)ガベージ コレクターによるスコープ外のオブジェクトの自動ガベージコレクションを実行します。ガベージコレクターの動作はある程度設定できます。詳細については、[ガベージコレクションモード](/engine/6000.0/manual/analysis/performance-memory/managed-memory/incremental-garbage-collection.md)を参照してください。

Mono はマネージコードのデバッグをサポートします。詳細は、「 [Unity での C#](/engine/6000.0/manual/scripting/debugging-and-diagnostics/managed-code-debugging.md) コードのデバッグ 」を参照してください。

## Mono を使用したプロジェクトの構築##building-a-project-with-mono

ビルドプロセスを開始するには、**ビルドプロファイル**ウィンドウ (メニュー:**ファイル** > **ビルドプロファイル**) を選択し、**ビルド** を選択します。

Unity がアプリケーションのビルドに使用するスクリプティングバック終了は、以下の 2 つの方法のいずれかで変更できます。

* エディターの Editor メニューから。**プレイヤー設定**メニューからスクリプトバックエンドを変更するには、以下の手順を実行します。

  1. **編集**> Editor に移動します。
  2. **プレイヤー設定**ボタンをクリックして、[**Inspector**](/engine/6000.0/manual/unity-editor/editor-windows-views-reference/using-the-inspector.md) で現在のプラットフォームの[**プレイヤー**](/engine/6000.0/manual/unity-editor/editor-settings-reference/comp-manager-group/class-player-settings.md)設定を開きます。
  3. **Other Settings** サブメニューの下の **設定**セクションの見出しに操作します。
  4. Editor ドロップダウン メニューをクリックし、**Mono** を選択します。

  **ビルドプロファイル**ウィンドウから**プレイヤー設定**メニューを開くこともできます。**ファイル**>**ビルドプロファイル**に移動し、**プレイヤー設定**タブをクリックします。

* エディタースクリプティング API を使用。[`PlayerSettings.SetScriptingBackend`](/engine/6000.0/script-reference/unityeditor/playersettings/setscriptingbackend.md) プロパティを使用して、Unity が使用するスクリプティング バックエンドの終了を変更します。


**The Configuration section of the Player settings:**
![](/api/media?file=/engine/6000.0/media/images/backend-mono.png)

Mono と IL2CPP のスクリプティングバックエンドの両方に、ターゲットとするプラットフォームごとに新しいビルドが必要です。例えば、Android と iOS の両方のプラットフォームをサポートするには、アプリケーションを 2 回ビルドし、Android 用と iOS 用の 2 つのバイナリファイルを作成する必要があります。

## ドメインリロード##domain-reload

Unity エディターは Mono を埋め込むため、C# コードは Mono によってマネージされ、エディターの再生モードで実行する際に Mono の制約を受けます。これのキーポイントは、再生モードの開始と終了、またはスクリプトの再コンパイル[が AppDomain](https://learn.microsoft.com/en-us/dotnet/api/system.appdomain?view=net-9.0) の再ロードをトリガーし、静的ステートをリセットすることです。[Unity が再生モード](/engine/6000.0/manual/scripting/compilation-and-code-reload/code-reloading-editor/configurable-enter-play-mode.md)に入り、ドメインの再ロードをオフにしてイテレーションをスピードアップする方法を設定できますが、静的ステートのリセットはコードで処理する必要があります。詳細については、「ドメイン リロードがディセーブルにされた[再生モード開始](/engine/6000.0/manual/scripting/compilation-and-code-reload/code-reloading-editor/domain-reloading.md)」を参照してください。

## Mono ビルドの最適化##optimizing-mono-builds

Mono と IL2CPP は同じ基本の .NET ライブラリするため、多くのパフォーマンスの問題とベストプラクティスが両方に適用されます。ただし、Mono のコンテキストでは以下の考慮します。

* Mono の JIT コンパイルは、IL2CPP の AOT コンパイルと比較して、大規模なコードベースのランタイムパフォーマンスと起動時間が低くなる可能性があります。GC および JIT のホットスポットを特定するには、必ず [Unity プロファイラー](/engine/6000.0/manual/analysis/profiler.md)を使用します。[Project Auditor](/engine/6000.0/manual/project-auditor.md) ツールは、一般的なパフォーマンス問題の特定と修正にも役立ちます。詳細については、「 [最適化](/engine/6000.0/manual/analysis.md) 」を参照してください。

* ランタイムに大量のアロケーションを発生させるようなコーディング方法によっては、ガベージコレクターのオーバーヘッドが増加し、パフォーマンスが低下する可能性があります。Unity でのパフォーマンスマネージコードの記述に関するガイダンスについては、「 [マネージメモリのコード](/engine/6000.0/manual/scripting/optimization/performance-optimizing-code-managed-memory.md)の最適化 」を参照してください。ガベージコレクターのオーバーヘッドの追跡と削減については、[マネージメモリ](/engine/6000.0/manual/analysis/performance-memory/managed-memory.md) を参照してください。

* Unity APIは一般にスレッドセーフではありません。つまり、Unityのメイン スレッドから呼び出す必要があります。Unity API での .NET `Task` の使用は避けてください。

  * 本質的に非同期で長時間実行される操作を扱う場合、Unity は .NET `Task` のより効率的な代替として `Awaitable` クラスを提供します。詳細は、「 Awaitable クラスを使用した[非同期プログラミング](/engine/6000.0/manual/scripting/optimization/async-await-support.md) 」を参照してください。
  * 生存期間は短いが計算負荷が高い並列作業のために、Unityは[Burstコンパイル](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/burst.md)可能な[ジョブ システム](/engine/6000.0/manual/scripting/optimization/job-system.md)を提供します。詳細については、「 ジョブシステムでの[マルチスレッドコードの記述](/engine/6000.0/manual/scripting/optimization/job-system.md) 」を参照してください。

* Mono の[`DateTime`](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-9.0)、[`TimeZoneInfo`](https://learn.microsoft.com/en-us/dotnet/api/system.timezoneinfo?view=net-9.0)、および[`CultureInfo`](https://learn.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo?view=net-9.0)の実装は Windows .NET 動作と異なる場合があります。グローバル化された文化固有のコードをターゲット プラットフォームでテストするようにしてください。

## Burstによるランタイムパフォーマンスの最適化##optimizing-runtime-performance-with-burst

適切なプロジェクトでは、Burst コンパイラーを Mono とともに使用して、コードの互換性のある部分を高度に最適化されたマシンコードにコンパイルすることで、プロジェクトのランタイムパフォーマンスを向上させることができます。詳細は、[Burst コンパイル](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/burst.md) を参照してください。

## 追加リソース##additional-resources

* [Unity .NET 機能](/engine/6000.0/manual/scripting/environment-and-tools/overview-of-dot-net-in-unity.md)
* [ビルドプロファイル](/engine/6000.0/manual/building-and-publishing/build-settings.md)
