Kris

OffscreenCanvas が使えない?プラットフォーム別・環境別トラブルシューティング

トラブルシューティングブラウザ互換性OffscreenCanvas

発生する症状

Any3D が「このブラウザは OffscreenCanvas に対応していません」と表示する場合があります。これは Worker パスに必要な3点セットのうちの1つで、これがないとテクスチャ圧縮など Worker 内で WebGL2 を使ったエンコード処理が完全には動作しません。

OffscreenCanvas を使うと、Web Worker 内でキャンバスを作成して WebGL コンテキストを取得し、ページの描画をブロックせずにバックグラウンドで GPU 処理を実行できます。

よくある原因

原因典型的なシナリオ
ブラウザ/WebView が古いChrome < 69、Safari < 16.4、古い Android WebView
ハードウェアアクセラレーション無効Windows/macOS の省電力設定やポリシーで GPU 無効
企業ポリシーGPO による GPU 無効、MDM によるグラフィック制限
組み込み WebViewアプリ内ブラウザ、社内アプリ、古い Electron シェル
ネットワーク層稀。API 自体よりスクリプト読み込み失敗が原因

プラットフォーム別の確認手順

Windows

  1. Chrome / Edge:設定 → システム → 「ハードウェア アクセラレーションを使用する」をオン → 完全に終了してブラウザを再起動
  2. GPU ドライバー:ノート PC でデュアル GPU の場合、ブラウザが独立 GPU を使うよう設定(NVIDIA コントロールパネル / AMD Software)。
  3. グループポリシー:「ハードウェアアクセラレーションを無効にする」系のポリシーがあると、OffscreenCanvas の WebGL コンテキスト生成が失敗します。
  4. リモートデスクトップ(RDP):RDP セッションでは GPU 機能が制限される場合があります。ローカルログインで比較テストしてください。

macOS

  1. Safari 16.4+ または 最新の Chrome を使用。
  2. システム設定 → バッテリー → 低電力モードで GPU スケジューリングが低下する可能性。電源接続して再試行。
  3. スクリーンタイム が直接 OffscreenCanvas を無効化することは通常ありませんが、MDM でグラフィック API が制限されている場合は IT 部門に連絡。

Linux

  1. Mesa / プロプライエタリドライバーが正常か確認。Wayland と X11 の両方で最新 Chrome でテスト。
  2. ヘッドレスサーバー上のリモートブラウザでは仮想 GPU が必要(個人利用では稀)。

iOS / iPadOS

  1. Safari は OS アップデートに追従(iOS 16.4+ で OffscreenCanvas サポートが比較的充実)。
  2. アプリ内 WebView はシステム Safari より古い可能性 → Safari でリンクを開く
  3. 学校の iPad の監視モードで古い OS に固定されている場合、管理者にアップデートを依頼。

Android

  1. ChromeAndroid System WebView を更新。
  2. 国内ブラウザの互換モードが非対応 → 高速モードに切り替えるか Chrome を使用。
  3. ローエンド機で GPU ドライバーが古い場合:「省電力モード」をオフにして再試行。

ネットワーク、VPN、企業環境

OffscreenCanvas はローカル API のため、通常 VPN の直接的な影響はありません。ただし、VPN がブラウザを「セーフモード」に切り替えたり、企業拡張機能がスクリプトを注入する場合は、間接的に失敗する可能性があります:

  • VPN を切断して比較;
  • 企業ブラウザが「ソフトウェアレンダリング」を強制していないか確認;
  • iframe 埋め込み時、外側のページが Worker 内の WebGL をブロックしていないか確認。

ペアレンタルコントロールと監視デバイス

  • Family Link / スクリーンタイム:OffscreenCanvas を直接無効化することはほとんどありません。むしろブラウザのアップデートをブロックして API が古くなるケースが多い——システムの自動更新を許可してください。
  • 試験会場 / 図書館モード:カスタムブラウザが使われている可能性。個人デバイスに切り替えるのがおすすめ。

段階的な修正手順(共通)

  1. ブラウザを上表の最低バージョン以上に更新。
  2. ハードウェアアクセラレーションを有効にしてブラウザを再起動。
  3. アプリ内 WebView ではなく、システムブラウザで開く。
  4. WebGL2 のエラーも同時に出る場合は、先に WebGL2 修復ガイド を参照。

クイックセルフチェック

typeof OffscreenCanvas !== "undefined";

false が返る場合、現在の環境がこの API に対応していません。

まとめ

OffscreenCanvas が使えない原因は、古いブラウザ/WebView、ハードウェアアクセラレーション無効、Windows リモート環境、企業の GPU ポリシーが大半です。プラットフォームに応じて GPU アクセラレーションを有効にし、WebView を更新し、システムブラウザに切り替えることで、通常は Worker 内の GPU エンコード機能が復旧します。

応援する