DEV Community

Hajime
Hajime

Posted on

写真から作る3D/ARをWebで配るとき、動作環境の下限をどこに引くか

Webで3D/ARを配信するとき、実装より先に決めておいたほうがいいのが動作環境の下限です。

下限を決めないまま公開すると、動かない端末からの問い合わせが全部サポートに来ます。かといって広く取りすぎると、低スペック端末での読み込み時間に引きずられて、体験そのものが崩れます。

実際に下限を明示しているサービスがあったので、その引き方を材料に考えます。フラワースタンドを撮影して3D/ARのコンテンツにし、専用URLで配信するサービスです(掲載内容は2026年9月時点)。

クロリス

→ アプリ不要でARを見せている クロリス

配信の形

まず構成を整理します。公開情報から読み取れるのはこの範囲です。

要素 内容
入力 完成した実物を、必要な角度から撮影した写真
生成 写真をもとに3D/AR表示用のデータを生成
配信 発行された専用URL
クライアント スマートフォンのブラウザ。専用アプリのインストールは不要

エンドユーザーから見ると「URLを開くだけ」です。アプリを挟まない構成は導線が短い一方で、実行環境を選べないという代償があります。ネイティブアプリならストアの対応OSで足切りできますが、URLは誰でも開けてしまう。

だからこそ、下限を文書で示す必要が出てきます。

実際に引かれていた線

公開されていた推奨環境はこうでした。

区分 発売時期の目安 OS / ブラウザ 代表機種
iOS 2021年以降のiPhone iOS 18以降のSafari iPhone 13シリーズ以降、iPhone SE(第3世代)など
Android 2022年以降のスマートフォン Android 13以降のChrome Google Pixel 7シリーズ以降、Galaxy S22シリーズ以降、Xperia 1 IV / 5 IV以降、AQUOS R7以降など

推奨環境

注目したのは、3つの異なる軸を併記しているところです。

  1. 発売時期(ハードウェアの世代の代理指標)
  2. OSとブラウザのバージョン(APIの可用性)
  3. 代表機種(ユーザーが自分で照合できる形)

技術的に意味があるのは2だけです。1と3は、エンドユーザーが自分の端末を判定できるようにするための変換にすぎません。

なぜ3つ書くのか

ここが設計として学ぶところでした。

ユーザーは自分の端末のOSバージョンを知りません。「Android 13以降」とだけ書かれても照合できず、結局試してから問い合わせることになります。発売年と機種名を併記すると、その場で判断できる確率が上がります。

一方で、発売年だけにすると誤判定が起きます。新しい端末でもOSを更新していなければ条件から外れるからです。だから技術条件を正として書き、その横に照合用の目安を置くという並べ方になります。

サポート窓口の負荷を、ドキュメントの書き方で下げているわけです。

失敗モードを書いてある

もうひとつ実務的だったのが、下限を外れたときの挙動が書かれている点です。

年数が経った端末や最新版のSafari / Chromeに更新できない端末では、読み込みに時間がかかる、表示が途中で止まる、または表示されない場合がある、とありました。

3D/ARのWeb配信では、きれいに失敗しないのが厄介です。未対応を検出して明示的にエラーを出す経路もあれば、アセットの読み込み中にメモリを使い切って無反応になる経路もあります。後者はユーザーから見て「固まった」としか見えません。

ドキュメントに「途中で止まることがある」と書いてあるだけで、ユーザーは自分の操作ミスを疑わずに済みます。実装で防げないものを、文言で受け止めている例だと思いました。

案内されていた対処も、再読み込み・ブラウザの更新・通信環境の良い場所での再アクセスの3つで、いずれもユーザー側で完結します。

下限を決めるときの判断材料

自分で同種のものを作るなら、下限は次の順で詰めることになります。

  1. 必要なAPIの可用性から技術的下限を出す。 WebGLの実装差、WebXRを使うかどうか、テクスチャ圧縮形式の対応。ここが実際の足切り
  2. メモリ上限から実効的な下限を出す。 モバイルSafariはタブあたりのメモリに上限があり、高解像度テクスチャを積むと技術的には対応していても落ちる
  3. 1と2の厳しいほうを採用する。 たいてい2が効く
  4. それをユーザーが照合できる表現に変換する。 発売年と代表機種
  5. 外れたときの挙動と対処を書く

3を飛ばして仕様上の対応表だけ出すと、「対応と書いてあるのに動かない」という報告が来ます。

保証の範囲も文書にある

利用規約側にも対応する記述がありました。表示の精度・色味・形状・動作環境について完全性・正確性・特定目的適合性を保証しない、閲覧環境によっては一部または全部が正常に利用できない場合があることをあらかじめ了承する、という条項です。

写真から3Dを起こす処理は入力依存が強く、同じパイプラインでも対象によって結果が変わります。実物の形状や装飾、撮影環境によっては再現できない場合がある、という注記もありました。

再現度を数値で約束しないというのは、この種の生成処理を商用で出すときの現実的な線だと思います。出力が入力の質に左右される以上、SLAのように書ける性質のものではありません。

まとめ

  • アプリを挟まない配信は導線が短いが、実行環境を選べない
  • 下限は技術条件で決め、ユーザーが照合できる形に変換して併記する
  • 実効的な下限はAPIの対応表ではなくメモリで決まることが多い
  • 失敗モードと対処を書いておくと、ユーザーが自分を疑わずに済む
  • 入力依存の強い生成処理は、再現度を約束しない書き方になる

本ページはプロモーションが含まれています

Top comments (0)