Version: Unity 6.0 (6000.0)
言語 : 日本語
ウェブテンプレートビルド設定とインタラクション
サーバー設定コードサンプル

ウェブアプリケーションのデプロイ

ウェブのビルドを展開するには、ブラウザーが適切な応答を受け取って正しく処理するように、サーバーを設定し、正しいレスポンスヘッダーを確実に使用するようにします。

Unity には、サーバーの設定方法に影響する主な設定が 2 つあります。

  • Compression Format: ビルドステップで Unity がどのようにファイルを圧縮するかを決定します。
  • Decompression Fallback: ビルドがブラウザーで実行されるときに、ダウンロードしたファイルを Unity がどのように処理するかを決定します。

Compression Format

Web Player Settings ウィンドウで圧縮タイプを選択します (メニュー: Edit > Project Settings > Player に移動し、Web を選択して Publishing Settings セクションを展開します)。

Web Publishing ウィンドウの画像
Web Publishing ウィンドウの画像
圧縮形式 説明
gzip これはデフォルトの設定です。gzip ファイルは Brotli ファイルより大きいですが、ビルドにかかる時間が短く、http と https の両方で、すべてのブラウザーでネイティブにサポートされています。
Brotli Brotli は最も高い圧縮率を得られます。Brotli 圧縮ファイルは gzip よりも小さいですが、圧縮にかかる時間が長いため、リリースビルドでのイテレーションタイムが増加します。https で Brotli 圧縮をネイティブにサポートするのは Chrome と Firefox のみです。
Disabled 圧縮を無効にします。後処理スクリプトで独自の圧縮を実装する場合は、このオプションを使用してください。また、ホスティングサーバーで静的な圧縮を使用する予定の場合にも使用する必要があります。

選択した圧縮方法でのブラウザーサポートの詳細については、ウェブブラウザー互換性に関するドキュメントを参照してください。

ノート: 圧縮形式の設定はリリースビルドにのみ適用されます。開発ビルドは圧縮されません。

Web サーバーの設定

特定のビルド設定に一致するように、サーバー構成の調整が必要となる場合があります。特に、ホストされたファイルを圧縮するための別のサーバーサイドの設定がすでにある場合は、この設定に干渉する可能性があり、問題となるかもしれません。アプリケーションのダウンロード中にブラウザーがネイティブに解凍を実行するように設定するには、サーバーの応答に Content-Encoding ヘッダーを加えます。このヘッダーは、Unity がビルド時に使用する圧縮のタイプに対応している必要があります。コードサンプルについては、サーバー設定コードサンプルを参照してください。

Decompression Fallback

Decompression Fallback オプションにより、Unity で自動的に JavaScript のデコンプレッサーをビルドに埋め込むことができます。このデコンプレッサーは、選択した圧縮方法に対応しており、ブラウザーがコンテンツの解凍に失敗した場合にコンテンツを解凍します。

Decompression Fallback の有効化

Player Settings ウィンドウで Decompression Fallback を有効化します (メニュー: Edit > Project Settings > Player と移動し、Web を選択して Publishing Settings セクションを展開します)。

Decompression Fallback を有効にすると、Unity はビルドファイルに .unityweb という拡張子を付けます。サーバー設定の経験が少ない場合や、サーバー設定が利用できない場合は、Decompression Fallback の使用を検討してください。

ノート: Decompression Fallback を有効化すると、ローダーサイズが大きくなり、ビルドファイルのロードスキームの効率が低下します。

Decompression Fallback の無効化

Decompression Fallback オプションは、デフォルトでは無効になっています。そのため、ビルドファイルにはデフォルトで、選択した圧縮方法に対応する拡張子のファイルもあります。

圧縮方法は gzip と Brotli の 2 種類から選択できます。詳細については、圧縮形式のセクションを参照してください。

Unity のビルドファイルをダウンロード中にブラウザーがネイティブに解凍できるようにするには、適切な HTTP ヘッダーを付けて圧縮ファイルを提供するようにウェブサーバーを設定する必要があります。これをネイティブブラウザー解凍といいます。これは、JavaScript の解凍フォールバックよりも高速で、アプリケーションの起動時間を短縮できます。

ネイティブのブラウザー解凍の設定方法は、使用するウェブサーバーによって異なります。コードサンプルについては、サーバー設定コードサンプルを参照してください。

Content-Encoding ヘッダー

Content-Encoding ヘッダーは、Unity が圧縮ファイルに使用した圧縮の種類をブラウザーに伝えます。これにより、ブラウザーはファイルをネイティブに解凍することができます。

Content-Encoding 応答ヘッダーに、Player 設定で選択した圧縮方式を設定します。

圧縮形式 ファイル拡張子 応答ヘッダー
gzip .gz Content-Encoding: gzip
Brotli .br Content-Encoding: br

WebAssembly ストリーミング (上位ヘッダー)

WebAssembly ストリーミングでは、ブラウザーが WebAssembly コードをダウンロードしている間にコンパイルすることができます。これにより、ロード時間が大幅に改善されます。

WebAssembly ストリーミングコンパイルを機能させるには、サーバーが application/wasm MIME タイプの WebAssembly ファイルを返す必要があります。WebAssembly ストリーミングを使用するには、WebAssembly ファイルに Content-Type: application/wasm 反応ヘッダーを付けて用意しておく必要があります。Content-Type ヘッダーは、コンテンツがどのメディアタイプであるかをサーバーに通知します。この値は WebAssembly ファイルの application/wasm に設定する必要があります。

ファイル拡張子 応答ヘッダー
.wasm、.wasm.gz、.wasm.br Content-Type: application/wasm

ノート: Decompression Fallback オプションが有効となっている場合、WebAssembly ストリーミングは JavaScript の解凍との併用では動作しません。ブラウザーはダウンロード中にストリーミングできないため、ダウンロードされた WebAssembly ファイルは最初に JavaScript のデコンプレッサーを通過する必要があります。

追加ヘッダー

ファイルに JavaScript が含まれている場合は、application/javascript コンテンツタイプのヘッダーを追加してください。サーバーによっては、このヘッダーが自動的に含まれている場合もありますが、そうでない場合もあります。

ファイル拡張子 応答ヘッダー
.js、.js.gz、js.br Content-Type: application/javascript

  • 2020 年 1 月、サーバー設定を考慮してページを更新
  • 2019–09–04 2019 年 2 月、WebAssembly ストリーミングについて追加
ウェブテンプレートビルド設定とインタラクション
サーバー設定コードサンプル