0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WebXRのジオラマが動かない? セキュアコンテキストとHTTPSの話

0
Posted at

はじめに

jpmap_terrainについては、こちらの記事で紹介しています。

diorama_fuji.jpg

Meta Quest 3でWebXRを実行しているところです。実はWebXRを表示するためには条件を満たす必要がありました。それは、 セキュアコンテキスト であること、つまりHTTPSでアクセスできる環境であることです。
しかし開発中に、ローカル環境ではHTTPSを簡単に用意できないため、WebXRが利用できないという問題に直面しました。そこで今回は、Cloudflare Quick Tunnelを使ってローカル環境をHTTPSで公開する方法を試しました。

Cloudflare Quick Tunnelを使う

jpmap_terrainでは、WebXRの実機検証用にCloudflare Quick Tunnelを利用できます。

構成は次のとおりです。

compose.yamlでは、デモサイトをdemoコンテナとして起動します。

name: jpmap-terrain-demo

services:
  demo:
    build:
      context: ..
      dockerfile: docker/Dockerfile
    image: jpmap-terrain-demo:local
    ports:
      - "8080:80"
    restart: unless-stopped
    networks:
      - demo-net

networks:
  demo-net:
    name: jpmap-terrain-demo-net

ホストの8080番ポートから、コンテナの80番ポートへ接続できる構成です。

http://localhost:8080

ただし、スマートフォンやMeta QuestからLAN内のIPアドレスでアクセスすると、通常のHTTP通信になります。

http://192.168.1.10:8080

このURLはセキュアコンテキストではないため、WebXRを利用できない場合があります。

そこで、compose.webxr-tunnel.yamlでHTTPSトンネルを追加します。

services:
  webxr-tunnel:
    image: cloudflare/cloudflared:2026.7.2
    container_name: jpmap-terrain-webxr-tunnel
    command: tunnel --no-autoupdate --url http://demo:80
    restart: unless-stopped
    networks:
      - demo-net

networks:
  demo-net:
    name: jpmap-terrain-demo-net
    external: true

demo-netexternal: trueとしている点がポイントです。

先にcompose.yamlで作成したネットワークへ、トンネルコンテナを参加させています。

起動手順

dockerディレクトリへ移動します。

cd docker

まず、デモコンテナを起動します。

docker compose -f compose.yaml up -d --build

次に、別のターミナルでWebXR用のトンネルを起動します。

docker compose -f compose.webxr-tunnel.yaml up -d

トンネルのログを確認します。

docker compose -f compose.webxr-tunnel.yaml logs -f

ログに、次のような一時URLが表示されます。

https://random-name.trycloudflare.com

このURLをスマートフォンやMeta Questのブラウザで開きます。

起動から実機アクセスまでの流れは次のとおりです。

URL部分だけを抽出したい場合は、次のコマンドを使えます。

docker compose -f compose.webxr-tunnel.yaml logs \
  | grep -oE 'https://[A-Za-z0-9.-]+\.trycloudflare\.com'

起動直後からURLをリアルタイムに確認する場合は、次のコマンドを使います。

docker compose -f compose.webxr-tunnel.yaml logs -f \
  | grep --line-buffered -oE 'https://[A-Za-z0-9.-]+\.trycloudflare\.com'

停止する

トンネルを停止します。

docker compose -f compose.webxr-tunnel.yaml down

デモコンテナも停止する場合は、次のコマンドを実行します。

docker compose -f compose.yaml down

Quick Tunnelの注意点

Quick Tunnelは一時的な実機検証向けです。

  • URLは起動するたびに変わります
  • 固定URLとしては利用できません
  • CloudflareのSLA対象外です
  • 大量アクセスを想定した構成ではありません
  • 開発PC上のサービスをインターネットへ公開します

短時間のWebXR検証には便利ですが、恒久的な公開にはHTTPS対応のホスティングサービスを利用するのがおすすめです。

おわりに

わたしはRaspberry Pi 5でDocker Containerを使い、同様にCloudflare Quick Tunnelを使ってHTTPSでWebXRを実行し動作確認をしています。Dockerをアップするたびに一時URLが変わるのはいいですが、URLが長いのがちょっと面倒くさいですね💦
これからもBabylon.jsとWebXRを使って、お気軽開発を楽しんでいきたいと思います。(もちろんPlayGroundも使わせてもらいます)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?