🫥

iOS 17におけるWebXR Device APIの現状確認

2023/09/19に公開

@ikkou です。ウェブにおける XR である WebXR を長らく推しています。最近は LODGE XR Talk という XR 系イベントを月次で開催しています。

㊗ iOS 17 リリース

本日 2023/09/19 JST に iOS 17 がリリースされました🎉

https://www.apple.com/jp/ios/ios-17/

iOS 16 までと異なり、Apple Developer Program に課金していない人でも、Developer Beta を試せたため、いち早く iOS 17 に触れていた方は多かったのではないでしょうか。

Developer Beta のときから iOS 17 における WebXR Device API の動向を追っていますが、リリースに伴い NDA による制限が解除されたので満を持して本エントリを公開できます:)

早速ですが本記事のサマリはこのツイートにまとまっています。

https://twitter.com/ikkou/status/1703944325057720471

過去に「iOS 15.4におけるWebXR Device APIの現状確認」というエントリを公開していますが、大きく状況が変わっています。

WebXR Device API 関連フラグの消失

先のエントリでも触れている iOS 15.4 で実装された WebXR Device API 関連フラグが iOS 17 ですべて消失 しました。

消失したフラグは次の 4 つです。

  • WebXR Augmented Reality Module
  • WebXR Device API
  • WebXR Gamepads Module
  • WebXR Hand Input Module

これらのフラグは iOS 16.6.1 まで Safari の Experimental Features > 実験的なWebKitの機能としてユーザー自身が任意で有効化できましたが、iOS 17 では機能フラグ > WebKit機能フラグとなり、該当するフラグは見当たらなくなりました。

関連フラグの消失は標準実装を意味するのか?

件のエントリでは WebXR Device API の標準実装について下記のように触れています。

Chrome のような「標準実装」と言えるのは、このAPI 自体が Safari の標準機能として取り込まれ、設定項目そのものが無くなったときです。

iOS 17 で関連フラグが消失したことは標準実装を意味するのでしょうか?

WebXR Device API が有効化されていることの確認

例によって WebXR Device API が有効化されていることは、この WebXR Device API の仕様策定を担っている W3C Immersive Web Working Group が運営している WebXR Sample Pages で確認できます。

https://immersive-web.github.io/webxr-samples/

まずは iOS 16.6.1 で WebXR Device API と WebXR Augmented Reality Module のフラグを立てている状態です。WebXR Device API のフラグが立っているだけの状態、つまり navigator.xr は有効化されているものの immersive-vrimmersive-ar も有効化されておらず、WebXR Device API を用いた WebXR コンテンツは動作しません。


iOS 16.1.1 でフラグを立てて WebXR Sample Pages にアクセスしたとき

次の画像は iOS 17 で確認したものです。関連フラグが消失したことで「ついに標準実装されたのでは?」という気持ちで確認しましたが、標準実装どころか WebXR Device API のフラグすら立っていない状態です。


iOS 17 で WebXR Sample Pages にアクセスしたとき

残念ながら iOS 17 における WebXR Device API 関連は iOS 15.4 以前の状況に先祖返り してしまいました。

WWDC23 で Spatial Web に言及して Vision Pro が immersive-vr に対応する話はどうなった?

WebXR に興味をお持ちの方であれば同じくらい Vision Pro にも興味を持っていると思いますが、WebKit Blog では Vision Pro の immersive-vr 対応に触れています。

Safari on Vision Pro currently has testable support for WebXR, available behind a feature flag while we collaborate with the W3C Immersive Web Working Group on updates to the web standard. WebKit supports the immersive-vr session type in WebXR. Vision Pro does not have external controllers. Instead, you can request the “hand-tracking” feature to let users interact with your content.

https://webkit.org/blog/14205/news-from-wwdc23-webkit-features-in-safari-17-beta/

冒頭で Safari on Vision Pro currently has testable support for WebXR と記載されている通り、これはあくまで Vision Pro の Safari の話です。iOS の Safari が対応するとは一言も書かれていません。レンダリングエンジンは同じ WebKit ですが、iOS 向けの WebKit と Vision Pro 向けの WebKit で機能が分離しているようです。

immersiveweb.devSupport Table for the WebXR Device API にも Safari ではなく Safari on VisionOS と記載されています。(※正確には VisionOS ではなく visionOS が正しい表記)


immersiveweb.dev にも Safari ではなく Safari on VisionOS と記載されている

ちなみに、このページでは Vision Pro のハードウェア特性を踏まえると相性が良さそうな WebXR Augmented Reality Module が対応していないことも示唆されています。しかし、ハンドトラッキングを担う WebXR Hand Input Module には対応するとされています。

筆者は Vision Pro の実機に触れられる「Apple Vision Proデベロッパラボ」で visionOS における Safari の挙動を確認しているため、実際にはどうなっているのか把握しています。しかし、残念ながら NDA の存在によりこれ以上のことはまだ書けません。

https://twitter.com/ikkou/status/1700061307242987921

下記の条件を満たせば、個人でもラボへの応募資格を満たせるので、強い興味をお持ちの方は応募してみると良いでしょう。

  • 年間 12,800 円の Apple Developer Program に加入している
  • 開発に使用する Mac を所有している
  • 審査に出せるデモを用意できる

ただし WebXR コンテンツでラボの審査を通過できるかはわかりません。

https://developer.apple.com/jp/visionos/labs/

Safari の WebXR Device API 対応への道のりはすべて Vision Pro のためだったのか?

まだ答え合わせには早すぎますが、過去の自分はこう言っていました。

そして、期待を込めて言うなら、今後もしもメガネ型の AR デバイスが出てきた際には、ブラウザ経由で VR/AR デバイスにアクセスする WebXR Device API が真価を発揮する可能性があるかもしれません。

これはあくまで iOS と今で言う visionOS が共存する世界を意識したものでした。実際のところ iOS が動作する iPhone で immersive-vr な WebVR コンテンツが動作する世界はあまりイメージできません。さすがにこのご時世でカードボードタイプというのも想像できません。対して immersive-ar な WebAR コンテンツは十分に期待できますが、例えば多くの WebAR コンテンツで使われている 8th Wall を使えば WebXR Device API に依存せずに済みます。そう考えると iPhone のための iOS よりも Vision Pro のための visionOS が WebXR Device API に対応するほうが妥当性があると考えられます。

とはいえまだ Vision Pro は発売されていませんし、日本での発売時期に関して明確にはされていません。そして iOS も 15.4 がそうだったように、マイナーバージョンアップによって機能が追加されることがあります。

今日現在言えることは iOS 17 では WebXR Device API 関連のフラグが消失し、immersive-vr な WebVR コンテンツも immersive-ar な WebAR コンテンツも動作しないという事実だけです。引き続き動向を追っていきましょう。


現場からは以上です! 良き WebXR ライフを!

Discussion