WebXR とは?

なぜWebXRが必要なのか、どんなデバイスと機能(ハンドトラッキング、コントローラー、空間オーディオ、AR)が対象なのかを日本語で整理しました。

1. WebXRとは何か?

WebXR Device APIは、VR(仮想現実)やAR(拡張現実)デバイスへのアクセスを提供するWeb APIです。W3C の勧告候補草案(Candidate Recommendation Draft)として策定が進んでおり、W3C Recommendation としてはまだ確定していません。ブラウザ上でVR/AR体験を開発・配信することを可能にします。

従来、VR/AR体験を提供するにはネイティブアプリの開発が必要でしたが、 WebXRを使えばURLを開くだけで没入体験を届けられます。 インストール不要、クロスプラットフォーム対応という、Webならではの強みを活かせます。

2. WebXRの使い方

はじめてWebXRを触る場合は、まずデモを実機で開き、次に対応ブラウザとデバイスを確認し、最後に使うライブラリを選ぶ順番が現実的です。iPhoneではSafari単体のWebXR AR対応に制限があるため、iOS向けにはApp Clipを使う方法もあわせて確認してください。

4. WebXR対応ブラウザ

WebXRはHTTPSなどのsecure contextで動作する実験的なWeb APIです。MDNではLimited availabilityとして扱われており、本番導入ではブラウザ互換性とfallbackを確認する必要があります。

環境WebXRの見方BANGEOでの扱い
Meta Quest Browserimmersive-vr / immersive-ar の主要検証環境Quest実機デモとWebXR仕様更新を優先して追跡
Chrome / Edge端末・OS・XR runtime によって利用可否が変わるWebXR EmulatorやPC VR検証の入口として扱う
Android ChromeARCore対応端末でimmersive-ar検証候補Hit TestやスマートフォンARの検証対象
iOS SafariWebXR Device APIは直接使えない前提で設計App Clip、WebAR、AR Quick Lookなどの代替経路を検討
visionOS SafariApple Vision Pro向けWebXR検証環境Spatial Web、immersive website、HTML model要素とあわせて追跡

対応状況はブラウザ・OS・端末・feature flagで変わります。最新の端末別メモはデバイスページ標準化・対応状況に分けて更新します。

5. WebXRの基本用語

XRSession

WebXR体験の実行単位。inline、immersive-vr、immersive-ar の session mode を指定して開始します。

XRReferenceSpace

座標系の基準。viewer、local、local-floor、bounded-floor、unbounded などを使い分けます。

XRFrame

各フレームのpose、input source、hit test結果などを読むためのオブジェクトです。

XRInputSource

controller、hand tracking、gazeなど、ユーザー入力を表します。

requiredFeatures / optionalFeatures

hit-test、local-floor、dom-overlayなど、セッション開始時に要求または任意指定する機能です。

fallback

WebXRや特定featureが使えない場合に、通常3D表示、画像、WebARなどへ落とす設計です。

6. 最小コードで見るWebXRの流れ

WebXRアプリは、対応確認、セッション開始、reference space取得、フレームループの順に組み立てます。実際の描画はThree.jsやBabylon.jsなどのライブラリに任せることが多いですが、APIの流れは次の形です。

javascript
if (!navigator.xr) {
  showFallback();
}

const supported = await navigator.xr.isSessionSupported("immersive-vr");
if (!supported) {
  showFallback();
}

const session = await navigator.xr.requestSession("immersive-vr", {
  optionalFeatures: ["local-floor", "bounded-floor"],
});

const referenceSpace = await session.requestReferenceSpace("local-floor");
session.requestAnimationFrame(function onFrame(time, frame) {
  const pose = frame.getViewerPose(referenceSpace);
  if (pose) {
    renderSceneForXR(pose);
  }
  session.requestAnimationFrame(onFrame);
});

本番では、HTTPS配信、ユーザー操作を起点にしたsession開始、権限エラー、feature未対応、WebGL/WebGPU context loss、通常表示へのfallbackを必ず扱います。

7. WebXRのModule別機能

WebXR Device APIは中核となるセッション・pose・入力・描画の仕組みを提供し、ARやhand tracking、hit test、layers、depth sensingなどは追加Moduleとして整理されています。実装時は「WebXR対応ブラウザか」だけでなく、「必要なModuleがその端末で使えるか」を分けて確認します。

8. WebXR実装チェックリスト

公開前に確認すること

  • HTTPSで配信している
  • ユーザー操作からrequestSession()を呼んでいる
  • isSessionSupported()でsession modeを確認している
  • requiredFeaturesとoptionalFeaturesを分けている
  • WebXR不可の場合のfallbackを用意している
  • Meta Quest / Android / PC / iOSで分岐を確認している

失敗しやすいところ

  • iOS SafariでWebXR ARが直接動く前提にする
  • controllerのthumbstick axesが必ずある前提にする
  • local-floorとbounded-floorの違いを見落とす
  • depthやmeshが取れない時に画面が空になる
  • iframe内WebXRに必要なallow属性を忘れる
  • WebGPU対応とWebGPUが安定して使えることを混同する

9. WebXRのよくある質問

WebXRはiPhoneで使えますか?

iPhoneのiOS SafariではWebXR Device APIを直接使えない前提で考えます。iPhone向けARでは、App Clip、AR Quick Look、8th Wall、MindARなどのWebAR実装を検討します。

WebXRとWebARは同じですか?

同じではありません。WebXRはブラウザが提供する標準API群です。WebARはブラウザでARを見せる広い呼び方で、WebXR以外のカメラ合成、画像認識、AR Quick Lookなども含まれます。

WebXRを始めるならThree.jsとBabylon.jsのどちらがよいですか?

既存のThree.js資産やサンプルを使いたいならThree.js、WebXRの機能を高レベルに扱いたいならBabylon.jsも候補です。PlayCanvasはエディタや商用案件の運用で便利です。

WebXRはメタバース用の技術ですか?

WebXRはメタバース専用ではありません。Web上でVR/ARデバイスにアクセスするための低レベルAPIで、教育、製造、商品プレビュー、展示、可視化、ゲームなど幅広い用途に使えます。

10. 目標と非目標

目標(Goals)

  • XR機能が利用可能か検出する
  • XRデバイスの機能を照会する
  • XRデバイスと入力デバイスの状態をポーリングする
  • 適切なフレームレートでXRデバイスに映像を表示する

非目標(Non-goals)

  • VR/ARブラウザの動作を定義すること
  • すべてのVR/ARハードウェアのすべての機能を公開すること
  • 「メタバース」を構築すること

11. 対象ハードウェア

WebXRは以下のようなデバイスに対応しています:

Meta Quest シリーズ
Apple Vision Pro
HTC Vive
Valve Index
ARCore対応スマホ
ARKit対応iPhone
Microsoft HoloLens
Magic Leap

12. XRの「X」とは?

Virtual Reality、Augmented Reality、Mixed Reality... これらには多くの共通点があります。

WebXR APIは、これらすべての基盤要素を提供することを目指しています。 特定の形式に限定したくないため、頭文字ではなく代数的な変数として「X」を使用しています。

X = Your Reality Here

(あなたの現実をここに)

13. ユースケース

360°動画

Webは動画配信に非常に効果的です。XR対応プレーヤーは没入視聴を可能にします。

データ可視化

3Dモデルや医療画像など、VR/ARではより正確なスケール感を伝えられます。

アート体験

ストアモデルに合わない短い実験的体験にとって、Webの即時性は魅力的です。

14. なぜ新しいAPIが必要だったのか

既存APIの限界

DeviceOrientation や Gamepad API では、XRに必要な高精度なタイミングと位置情報の同期が困難でした。

描画の課題

レンズ歪み補正やステレオレンダリングを標準化された方法で処理する仕組みが必要でした。

15. WebVRとWebXRの違い

WebVR (廃止)

VRのみを想定した初期の実験的設計。

WebXR(W3C勧告候補草案)

VR + AR 全てに対応し、セキュリティと拡張性を重視。

16. OpenXRとの関係

OpenXRはネイティブ向けの標準APIです。WebXRと多くの概念を共有しており、ブラウザのバックエンドとして活用されます。