View in English

  • Apple Developer
    • 今すぐ始める

    「今すぐ始める」を詳しく見る

    • 概要
    • 学ぶ
    • Apple Developer Program

    最新情報

    • 最新ニュース
    • Hello Developer
    • プラットフォーム

    プラットフォームを詳しく見る

    • Appleプラットフォーム
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    特集

    • デザイン
    • 配信
    • ゲーム
    • アクセサリ
    • Web
    • Home
    • CarPlay
    • テクノロジー

    テクノロジーを詳しく見る

    • 概要
    • Xcode
    • Swift
    • SwiftUI

    特集

    • アクセシビリティ
    • App Intent
    • Apple Intelligence
    • ゲーム
    • 機械学習とAI
    • セキュリティ
    • Xcode Cloud
    • コミュニティ

    コミュニティを詳しく見る

    • 概要
    • 「Appleに相談」イベント
    • コミュニティによるイベント
    • デベロッパフォーラム
    • オープンソース

    特集

    • WWDC
    • Swift Student Challenge
    • デベロッパストーリー
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Center
    • ドキュメント

    ドキュメントを詳しく見る

    • ドキュメントライブラリ
    • テクノロジー概要
    • サンプルコード
    • ヒューマンインターフェイスガイドライン
    • ビデオ

    リリースノート

    • 注目のアップデート
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • ダウンロード

    ダウンロードを詳しく見る

    • すべてのダウンロード
    • オペレーティングシステム
    • アプリ
    • デザインリソース

    特集

    • Xcode
    • TestFlight
    • フォント
    • SF Symbols
    • Icon Composer
    • サポート

    サポートを詳しく見る

    • 概要
    • ヘルプガイド
    • デベロッパフォーラム
    • フィードバックアシスタント
    • お問い合わせ

    特集

    • アカウントヘルプ
    • App Reviewガイドライン
    • App Store Connectヘルプ
    • 近日導入予定の要件
    • 契約およびガイドライン
    • システムステータス
  • クイックリンク

    • イベント
    • ニュース
    • Forum
    • サンプルコード
    • ビデオ
 

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • すべてのビデオ
  • 利用方法

その他のビデオ

  • 概要
  • Summary
  • コード
  • visionOS上のイマーシブなWebサイト環境の詳細

    JavaScriptの新しいImmersive APIを活用して、Webサイトの訪問者にApple Vision Proの仮想環境を体験してもらいましょう。インラインのモデル要素からのイマーシブ環境への切り替えのリクエスト、ビデオドッキングなどの機能による魅力的なイマーシブ体験の構築、現実世界そのままのリッチな体験を実現するためにパフォーマンスを最適化する方法を解説します。これらすべては、Webサイト上でわずか数行のコードを実行するだけで実現できます。

    関連する章

    • 0:00 - Introduction
    • 1:46 - Meet the immersive API
    • 4:16 - Preview environments inline
    • 7:01 - Go immersive
    • 12:04 - Optimize the experience
    • 17:17 - Image controls
    • 18:09 - Next steps

    リソース

    • Download - Immersive model add-on for Blender
    • WebKit.org - Theater Ticket Sales immersive website environment demo for Apple Vision Pro
    • WebKit.org - Escape Game immersive website demo for Apple Vision Pro
    • GitHub: Spatial Backdrop explainer
    • WebKit.org – Report issues to the WebKit open-source project
    • Submit feedback
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC26

    • HTMLモデル要素の導入
    • Safari 27用WebKitの新機能
    • visionOSアプリと空間Web向けのイマーシブ環境のデザイン

    WWDC25

    • 空間Webの新機能
    • visionOSのカスタム環境の最適化
  • このビデオを検索
    • 1:51 - Basic model element

      <model src="teapot.usdz">
      </model>
    • 2:06 - Model element with environment map

      <model src="teapot.usdz"
      	environmentmap="kitchen.hdr">
      </model>
    • 4:40 - Adding the environment model on the page for inline preview

      <div class="seat-preview">
      	<model id="theater"
      		   src="theater-model.usdz"
      		   environmentmap="theater-lighting.hdr">
      	</model>
      </div>
    • 5:14 - Reset the model entity transform

      const theater = document.getElementById("theater");
      
      async function updateModelTransform() {
      	// Make sure the model is loaded
      	await theater.ready;
      	// Create a transform matrix
      	const identity = new DOMMatrix();
      	// Apply the transform matrix to the model
      	theater.entityTransform = identity;
      }
      
      updateModelTransform();
    • 5:42 - Translate the model down

      const theater = document.getElementById("theater");
      
      async function updateModelTransform() {
      	// Make sure the model is loaded
      	await theater.ready;
      	// Create a transform matrix
      	const transform = new DOMMatrix();
      	// Translate model down, for eye level preview
      	transform.translateSelf(
      		0, 			// x
      		-1.0, 	// y
      		0 			// z
      	);
      	// Apply the transform matrix to the model
      	theater.entityTransform = transform;
      }
      
      updateModelTransform();
    • 6:40 - Build the seat transform

      function buildTransform(seat) {
      	const transform = new DOMMatrix();
      	const { x, y, z, ry } = seat;
      	// Rotate and translate the model to match 
        // the seat's origin and orientation
      	transform.rotateSelf(0, -ry, 0);
      	transform.translateSelf(-x, -y, -z);
      	// Translate the model down, for eye level preview
      	transform.translateSelf(0, -1.0, 0);
      	return transform;
      }
    • 7:16 - Detect feature availability

      if (document.immersiveEnabled) {
      	immersiveButton.hidden = false;
      }
    • 7:34 - Request the immersive transition on the model

      immersiveButton.addEventListener("click", async () => {
      	await model.requestImmersive();
      });
    • 8:24 - Build immersive transform

      function buildTransform(seat, immersive) {
      	const transform = new DOMMatrix();
      	// [...] Seat transform logic
      	if (immersive) {
      		// Rotate to the left
      		transform.rotateSelf(
      			0,		// x
      			45,		// y
      			0			// z
      		);
      	} else {
      		// [...] Eye level translation
      	}
      	return transform;
      }
    • 9:01 - Update the entity transform and the layout on immersive state updates

      theater.addEventListener("immersivechange", () => {
      	const isImmersive = !!document.immersiveElement;
      	const transform = buildTransform(isImmersive, currentSeat);
      	theater.entityTransform = transform;
        document.body.classList.toggle("immersive", isImmersive);
      });
    • 10:53 - Hide the inline preview

      <model id="escapeRoom"
      	   src="escape-room.usdz"
      	   environmentmap="room-lighting.hdr"
      	   style="display: none">
      </model>
    • 11:25 - Request an immersive transition on the escape room model

      const enterButton = document.getElementById("enterButton");
      const escapeRoom = document.getElementById("escapeRoom");
      
      enterButton.addEventListener("click", () => {
          await escapeRoom.requestImmersive();
      });
    • 11:52 - Handle the request result and show a loading animation

      enterButton.addEventListener("click", async () => {
      	showLoadingAnimation();            
      	try {
      		await escapeRoom.requestImmersive();
      	} catch (error) {
      		console.log(error);
      	} finally {
      		hideLoadingAnimation();
      	}
      });
    • 13:16 - Dock the video in the environment with the fullscreen API

      const trailerVideo = document.getElementById("trailerVideo");
      const demoButton = document.getElementById("demoButton");
      
      demoButton.addEventListener("click", async () => {
      	await trailerVideo.requestFullscreen();
      });
    • 14:01 - Play the model animation

      const trailerVideo = document.getElementById("trailerVideo");
      const escapeRoom = document.getElementById("escapeRoom");
      
      trailerVideo.addEventListener("ended", async () => {
      	await document.exitFullscreen();
      	escapeRoom.play();
      });
    • 16:38 - Compress your USDZ with usdcrush

      usdcrush model.usdz -o optimized.usdz
    • 0:00 - Introduction
    • The immersive API in visionOS Safari is previewed through two example websites — a theater ticket sales experience and an escape-room marketing site — that transport visitors into virtual environments using just a few lines of code.

    • 1:46 - Meet the immersive API
    • Get a high-level overview of how the HTML `` element pairs with the new JavaScript `requestImmersive()` API and a `:immersive` CSS pseudo-class. Unlike the Fullscreen API, the immersive API opens an environment around your existing webpage rather than replacing its content.

    • 4:16 - Preview environments inline
    • Build the inline portion of the ticket sales site: load a theater model into the page, let visitors pick a seat by applying a `DOMMatrix` transform to the `` element, and prepare the same model for an immersive transition.

    • 7:01 - Go immersive
    • Transition from the inline preview into a full immersive environment. Covers the difference between inline and immersive coordinate systems, listening to `immersivechange` events, dismissing the environment, and skipping the inline preview entirely for the escape-room marketing site.

    • 12:04 - Optimize the experience
    • Polish your environment with RealityKit annotations authored in Reality Composer Pro or via a Blender plugin. Dock playing video into a TV inside the scene, trigger model animations from JavaScript, cast Safari's window shadow with the Scene Understanding component, and reduce vertex/entity counts to keep assets fast to load and render.

    • 17:17 - Image controls
    • Add a single `controls` attribute to an `` element to give visitors an immersive viewing affordance for spatial photos — a small markup change that pairs naturally with model-based environments.

    • 18:09 - Next steps
    • Try the immersive demos on webkit.org with an Apple Vision Pro, file feedback at bugs.webkit.org, and watch "Design immersive environments for visionOS apps and the spatial web" for the design principles behind great photorealistic environments.

Developer Footer

  • ビデオ
  • WWDC26
  • visionOS上のイマーシブなWebサイト環境の詳細
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • Apple Intelligence
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習とAI
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • Mini Apps Partner Program
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    最新ニュースを読む。
    Apple Developerアプリを入手する。
    Copyright © 2026 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン