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
- Chrome / Edge:設定 → システム → 「ハードウェア アクセラレーションを使用する」をオン → 完全に終了してブラウザを再起動。
- GPU ドライバー:ノート PC でデュアル GPU の場合、ブラウザが独立 GPU を使うよう設定(NVIDIA コントロールパネル / AMD Software)。
- グループポリシー:「ハードウェアアクセラレーションを無効にする」系のポリシーがあると、OffscreenCanvas の WebGL コンテキスト生成が失敗します。
- リモートデスクトップ(RDP):RDP セッションでは GPU 機能が制限される場合があります。ローカルログインで比較テストしてください。
macOS
- Safari 16.4+ または 最新の Chrome を使用。
- システム設定 → バッテリー → 低電力モードで GPU スケジューリングが低下する可能性。電源接続して再試行。
- スクリーンタイム が直接 OffscreenCanvas を無効化することは通常ありませんが、MDM でグラフィック API が制限されている場合は IT 部門に連絡。
Linux
- Mesa / プロプライエタリドライバーが正常か確認。Wayland と X11 の両方で最新 Chrome でテスト。
- ヘッドレスサーバー上のリモートブラウザでは仮想 GPU が必要(個人利用では稀)。
iOS / iPadOS
- Safari は OS アップデートに追従(iOS 16.4+ で OffscreenCanvas サポートが比較的充実)。
- アプリ内 WebView はシステム Safari より古い可能性 → Safari でリンクを開く。
- 学校の iPad の監視モードで古い OS に固定されている場合、管理者にアップデートを依頼。
Android
- Chrome と Android System WebView を更新。
- 国内ブラウザの互換モードが非対応 → 高速モードに切り替えるか Chrome を使用。
- ローエンド機で GPU ドライバーが古い場合:「省電力モード」をオフにして再試行。
ネットワーク、VPN、企業環境
OffscreenCanvas はローカル API のため、通常 VPN の直接的な影響はありません。ただし、VPN がブラウザを「セーフモード」に切り替えたり、企業拡張機能がスクリプトを注入する場合は、間接的に失敗する可能性があります:
- VPN を切断して比較;
- 企業ブラウザが「ソフトウェアレンダリング」を強制していないか確認;
- iframe 埋め込み時、外側のページが Worker 内の WebGL をブロックしていないか確認。
ペアレンタルコントロールと監視デバイス
- Family Link / スクリーンタイム:OffscreenCanvas を直接無効化することはほとんどありません。むしろブラウザのアップデートをブロックして API が古くなるケースが多い——システムの自動更新を許可してください。
- 試験会場 / 図書館モード:カスタムブラウザが使われている可能性。個人デバイスに切り替えるのがおすすめ。
段階的な修正手順(共通)
- ブラウザを上表の最低バージョン以上に更新。
- ハードウェアアクセラレーションを有効にしてブラウザを再起動。
- アプリ内 WebView ではなく、システムブラウザで開く。
- WebGL2 のエラーも同時に出る場合は、先に WebGL2 修復ガイド を参照。
クイックセルフチェック
typeof OffscreenCanvas !== "undefined";
false が返る場合、現在の環境がこの API に対応していません。
まとめ
OffscreenCanvas が使えない原因は、古いブラウザ/WebView、ハードウェアアクセラレーション無効、Windows リモート環境、企業の GPU ポリシーが大半です。プラットフォームに応じて GPU アクセラレーションを有効にし、WebView を更新し、システムブラウザに切り替えることで、通常は Worker 内の GPU エンコード機能が復旧します。