プロジェクトのスケーラビリティ プロファイルおよびデバイス プロファイルを設定する
Unreal Engine では、プロジェクトのパフォーマンスおよびビジュアル品質に影響する、幅広い スケーラビリティ 設定を提供しています。通常、エンジンのデフォルト設定でほとんどのニーズに対応できますが、これらの設定を変更することで、パフォーマンスや品質を向上させることができます。プロジェクトは複数のプラットフォームで起動できるため、スケーラビリティ設定ではプラットフォームごとに異なる値が必要である可能性があります。PC などのプラットフォームの動作は、幅広い種類のハードウェアに対応できるようにオープンであるため、個々のユーザーが特定のシステムに合うようにこれらの設定を調整する必要がある場合があります。
スケーラビリティおよびデバイス設定システム
スケーラビリティの目標を達成するために、複数のエンジン システムを併用して、あらゆるプラットフォームおよびユーザーで機能するプロジェクト プロファイル設定を作成することができます。以下では、このプロセスに関係するさまざまなエンジン システムについて説明します。
コンソール変数
ほとんどのパフォーマンス設定および品質設定は、 コンソール変数 (CVars) としてエンジンで実装されています。これらは、数値、文字列、または列挙値を格納する名前付き変数です。コンソール変数のデフォルト設定はソース コードで指定されており、ゲーム固有のコンフィグ ファイルや後述するその他のシステムでオーバーライドすることができます。ほとんどの変数は、ゲームの実行中やコマンド ラインから設定することができるため、変数を値に確定する前に品質や性能の設定をプレビューすることができます。ツールバーをクリックし、[Edit (編集)] > [Project Settings (プロジェクト設定)] > [Engine (エンジン)] > [Data Driven Cvar (データ ドリブン CVars)] > [CVars Array (CVars 配列)] をクリックして、 追加(+) ボタンをクリックすると、プロジェクトにデータ ドリブン CVars を追加することができます。

この画像は、[Project Settings] にある [Data Driven CVars Array] です。
デバイス プロファイル
エンジンでは デバイス プロファイル を使用して、プロジェクトを実行できるさまざまなタイプの物理デバイスの階層が定義されます。これらの設定は、ツールバーに移動して、[Tools (ツール)] >[Instrumentation (インストルメンテーション)] > [Platforms (プラットフォーム)] > [Device Profiles (デバイス プロファイル)] にあります。

例として、デフォルトのエンジン設定には、すべての Android デバイスに使用される基本的な 「Android」デバイス プロファイルがあります。

[Device Profiles] 設定では、既存のデバイス プロファイル (1) にアクセスできます。また、CVars 列 (2) では独自のコンソール変数を編集できます。
基本プロファイルの下には、「Android_High」などの複数のパフォーマンス バケットがあり、そのプロファイルの下には特定の CPU/GPU タイプのプロファイルがあります。プロジェクトの起動時に、エンジンは カスタマイズ可能なプロセス を使用して、どの特定のデバイス プロファイルを使用するかを決定し、そのプロファイルに関連付けられている設定を適用します。まず、「Android」などの最上位のプロファイルが適用され、その下にあるより具体的なプロファイルで設定された値でオーバーライドされます。
スケーラビリティ グループ
スケーラビリティ システム を使用すると、ランタイム時に選択可能なパフォーマンス関連の一連の設定を定義できます。たとえば、エンジンのデフォルトの PostProcessQuality グループでは、モーション ブラー と ブルーム の設定を定義し、[Low] から [Epic] までの 4 つのレベルと、最高品質の [Cinematic] レベルに分割します。プロジェクトまたはユーザーが特定のスケーラビリティ グループの品質レベルを選択すると、その品質レベルのコンソール変数がすべて適用されます。

スケーラビリティ グループは、デバイス プロファイルの前にコンソール変数の設定を適用します。特定のデバイス プロファイルで定義された設定は、ユーザーが選択したスケーラビリティ グループの設定をオーバーライドします。つまり、個々の設定をオーバーライドする前に、デバイス プロファイルで、sg.PostProcessQuality
などの基本のスケーラビリティ グループ コンソール変数を指定できます。
後述する一般プラットフォーム設定オーバーライド システムを使用することで、プラットフォーム固有のスケーラビリティ グループ設定を作成することができます。ただし、特定のデバイス プロファイルに対して異なるスケーラビリティ グループを設定することはできません。
通常、PC などのオープン プラットフォームでは、スケーラビリティ グループが役立ちます。これは、スケーラビリティ グループによって、ユーザーが幅広い PC ハードウェア コンポーネントを活用できるためです。
ゲーム ユーザーの設定
UGameUserSettings
クラスは、個々のユーザーがオプション UI メニューから変更できるすべての設定を格納します。ユーザーが指定した設定は、プロジェクトを実行する特定のデバイス上の「GameUserSettings.ini」ファイルに格納されます。ファイル アクセスを制限している一部のプラットフォームでは、ゲーム ユーザー設定を適切に保存およびロードするために、プラットフォーム固有のオプションを有効にする必要があります。デフォルトのエンジン クラスは、ウィンドウ解像度などの具体的な設定に加えて、スケーラビリティ グループごとにユーザーが選択した品質を格納します。
多くのプロジェクトでは、ゲーム固有のサブクラスを使用する必要がある場合があります。このサブクラスを使用するためには、ネイティブのサブクラスを作成して、GameUserSettings のクラス名を変更します。これを実行するには、「DefaultEngine.ini
」ファイルの [/Script/Engine.Engine] セクションに移動するか、[Edit] > [Project Settings] > [Engine] > [General Settings (基本設定)] > [Default Classes (デフォルト クラス)] > [Advanced (高度)] > [Game User Settings Class (ゲーム ユーザー設定クラス)] に移動します。

ゲーム固有の設定クラスでは、新しい設定を追加したり、ランタイム時に設定を適用する方法を変更することができます。ゲームの「DefaultGameUserSettings.ini
」ファイルでは、特定のゲームのデフォルト値を設定することができます。これは新規のすべてのユーザーで使用されます。ゲーム ユーザー設定は、ブループリントに公開され、ブループリント ベースの設定 UI またはソース コードから呼び出すことができる役立つ関数を含んでいます。
たとえば、RunHardwareBenchmark
関数は、ローカル マシンの CPU および GPU の相対的なスピードを検出する自動ベンチマークを実行し、PerfIndexThresholds
から始まる「Scalability.ini
」の設定を使用して、特定のマシンに最適なスケーラビリティ グループの設定を推定します。その後、ApplyHardwareBenchmarkResults
を呼び出して、設定を適用して保存することができます。
テクスチャ グループ設定
エディタでテクスチャを作成すると、「World」、「UI」など、さまざまなグループに割り当てることができます。これらのグループは、ランタイム時に適用される テクスチャ設定 を指定します。各グループには、最大サイズ、ミップ レベル、テクスチャ グループ設定のさまざまな設定があり、特定のデバイス プロファイル用にカスタマイズすることができます。パッケージ化では、これらの設定が考慮されます。モバイル ビルド向けには低い最大解像度を設定できます。そのインストール パッケージには、該当するデバイスでストリーミング可能なミップ レベルのみが含まれます。テクスチャ グループ設定は、ランタイム時に変更できないため、コンソール変数を直接使用することはありません。
優先度を設定する
設定が適用される前に、優先度がコンフィグ ファイルからロードされます。主要な コンフィギュレーション ファイル階層 を使用して、適用する設定を決定します。この優先度は、ランタイム時に変更できないコンフィグ ファイルからロードされるすべての設定で重要です。コンソール変数システムを使用しており、ランタイム時に変更可能な設定は、次の順序で適用され、より大きい番号の設定がより低い番号の設定をオーバーライドします。この順序は EConsoleVariableFlags
列挙型で定義されます。
優先順 | フラグ | 説明 | ||
---|---|---|---|---|
1 | SetByConstructor | コンソール変数のコンストラクタで設定されるデフォルト値。 | ||
2 | SetByScalability | スケーラビリティ グループの品質レベルで設定された値。 | ||
3 | SetByGameSetting | エンジンの GameUserSettings で設定される低優先度の値。 | ||
4 | SetByProjectSetting | [/Script/Engine.RendererSettings] などのセクションから「DefaultEngine.ini」ファイルの ProjectSettings を設定します。 |
||
5 | SetBySystemSettingsIni | 「DefaultEngine.ini 」の [ConsoleVariables] セクションおよび [SystemSettings] セクション。 |
||
6 | SetByDeviceProfile | デバイス プロファイルから、より具体的なプロファイルが汎用的なプロファイルをオーバーライドします。 | ||
7 | SetByGameOverride | ゲームの GameUserSettings サブクラスによって設定される優先度の高い値。これはデバイス プロファイルをオーバーライドする必要のある設定に使用する必要があります。 | ||
8 | SetByConsoleVariablesIni | エンジンの「ConsoleVariables.ini 」ファイル。主に開発中のテストに使用されます。 |
||
9 | SetByCommandline | いくつかのコマンド ライン オプションで使用されます。 | ||
10 | SetByCode | 各種デバッグ ツールで使用されます。 | ||
11 | SetByConsole | 実行中のゲームのコンソールに「NameOfCVar Value」と入力することで設定される、最も高い優先度。 |

例として、スケーラビリティ グループ システムから始まるエンジンのオーバーライド プロセスをこの図に示します。まず、エンジンがブルームのコンソール変数 (CVar) を格納しているエンジン提供の「BaseScalability.ini
」ファイルの [PostProcessing@2] カテゴリ (UI では High と表示されている) を確認します。
次に、エンジンはこれらの設定のいずれかが、ゲーム固有の「DefaultScalability.ini
」ファイルまたは「WindowsScalability.ini
」などのプラットフォーム固有のファイル内の [PostProcessing@2] カテゴリによってオーバーライドされているかどうかを確認します。
次に、エンジンは「BaseEngine.ini file
」で始まる [SystemSettings] カテゴリで指定された CVars を確認します。DefaultEngine.ini
やプラットフォーム固有の ini でオーバーライドされた設定がこれまでと同様に適用されます。
呼び出しの順序は、デバイス プロファイルシステムまで継続されます。まず、 デバイス プロファイル一致ルール が実行され、適用する必要のある最下位のデバイス プロファイル (この場合、Android Galaxy) が決定されます。
次に、デバイスに一致する最上位のデバイス プロファイル (Android) を最初に適用して、ルールの適用を開始します。これには、まずエンジン提供の「BaseDeviceProfiles.ini
」の CVarsをチェックして、次にゲーム固有の「DefaultDeviceProfiles.ini
」で CVarsがオーバーライドされているかどうかをチェックします。
このプロセスは引き続き階層を下がっていき、AndroidMid と Android Galaxy のデバイス プロファイル設定を、前述の Android 呼び出しと同様のプロセスで確認します。すべてのデバイス プロファイルが適用されると、引き続き、上記の優先度がより高いレベルでオーバーライドを適用します。
ゲーム固有のオーバーライドを設定する
ゲームの特定の設定を変更する必要がある場合、コンフィギュレーション ファイルを設定する必要があります。設定はいくつかの異なる場所に格納されているため、これは、正しい設定を見つけることから開始する複数のステップで構成されるプロセスになります。
以下の例では、「bloom quality」などの一般的な概念から始めて、r.BloomQuality
などの特定の設定を見つけるまでのプロセスを示しています。この設定は、.ini
ファイル、エディタ内のコンソール変数リスト、またはソース コードのいずれかで見つけることができます。
エンジンのコンフィギュレーション:BaseScalability.ini
まず、「Engine/Config
」フォルダに移動して、「BaseScalability.ini
」ファイルをクリックします。ファイルを開いたら、PostProcessQuality グループ セクションを検索して、r.BloomQuality
変数を見つけます。
[PostProcessQuality@0]
r.MotionBlurQuality=0
r.MotionBlur.HalfResGather=1
r.AmbientOcclusionMipLevelFactor=1.0
r.AmbientOcclusionMaxQuality=0
r.AmbientOcclusionLevels=0
r.AmbientOcclusionRadiusScale=1.2
r.DepthOfFieldQuality=0
r.RenderTargetPoolMin=300
r.LensFlareQuality=0
r.SceneColorFringeQuality=0
r.EyeAdaptationQuality=2
r.BloomQuality=4
デバイス プロファイル:コンソール変数
デバイス プロファイル エディタを開くには、[Tools]->[Platforms]->[Device Profiles] をクリックします。エディタで、Windows プロファイルを特定して、CVars 列で Windows の隣にある 編集 アイコンをクリックします。

これにより、デバイス プロファイルの設定可能なすべてのコンソール変数のカテゴリ別リストが表示されたウィンドウが開きます。

上の画像にある Bloom Quality 変数は、[Rendering (レンダリング)] カテゴリにリストされています。
エディタのコマンド ライン
実行中のゲームまたはエディタ ウィンドウを開いて、チルダ キー (~) を押してフル コンソールを開き、Cmd ライン テキスト フィールドで「Bloom」と入力します。autocomplete セクションに、r.BloomQuality
など、「Bloom」を含み、ランタイム時に設定可能なすべてのコンソール変数がリストされます。
手動で検索する
エンジン ディレクトリ内のテキスト検索をサポートする Visual Studio などのコード エディタを使用して、エンジンのディレクトリ内のすべての .ini
ファイルから「bloom」などの用語を検索することができます。または、Engine API コード ベースで特定の語句を検索することもできます。指定したコンソール変数またはコンフィグ設定が見つかったら、その設定のすべてのエンジンの .ini
ファイルを検索して、その設定が設定されている箇所を把握して、ゲームまたはプラットフォーム固有の設定を適用できるようにすることをお勧めします。
コンフィグ ファイルの設定をオーバーライドする
コンソール変数の設定をすべてのプラットフォームとスケーラビリティ グループで常に同一にする必要がある場合は、「DefaultEngine.ini
」ファイルの [ConsoleVariables] セクションでこれを実行できます。例として、以下を「DefaultEngine.ini
」ファイルに追加することで、あらゆるケースでブルーム品質をオーバーライドできます。
[ConsoleVariables]
r.BloomQuality=1
必要な設定が「BaseScalability.ini
」または他のコンフィグ ファイルにある場合、プロジェクトで新しいコンフィグ ファイルを作成して、その設定をオーバーライドすることができます。このためには、プロジェクトの「config」ディレクトリにあるエンジンと同じ名前のファイルを作成または編集します。ただし、Default を置き換えるために Base を使用します。エンジンで変数と同じ名前のセクションを追加または見つけることができます。たとえば、低品質のポスト プロセス スケーラビリティ グループのブルーム品質を変更するには、このテキストを「DefaultScalability.ini
」ファイルに追加します。
[PostProcessQuality@0]
r.BloomQuality=1
エンジンが「WindowsEngine.ini」などのプラットフォーム固有のコンフィグ ファイルでコンソール変数を設定すると、同じプラットフォーム固有のコンフィグ ファイルを使用して、この設定を特定のプラットフォーム用にオーバーライドすることができます。さらに、デバイス プロファイルやコンソール変数システムを使用しないプラットフォーム固有の設定を変更することができます。このためには、エンジン内の同じコンフィグに一致するプラットフォーム固有のコンフィグ ファイルを新規に作成します。たとえば、「Engine/Config/Windows/WindowsEngine.ini
」ファイルをオーバーライドするには、新しい「ProjectName/Config/Windows/WindowsEngine.ini
」ファイルを作成し、上記と同じ種類の変更を行います。
コンソールなど、エンジンの最上位の「Platforms」ディレクトリを使用するプラットフォームでは、プロジェクト フォルダに並列ディレクトリを作成することをお勧めします。正しいディレクトリで「PlatformNameScalability.ini
」ファイルを作成することで、Android などの特定のプラットフォーム用のスケーラビリティ グループをオーバーライドする機能が提供されます。
デバイス プロファイルを設定する
デバイス固有の違いに対応するためには、プロジェクト固有のデバイス プロファイル階層を設定する必要があります。これを最も簡単に実行するには、[Tools] > [Platforms] > [Device Profiles] にある、デバイス プロファイル エディタを使用します。このエディタを開いたら、値を設定したいデバイス プロファイルの横にある 編集 アイコンをクリックします。

変更したいデバイスをすべて含む最上位のプロファイルを編集することをお勧めします。次に、コンソール変数リストを編集して、変更したいプロファイルの設定を追加または削除します。

この画面では、変更は保存されません。エディタの他の設定画面とは異なり、エディタ上部のボタンを使用して「DefaultDeviceProfiles.ini
」ファイルを開き、編集が完了したら、[Save as Defaults (デフォルトとして保存)] をクリックして、プロジェクトの「DefaultDeviceProfiles.ini
」ファイルに変更を書き出す必要があります。エディタがソース コントロールに接続されている場合、そのファイルをソース コントロールにチェックアウトまたは追加するために、同じエリアをクリックする必要がある場合があります。このエディタによる保存では変更されたプロファイルが書き出されるのみであるため、結果として得られる .ini ファイルを読みやすくするために手動で修正する必要がある場合があります。
特定のプラットフォーム用の Texture LODGroups 設定は [Device Profiles] ウィンドウで設定できます。これには、TextureLODGroups 列の 編集 アイコンをクリックします。

プロジェクトを実行するプラットフォームがたくさんある場合、「DefaultDeviceProfiles.ini
」に [/Script/Engine.TextureLODSettings] セクションを追加して、エンジンのデフォルトをオーバーライドする方が簡単にできる可能性があります。また、[DeviceProfiles] セクションに新しい DeviceProfileNameAndTypes
エントリを追加することで、デバイス プロファイルを追加することができます。この方法を実行すると、設定は意図したとおりに動作します。ただし、前述の表に記載されている設定の優先度により、優先度の高いエンジンの設定が、優先度の低いプロジェクト固有の設定と競合する場合があります。
たとえば、エンジンが「DefaultDeviceProfiles.ini
」で変数を設定しているものの、スケーラビリティ グループでその変数を設定したい場合、エンジンのデバイス プロファイル設定を元に戻す必要があります。
既存のエンジン設定を元に戻す
エンジンのデフォルト値が、希望の設定と競合するため、元に戻す必要があることがあります。通常、この動作は、設定優先度リストで設定を他のレベルに移動したり、スケーラビリティ グループ間で設定を移動したりする必要がある場合に必要になります。たとえば、Bloom Quality を PostProcess Scalability バケットから Effects バケットに移動させたいとします。このためには、「DefaultScalability.ini
」ファイルを開いて、次の例のような行を追加します。
[PostProcessQuality@0]
-r.BloomQuality=4
[PostProcessQuality@1]
-r.BloomQuality=4
[PostProcessQuality@2]
-r.BloomQuality=5
[PostProcessQuality@3]
-r.BloomQuality=5
[PostProcessQuality@Cine]
-r.BloomQuality=5
[EffectsQuality@0]
r.BloomQuality=2
[EffectsQuality@1]
r.BloomQuality=2
[EffectsQuality@2]
r.BloomQuality=2
[EffectsQuality@3]
r.BloomQuality=5
[EffectsQuality@Cine]
r.BloomQuality=5
これは高度なコンフィギュレーション システムの構文を使用しています。ここでは、先頭が「-」の行を使用して、特定のカテゴリにおけるエンジンの変更を取り消し (DefaultScalability の行は、-以外の BaseScalability の行と正確に一致する必要がある)、その変更を新しいカテゴリに移動させています。
「BaseDeviceProfiles.ini
」ファイルにある CVars 配列などの配列をオーバーライドするには、2 つの異なる方法を使用して実行できます。エディタの [Device Profile (デバイス プロファイル)] ウィンドウを使用して設定を保存すると、配列の個別のデフォルト要素をそれぞれ取り消す複数の -CVars=
行を含む DefaultDeviceProfile が作成されます。
エンジンによって設定された配列全体を消去して置き換える必要がある場合は、次の行を使用することができます。
!Cvars=ClearArray
次に、次の行を使用して新しい要素を追加します。
+CVars
さらに、基本配列が @Array=Key
構文を使用している場合、その配列はマップのように処理され、そのキーを使用して行をオーバーライドすることができます。
例として、以下の行を「DefaultDeviceProfiles.ini
」ファイルに追加すると、World Normal Map テクスチャを自動的に 2048x2048 の寸法に縮小するように設定できます (寸法が 2048x2048 以上の場合)。
「BaseDeviceProfiles.ini
」内にある @TextureLODGroups=Group
行は、前置 (-
または !
) を使用して古い値を削除する必要がないことを意味します。
[/Script/Engine.TextureLODSettings]
+TextureLODGroups=(Group=TEXTUREGROUP_WorldNormalMap,MinLODSize=1,MaxLODSize=2048,LODBias=0,MinMagFilter=aniso,MipFilter=point,MipGenSettings=TMGS_SimpleAverage)
Lyra のサンプル
Lyra ゲーム サンプルは、特定のプロジェクトに対して、これらのさまざまな機能を組み合わせる方法のサンプルとして役立ちます。以下のセクションでは、さまざまなコンポーネントを組み合わせる方法について説明します。
スケーラビリティ グループ
「Lyra/Config/DefaultScalability.ini
」ファイルは、手動で作成されており、「Engine/Config
」フォルダ内にある「BaseScalability.ini
」ファイルをコピーしてファイル名を変更してから、このファイルを編集して冗長なセクションを削除しています。
このファイルには、スケーラビリティ グループの機能を調整するための 2 つの変更が含まれています。
-
自動ベンチマークツールで使用される パフォーマンスしきい値 が、元のエンジンのデフォルト値から引き上げられました。このため、High または Epic 品質レベルを達成するために、より高速なコンピュータが必要になりました。
-
foliage.DensityScale
およびgrass.DensityScale
コンソール変数 設定が FoliageQuality カテゴリから ViewDistanceQuality カテゴリに移動されました。
これは、特定のゲームのフォリッジの品質を選ぶ必要がないため、オプション メニューの UI を簡素化するために行われました。
デバイス プロファイル
この「DefaultDeviceProfiles.ini
」ファイルは、エディタの [Device Profile] ウィンドウにある [Save To Defaults] オプションを使用して作成されました。さらに、値を手動で編集してプロファイルが追加され、その後、個々の設定を調整するために [Device Profile] ウィンドウを使用して変更されました。
変更点には、以下が含まれます。
-
ゲーム固有の [UI With MIPs] カテゴリの設定を定義するために、デフォルトのテクスチャ グループのオーバーライドが追加されました。これは、エディタで「
DefaultEngine.ini
」の [EnumRemap] セクションを使用して指定されます。 -
新しいモバイル デバイスのプロファイルが追加され、IOS と Android のベース プロファイルとして機能します。
-
新しいモバイル プロファイルは、メモリとダウンロード サイズを節約するために、モバイル デバイスの最大ミップ サイズを削減する新しい CVar 設定とオーバーライド テクスチャ グループを使用して、定義されました。これらのサイズはクック時に適用されます。
-
IOS および Android デバイス プロファイルは、基本プロファイルを新しいモバイル プロファイルに設定するように変更されました。
プラットフォームのコンフィギュレーション ファイル
プラットフォームのコンフィギュレーション ファイルは、独自のプロジェクト用のファイルを作成するサンプルを提供します。パブリック プラットフォーム用のコンフィグ ファイルは、「Config」フォルダにある「Default*.ini
」ファイルで入手できます。ゲーム コンソールなど、プラットフォーム ホルダーからのライセンスが必要なサポート対象プラットフォームは、「Lyra/Config/PlatformName/PlatformName*.ini
」ディレクトリで入手できます。
パブリック プラットフォーム以外のライセンスをお持ちの場合は、Epic パートナーまでお問い合わせください。詳細については、「Epic Online Services」を参照してください。
Lyra にはカスタムの設定オプションがあります。このオプションを使用すると、ゲームのディストリビューション固有のバリアントを作成することができます。たとえば、ゲームが複数の Windows ベースのストアでシッピングされる場合、ストア固有の設定をオーバーライドする .ini ファイルを格納する「Config/Custom」フォルダ内でサブフォルダを作成することができます。
これらの .ini
ファイルのオーバーライドは、開発コマンド ライン オプションで有効になります。
-CustomConfig=Directory
また、「Target.cs
」ファイル内にある CustomConfig パラメータを使用することもできます。プラットフォーム固有のカスタム コンフィグ ファイルは、「Config/Custom/CustomConfigName/PlatformName/PlatformNameEngine.ini
」のようなファイル パスを使用して名前を付けたファイルを作成することで追加できます。
ゲーム ユーザーの設定
ユーザー固有のデバイス設定を処理する場合、Lyra では、UGameUserSettings
のサブクラスとして ULyraSettingsLocal
クラスを使用します。Lyra は同じ設定 UI を使用して、デバイス上にのみ格納される Volume、Graphics Quality などのローカル設定を変更します。また、 ULyraSettingsShared
クラスを使用して、クラウド ストレージに書き込み、複数のデバイスで使用できるキー バインディングを処理します。
詳細については、「GameSettings プラグイン」に関するドキュメントを参照してください。