visionOS TC のプロポーザルが採択された

真夜中のテンションで提出したプロポーザルをなんと採択いただいた。

主催のサイバーエージェント服部さんからも、正式にイベント告知があった。チケット販売中(イベントページ)。


あと1ヶ月弱でどこまで準備を詰められるか。せっかく頂いた枠なので全力尽くすべく絶賛実装中。プロポーザル本文で「人体実験」と言ったからには実験部分に重きを置きたいし、遅くとも今月末には動かせるもので検証ができている必要がある。

実装メモ:visionOS でパーティクルのプロパティをランタイムで変更する

Reality Composer Pro で定義したパーティクル(前回記事参照)を、Entity に対し ParticleEmitterComponent で設定したあと、その属性をアプリ動作中に動的に変更することができる。

単純に、ParticleEmitterComponent を取り出して値を変更し、再度入れ直せば良い。

struct ImmersiveView: View {
    @State var model: Entity?
    @ObservedObject var someTracking: SomeTracking

    var body: some View {
        RealityView { content in
            model = ModelEntity(...
            await attachParticleEffect(to: model!) // https://p0dee.com/blog/2025/11/03/define-particle-on-reality-composer-pro-and-attach-to-entity/
        } update: { content in
            guard let model else { return }
            model.position = someTracking.location
            updateParticleEmitterProperties(for: model, value: someTracking.strength)
        }
    }

    func updateParticleEmitterProperties(for model: Entity, value: Float) {
        guard var particleEmitterComp = centerMarker.components[ParticleEmitterComponent.self] else {
            return
        }
        let birthRate = Float(value * 100)
        particleEmitterComp.mainEmitter.birthRate = birthRate
        model.components[ParticleEmitterComponent.self] = particleEmitterComp
    }
}

他にも、RealityKit.System を使って、シーンの毎更新でパーティクルを自動的に更新する方法もありそう(出来た)。この手法は、例えば Apple のサンプルだと惑星や飛行機などの物体を周回軌道に乗せて動かし続ける、といった表現に用いられている。以下のコードだと、ParticleEmitterComponent を持ったすべての Entity を更新対象としいる。雑なので、Entity Component System に乗っ取り、カスタム Component を定義して、属性変更に必要な値もこれを経由して受け渡す設計にすると良いかもしれない。

// https://developer.apple.com/videos/play/wwdc2023/10081/
public class ParticleTransitionSystem: RealityKit.System {
    public required init(scene: RealityKit.Scene) { }
    
    private static let query = EntityQuery(where: .has(ParticleEmitterComponent.self))

    public func update(context: SceneUpdateContext) {
        let entities = context.scene.performQuery(Self.query)
        for entity in entities {
            updateParticles(entity: entity)
        }
    }
    
    public func updateParticles(entity: Entity) {
        guard var particleEmitterComp = entity.components[ParticleEmitterComponent.self] else {
            return
        }
        // スケールに応じてパーティクルの放出量を変化させる
        let scale = entity.scale(relativeTo: nil).x
        let birthRate = Float(scale * 100)
        particleEmitterComp.mainEmitter.birthRate = birthRate
        entity.components[ParticleEmitterComponent.self] = particleEmitterComp
    }
}

聴講メモ:TNXR MEETUP Vol.10 「人と情報の“距離感”をデザインする—AR/AIグラス時代の徒歩移動とカームテクノロジー—」

カームテクノロジーというワードに引き寄せられて行ってきた。

イベントページ:https://tnxrmeetupvol10.peatix.com

MESONと博報堂DYホールディングスとが共同で実証実験を行った「Motion Cyber Viewing」に関する発表とパネルディスカッション。

本編

  • 観光ユースケースにおける街歩きアプリで、どういうARコンテンツ、ナビゲーションデザインだと「能動的に接触」してくれるか?の検証
    • ARコンテンツによる広告のエンゲージメントの向上
  • ARデバイスの屋外都市空間への波及、デジタルと物理の統合、これにより生活行動がどう変化するか
    • 移動中も安全に情報取得でき、その機会や情報量が増加
      • 視界を塞がないので目的のコンテンツと同時に周囲環境も見渡せる
      • e.g. 対話エージェント
    • 徒歩移動が新しい可処分時間として設計される時代に
      • 自宅でテレビ、朝はラジオ、電車移動は動画、、とどこもメディアに占有されている中、歩き移動に音楽はあるが、視覚情報が占有できていない
    • 歩ける街化(walkable city):徒歩移動しやすくなる、AR移動支援が拡大
      • 歩道幅が広かったり
  • ARのユースケース、一番使うのはナビゲーション、誘導されながらAR情報を接種
    • ただし「Hyper reality」は一見楽しそうだが、コンテンツが溢れすぎ
      • 自ら情報に接触したいとならなくなる課題
    • 企業、都市、生活者、それぞれにとって大切な情報提示手法がありそう
      • 企業:自社の情報が埋もれて見られない問題
      • 都市:景観が台無しになり、印象が下がる問題
      • 生活者:受動的になり、能動的アクションをしなくなる問題
  • 「カームテクノロジー」に着目
    • e.g. mulボード
      • 必要なときにだけ情報が飛び出してきて、インタラクションすると追加で情報が現れる
    • カームテクノロジーを取り入れて
      • 段階的に情報を提示するインタラクション
      • 都市空間に溶け込む情報提示
      • 視覚的負荷の軽減
  • 観光ユースケースにカームテクノロジーの思想を導入
    • ARナビゲーションでの移動中に能動的にAR情報を提示する
    • 誘導状態にあるユーザーが自分から接触したくなる情報とは?
      • ARナビゲーション:有無やデザインが影響を与えるか
        • e.g. Google Maps だと地図ばかり見て周りを見ない
      • ARコンテンツ:情報量(配置や密度)やデザインが影響を与えるか
        • シーンごとに効果的なデザインとは?認知まででOKなケース、購買意欲につなげたいケースごと
  • 研究方法と事件設計
    • ナビゲーションの評価指標:誘導直感性、周囲視認性、エンタメ性、誘導安全性(MUST)
    • ARコンテンツの選定軸:情報の直感性、情報の一義性(アイコンだと抽象的だが画像なら?景観への影響と相関する)、景観への影響
  • 景観を重要視(風景学)
    • 主観的価値に依存しない視覚環境の評価基準
    • カームテクノロジーの、視覚的快適性考慮という概念と共通する
    • 渋谷区の景観指標を参考
    • 遠景、中景、近景の考慮:
      • 遠景だと視界占有率高。近景で景観を損なわず
      • かつ壁・建物を背にして、徒歩行動を邪魔しない考慮
  • 景観に馴染むトンマナやモチーフの採用
    • 施設内のアクセントカラーに乗っ取って環境との統一感を醸成
    • 触れる人にとって、ARのコンテンツがぎょっとしない、ぱっと目に入って触れてみたいと思えるもの、アバターであればついて行きたいと思える見せ方の工夫
    • ローポリからハイポリまでのリアルさ、モーションや表情の幅の中で、違和感のないものを探った
  • 技術解説
    • VPSでなくマーカーを使用
      • Vision Proで使えるVPSは手間がかかり、手軽さ優先
    • マーカーの位置を基準に位置合わせ
      • 広域移動時は、コンテンツが消失したりずれたりがあるので
      • 経路途中で位置合わせできるようにマーカーを配置したポイントを作った
      • そもそも Vision Pro は広域移動を考慮していない(一定速度以上の移動トリガーに途中で空間のリセットが走るケース)
  • 結果と考察
    • ナビゲーションがあった方が、ARコンテンツへのインタラクションが上がった
      • 移動だけでなく、環境への気づきや認知にも寄与
      • スマホ地図のナビゲーションでは、ついて行くことに認知取られるのかも
    • ARコンテンツは、誘導や滞在にも寄与した
      • 最適な情報量は3、4
    • 都市状況や目的に応じたアダプティブなナビゲーション・コンテンツの実装が重要

パネルディスカッション

  • 観光に絞ったが、今後一般的になったときに、どういったARのデザインの工夫があり得るか?
    • 広告は注意を引くかで設計されているが、ARでもそれをやる?景観との不一致は逆に顧客離れにつながるのではないか
    • Web広告に対する忌避感、
    • 都市空間では、ハデじゃない、だけでなく景観と馴染むかも考慮
      • e.g. 京都の吉野家
      • Web広告のバツボタンサイズのガイドラインにも類似していそう
  • 「借景」に似たようなことをしていると思ったが
    • 「ベネチアの水」ベネチア都市の水路、同じ水路が同期して上がり下がりして、建物自体はバラバラでも一つの都市としてつながるデザイン構図になっている
    • ARでもエリアをまたいで物理的に区切られた建物がつながり、エリアに対するまとまりの意識を変えられないか
      • e.g. 万博のリング的な
    • みんながみんな同じものを見たい?ユニバーサリティ
  • ARでの広告の提示の仕方
    • ARの設定でオンオフできそうだが
    • 観光ならセレンディピティ求めるシーン、だから今回検証のように固定型で店舗前のARコンテンツを表示するようにした
    • AR広告のターゲティング、セレンディピティの切り替え
  • AIxARグラスの融合、パーセプションフローモデルの各状態に合わせた知覚情報の提示ができるようになったとき、これまでの広告戦略の仕事がどう変わるか
    • 戦略は変わってきそう、ターゲティング精度が高まるので、広告生成もファネルごとに変わってくる(e.g. Xでマンガ広告をタップ、次からは本編広告が流れてくる)
    • 購買意向の促し、生活行動の変容に注力したマーケティングが必要
  • 認知をとるなら音使った方が有利だろうが、可処分時間の観点では、音は音楽とかですでに占有されているのではないか

Magic Mouse (USB-C) を購入した

先日 Melt Mouse を紹介したのだが、こちらファンド開始と共に即注文したところ、配送目処が来年2026年の9月となっていて目を疑った。今現在、Magic Mouse(電池式)が壊れ Magic Trackpad で代用しているが、やはりマウス派としては微妙なストレスを感じ続ける日々。すぐにでも代替が欲しいこの状況で、来年の9月まではさすがに待てない、、!

というわけで Melt Mouseを待つ間をしのぐため、Magic Mouse を買い直したのだった。

USB-C で充電できるのがありがたい、、
あとクリック感が若干ソリッドになった気がする。

ちなみにこれまで愛用し続けてきた(といっても常に継続してではなかったが)乾電池式のMagic Mouse、Wikipedia によると2009年に販売開始され、6年後の2015年には Lightning 経由で充電可能になった Magic Mouse 2 が発表されたようだ。つまりこれは2009年から2015年の間に購入したものなので、10年以上手元にあったことになる。

実装メモ:Reality Composer Pro で定義したパーティクルを Reality View のエンティティにアタッチする

visionOS/App プロジェクトを作成したら初期状態で存在する Packages/RealityKitContent/Package を Reality Composer Pro で開き、以下のブログに従ってパーティクルを追加する。

How to make a fire effect using particles and Reality Composer Pro

これを実装で抽出し、任意のエンティティに追加する。

func attachParticleEffect(to entity: Entity) async throws {
    let particlesRoot = try await Entity(
        named: "ParticleEffect",
        in: realityKitContentBundle // already defined in Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift
    )
    guard
        let emitterSourceEntity = particlesRoot.findEntity(named: "ParticleEmitter"),
        let emitterComponent = emitterSourceEntity.components[ParticleEmitterComponent.self]
    else {
        assertionFailure("Emitter entity or ParticleEmitterComponent not found")
        return
    }
    entity.components.set(emitterComponent)
}

検証環境 Xcode 26.0.1 (17A400)

Apple 表参道で Vision Pro Dual Knit Band を試した

バルミューダにジョナサン・アイブデザインのランタンを見に行った話を書いたが、同日 Apple 表参道にも寄っていた。目的は、M5 搭載 Vision Pro のデモセッションだった。しかし筆者はすでに初代 Vision Pro を持っていて、M5 へのアップデートだけで買い換えるつもりはない。デモの目当ては Vision Pro 本体ではなく、同時に新登場した Dual Knit Band の装着感を確かめることだった。

Apple Vision Pro と Dual Knit Band

筆者は普段、3rd-party のヘッドサポーターを使っている。Vision Pro はその重量と装着不可に悪名高く、人によって合う合わないはあるようだが、多くのユーザーにとっては長時間使用に耐えられないのが現状だ。そこで、こうしたヘッドストラップやサポーターが販売されているわけだが、どれも共通して頭部上部から本体を支えることで、頭部に掛かる負荷を分散させる効果がある。

ヘッドサポーター付き Vision Pro と Solo Knit Band(新幹線での移動中にて)

加えて、このヘッドバンドは Vision Pro 使用時の負荷要因のもうひとつを取り除いてくれる。顔面圧だ。例えば筆者の場合だが、初代に同梱されていた Solo Knit Band 単体では 30分 の継続使用が限界なのだが、それは本体重量に加えて、視界を覆うライトシーリングにより顔面に掛かる圧にも起因すると考えている。この圧が次第に痛みを伴いだし 30分を過ぎれば額に手脚に脂汗が滲むほどで、到底無視できないのだ(映画1本観るのに4、5回の休憩が必要と言えば分かりやすいだろう)。

筆者の使っているサポーターは角度を自由に変えることが可能で、支点を頭頂部よりも前倒し額上部に調整することで、Vision Pro 本体を顔面から離すことができる。これにより前述の顔面圧が緩和し、何時間でも継続使用できるようになった。またサポーターの安定性が抜群なので、視界を覆うライトシーリングすらも外すことができ、ヘッドセットならではの没入感とは引き換えになるが、視界の広さとカジュアルな使い勝手をも実現してくれる。Mac からデスクトップミラーリングすれば、普段の作業スペースが日常空間と連続して存在しているかのように感じられる(と、長々講釈を垂れたが、このヘッドサポーターやその効能はすべて MESON 代表の小林さんに教えてもらったものだ)。


とはいえこの課題を Apple は当然はじめから認識していて、初代 Vision Pro には Solo Loop Band に加え Dual Loop Band というバンドも同梱されていた。後頭部と頭上部の2箇所で本体を支える、要するにヘッドストラップ一体型として上述の問題を解決しているが、着脱が面倒そうなのと、何より Solo Knit Band のアイコニックなデザイン性を失いたくなかったので、選択肢にはならなかった。

が、件の Dual Knit Band はサポート性とデザイン性の両方を兼ね揃えて登場したのだから、新型に一切関心のなかった筆者の心を揺さぶった。一方で 16,800円(2025/11時点) というお値段では容易く手を出せない。というわけで、デモセッションで実際に試してみようと思い立ったわけだ。


Vision Pro 登場と同時に一部のアップルストアに新設され話題となった、革張りソファー付きのセッションエリアは、国内では表参道・丸の内・心斎橋の3店舗のみ。それ以外の店舗でもデモ自体は提供しているのだが、せっかくだからこのソファに座ってみたいと、最寄り店ではなくあえて表参道を選んだ。このラグジュアリなエリアにはじめて足を踏み入れたとき、反射的に靴を脱がなくて良いのか不安がよぎったのは、ここだけ床がふかふかなカーペットになっていたからだった(もちろん脱ぐ必要はなかった)。

メガネユーザーの筆者は、普段 Vision Pro を使う際はメガネを外し、専用のインサートレンズを代わりに使っている。このインサートレンズは Vision Pro の注文プロセスで 、メガネレンズの処方箋に倣い値を入力することで、本体と同時注文できる流れになっている。それが今回デモセッションを予約するにあたっては入力手段が見当たらず、現地でどう手配するのか気になっていた。その答えはエリア隅に置かれた謎の機器にあった。てっきり手指消毒用の設備だと思い気にも留めていなかったのだが、筆者が手渡したメガネを担当スタッフがここにスキャンさせることで、あっという間にインサートレンズのスペックが確定したようだった。

赤丸部分の、手指消毒ができそうな機器

しばらくすると、木製のお盆に乗せられた Vision Pro が運ばれてきて、手や視線のキャリブレーションを済ませ、すぐにデモ体験を始められる状態となった。事前にスタッフには、筆者が Vision Pro ホルダーであること、今回の目的はバンドの使い勝手であることを伝えていたので、インストラクションなどを省き残り時間好き勝手に使わせてもらうことができた(質問には適宜お答えくださった)。

M5 搭載 Vision Pro のファーストインプレッションだが、手に取った瞬間、重いなと感じた。これはすでに、前モデルから総重量が 150g 増加していること、その増加分は Dual Knit Band によるものであること、が情報として明らかにされていたのだが、果たしてバンドだけで 150g も増加するだろうか?と不思議に思っていたのだった。しかし手に取ると確かに、後頭部分の重みが顕著だった。加えて Solo~ ではしなやかな手触り感だった生地も、一変ゴツく感じられた。これは従来になかったタングステンの編み込みによるもので、スタッフによると装着時の安定性向上に寄与しているそうだ。何かで読んだ情報によると、この重さが本体重量に対するカウンターウェイトとしても機能しているらしい。

実際に使ってみての感想だが、頭部上部からも支えることで確かに Solo Knit Band と比較して負荷は軽減されたものの、前述したヘッドサポーターの機能性を求めるには不十分だった。頭部上部・後頭部を支える角度が物理的に固定している作り上、額側に支店を調整できないため、ライトシーリングを外すとどうしてもグラつくのだった。(というか Apple がそもそも意図していない使い方なので、完全に言いがかりなのだが)。

あと、Solo Knit Band のしなやかな触り心地も気に入っていたので、Dual Knit Band の硬さ・重厚感はなんだか違うなあ、、とも思った。これは手に取らなければ分からなかった。

というわけで、セッションの時間だけだは Dual Knit Band を買う決断には至らなかった。一方で今愛用しているヘッドサポーターも、3Dプリンタで出力したような安っぽい作りなので、いつ壊れるかは分からないし同じものは終売しているので、壊れたときはまた考える必要がありそうだ。


ちなみに余談だが、M5 搭載の Vision Pro で、デモでおなじみ「恐竜たちとの遭遇」を試した際やたらと視界がクリアに感じて驚いた。しかしスペック上画面解像度は変わっていないはずだ。処理能力とともにFPSが向上したからだろうか、と考えたが、あとから思うに、店頭でスキャンしてもらったインサートレンズが今の視力に合っていて(最近メガネを作り直した)、シンプルに「よく視えた」だけだったのかもしれない。