ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
ARKitアプリを空間体験向けに進化させる方法
アプリのAR体験をvisionOSに持ち込む方法について確認しましょう。ARKitとRealityKitが空間コンピューティングのためにどう進化したのかを確認し、iPadOSやiOSからアプリを持ち込むための概念的な変更やAPIの変更に焦点を当てます。また、このプラットフォームにみなさんのAR体験を持ち込むための更なる詳細を扱ったセッションについても紹介します。
リソース
関連ビデオ
WWDC23
-
ダウンロード
♪♪ ♪ Omid Khalili: こんにちは! Omidです Oliverと私は ARKit Teamのエンジニアで 今日 私たちがこれから考察していくのは みなさんのiOS ARアプリを 新しいプラットフォームに 持ち込む際に知っておくべき 新旧の概念についてです ARKitは2017年にiOSに導入され 同時に拡張現実アプリの構築に対する 3つの主要な概念が導入されました ワールドトラッキングにより ARKitは世界における デバイスの位置を 6DoFでトラッキングできます これにより VRコンテンツが 現実世界に対する位置や方向で アンカリングできます シーン認識機能が周囲の 現実世界のインサイトを与えてくれます 提供されたジオメトリや セマンティックの知識を使い コンテンツはインテリジェントに配置されて 周囲と現実的なインタラクションを 行えるようになります 遂に レンダリングエンジンは ARKitの提供する カメラのtransformと 組み込み関数を利用して VRコンテンツを登録し キャプチャされた画像に 合成できるようになりました iOSでARKitのカメラのtransformを使い 3Dコンテンツをレンダリングするのに 最初は SceneKitビューで始めました そのあと導入したRealityKitは 高度に写実的な 物理ベースのレンダリングを行い 周囲に対してオブジェクトを 正確にシミュレーションできる エンジンの土台として レイアウトされているものです 空間コンピューティングを可能にすべく ARKitとRealityKitは十分に発達し オペレーティングシステムに 深いレベルで統合されました 例えば ARKitのトラッキングと シーン認識機能は 今やシステムサービスとして実行され ウインドウの配置から空間オーディオまで すべてを支えています 以前はアプリが負っていた責任も システムが代わりに担っています カメラのパススルーや ユーザーの手のマッティングも 今ではビルトインで アプリはこれらの機能を 無料で取得できるのです もう1つのビルトイン機能は ARKitワールドマップが システムサービスにより 継続的に持続されるので アプリはその作業をする必要が なくなったという事です これで みなさんは心置きなく このプラットフォームのための できる限りアプリやコンテンツを ベストの状態で構築することに 集中できると思います このような機能を 新機能と合わせて このプラットフォームに 導入した例を ここで見てみましょう 例えば これからARKitはアプリに ハンドトラッキングを提供するので 人々は手を伸ばして 直接VRコンテンツとインタラクションでき そのVRコンテンツは周囲のものと インタラクションできます この新しいプラットフォームが提供する 新機能とイマーシブ体験の すべてを利用できるようになるためには iOSのARKitベースの体験を アップデートする必要があります これは ご自身のアプリと 空間コンピューティングのための AR体験を再考する 絶好の機会です この移行の一環として ARKitとRealityKitと一緒に導入した みなさんにも馴染みのある 概念を使っていきます これから話していくのは これらの概念が どう受け継がれ どう進化し そしてみなさんが どう利用できるかについてです では 始めましょう! まずは アプリを 空間コンピューティング用に適合させる 新しい方法をいろいろ確認し 利用可能な新しいコンテンツ ツールを紹介します 次に話すのが RealityKitでして コンテンツのレンダリングや コンテンツとのインタラクションに 使用するエンジンのことです RealityViewによって アプリがどのようにiOSの ARViewのように空間コンピューティングで 活用できるのか見てみましょう そして 人々の周囲に アプリがコンテンツを配置する 様々な方法について話します 多くのiOSアプリは コンテンツの配置に レイキャスティングを使っています ARKitデータとRealityKitを どのように組み合わせて 空間コンピューティングのための レイキャスティングを行うか 例を見ていきます そして最後には ARKitの アップデートをおさらいし iOSの馴染みのある概念を利用する 新しい方法について話します では 今ある体験を 空間コンピューティングに移行する 準備から始めましょう 空間コンピューティングでは 今あるiOSのAR体験が ウインドウの枠を越えて広がります このプラットフォームでは 今のiOS体験を持ち込みたいと 思わせるような アプリ表示の新しい方法が いろいろあります Hello Worldの サンプルアプリをご確認ください ウインドウや 3Dコンテンツを含むUIを 自分の周りの 好きな位置に表示できます このプラットフォームのアプリは デフォルトで共有スペースに送り込まれます 共有スペースではアプリが 隣り合わせに表示されて Macのデスクトップ上での 複数アプリの表示と似ています 共有スペース内でアプリは 1つ以上のウインドウを開いて コンテンツが表示できます それに加え アプリは 3Dボリュームも作成できます 例えば 1つのウインドウは プレイできるボードゲームのリストで 別のウインドウはそのルール そして選んだゲームは ボリュームで開く事ができます ゲームのプレイ中にも Safariのウインドウを開いておいて 戦略について読んだりできます ウインドウやボリュームに 追加されたコンテンツは その枠内に収まっているので ほかのアプリともスペースが共有できます 場合によっては 体験における イマーシブレベルのコントロールを もっとアプリに与えたい場合があり 例えば 部屋とインタラクションするような ゲームをプレイする場合です そのために アプリが開ける 専用のフルスペースがあり そこでは 単一のアプリからの ウインドウと ボリュームと 3Dオブジェクトのみが 表示されます フルスペースに入れば アプリは 更に多くの機能に アクセスできます RealityKitの アンカーエンティティを使って オブジェクトをターゲットして 周囲に配置する事ができ 例えばテーブルや床や 手のひらや手首など 手の一部でさえ その対象です アンカーエンティティが機能するのに ユーザーの許可は不要です ARKitデータもまた アプリがアクセスできるのは フルスペースの場合のみです 許可を得て ARKitが提供するデータは 現実世界の表面や シーンのジオメトリ スケルタルハンドトラッキングで 現実的な物理法則や 自然なインタラクションにおける アプリの機能を拡大しています ウインドウやボリュームやスペースは すべてSwiftUIのシーンタイプです これらについて学ぶ事は まだまだ山ほどあります 手始めとしてこちらのセッションを 確認してください 次は コンテンツを 空間コンピューティングに 持ち込む準備に必要となる 主なステップを見て行きましょう iOSでの印象的なAR体験は 素晴らしい3Dコンテンツに始まりますが このプラットフォームでの 空間体験でも それは同じです 3Dコンテンツと言えば 非常に頼りになる オープンスタンダードの例が Universal Scene Description 略してUSDです USDは実績のあるプロダクトで 単一アセットを作るような クリエイターから AAAタイトルや映画を作成する 大規模なスタジオまでが利用しています Appleは 早期にUSDを採用し 2017年にプラットフォームに 追加して以来 サポートを拡大してきました 今では USDは空間コンピューティングの 3Dコンテンツにとって 中核的な存在です USDアセットの準備ができていれば それを 新しいデベロッパ用ツールの Reality Composer Proに持ち込み 3Dコンテンツの作成や編集 そしてプレビューができます CustomMaterialsを使って iOSの3Dコンテンツを作成している場合は シェーダーグラフを使って 再ビルドする必要があります また RealityKitコンポーネントを 直接UIを通して 編集する事もできます そして最後はReality Composer Proの プロジェクトをXcodeに 直接インポートできるので すべてのUSDアセットやマテリアルや カスタムのコンポーネントを Xcodeプロジェクトに簡単に 組み合わせる事ができます Reality Composer Proの詳細や 空間コンピューティングのための カスタムマテリアルの 作成方法については 素晴らしいセッションが用意されています アプリの表示方法が いろいろある事は見てきたので 今度はプラットフォームの変更により RealityViewが与えてくれる 機能についての詳細を見ていきましょう 先ほど 空間コンピューティングでの アプリのコンテンツ表示について見ました iOSとの主な違いの1つは 異なるエレメントが 隣り合わせに表示できるという事です 3Dコンテンツと2Dエレメントが 隣同士に並んで 機能しているのが分かりますね iOSから移行する際には 馴染みのフレームワークを使って これらをそれぞれ作成します SwiftUIを使って最高の2D UIを構築し iOSと同じようなシステムジェスチャの イベントを取得します RealityKitを使って 空間体験のための 3Dコンテンツをレンダリングします この両方と同時に インターフェイスする方法が RealityViewで 空間コンピューティング独特の 需要に応えるために 導入された新しいSwiftUIビューです RealityViewはまさに SwiftUIとRealityKitの架け橋で 2Dと3Dのエレメントを組み合わせ 印象的な空間体験が 作成できる様になります 表示やインタラクションの 対象にしたいエンティティは すべてRealityViewを使って 保持する事になります ジェスチャイベントを取得し ビューのエンティティに繋げて コントロールできます ARKitのシーン認識機能に アクセスすれば 人々の周囲とのリアルな シミュレーションや RealityKitの コリジョンコンポーネントを使えば 人々の手とさえも リアルなシミュレーションが可能です iOSからの移行で RealityKitの使用が どのように引き継がれるのかを 見る前に RealityKitの Entity Component Systemの 使い方を簡単に見ておきましょう Reality Kitの Entity Component Systemでは 各エンティティは 3Dコンテンツのコンテナです それぞれのエンティティに 異なるコンポーネントが加えられ その見た目と挙動を決定します 例えば モデルコンポーネントは レンダリングの仕方を決め コリジョンコンポーネントは ほかのエンティティとの コリジョンの仕方を決めますが ほかにもたくさんあります Reality Composer Proを使って コリジョンコンポーネントのような RealityKitコンポーネントを準備し それらを自分のエンティティ加えます システムは 要求された コンポーネントを持つ エンティティに作用するコードを 持っています 例えば ジェスチャサポートに 要求されるシステムは CollisionComponentと InputTargetComponentを持つ エンティティにだけ作用します 空間コンピューティングのために RealityViewが使う多くの概念は iOSでのARViewから そのまま引き継がれたものです この2つがどう重なるのかを 見てみましょう どちらのビューも イベントアウェアなコンテナであり アプリで表示したいと思う エンティティを保持します 両方のビューに Gesture Supportを加えて エンティティの選択と エンティティとの インタラクションを有効にできます 空間コンピューティングのための SwiftUIでは エンティティに手を伸ばして選択したり ドラッグしたりできます ARViewもRealityViewも エンティティのコレクションを提供します ARViewはSceneを使っています RealityViewはエンティティを 追加できるContentがあります どちらにもAnchorEntitiesを追加すると コンテンツを現実世界に アンカーできるようになります どちらのプラットフォームでも エンティティを作成して コンテンツモデルをロードし AnchorEntityでそれを配置します この2つのプラットフォームで 1つ大きく違うのは アンカーエンティティの挙動です iOSのARViewはARSessionを使うので アンカーエンティティを機能させる シーン認識アルゴリズムを実行するには アプリはユーザーの許可を 受けなければなりません RealityViewは システムサービスを使って anchorEntitiesを有効にします つまり空間体験では ユーザーの許可無しに コンテンツを 周囲にアンカーする事ができます このアプローチを使うアプリは 内在するシーン認識機能や transformのデータを 受け取りません アプリにコンテンツを配置するための transformデータが無いという事は 何らかの影響を持ちますが それは のちほどOliverが 彼のセクションで話します これまで見た通り iOSから受け継がれた概念には 見慣れたものがたくさんありますが RealityKitが 空間コンピューティングのために 提供する新しい機能もあります これまで話した内容は このプラットフォームで RealityKitを使ってできる事の ほんの一部でしかないので 更に詳細を知りたい場合は 以下のセッションを チェックしてください それではOliverが 更にRealityViewについてと iOSからのコンテンツの持ち込み方について 話してくれます Oliver Dunkley: ありがとう Omid! それでは 既存のコンテンツを 空間コンピューティングに取り込む 様々な方法を見て行きましょう まずは共有スペースからです ウインドウかボリュームに 3Dコンテンツを追加して システムジェスチャを使ってコンテンツと インタラクションできる様にします アセットを表示するには直接 RealityViewのコンテンツに追加します そのためにはエンティティを作成し モデルコンポーネントを中に保持し transformコンポーネントを設定して その位置を決めます またジェスチャサポートを設定して transformコンポーネントを修正できます ここでビューのコンテンツに 追加されたすべてのエンティティは 空間の原点に対して 相対的に同じ空間内に存在するので お互いにインタラクションできるように なっているわけです 共有スペースでは コンテンツを周囲に アンカーする事はできません では アプリをフルスペースに 移した場合のオプションについて 考えてみましょう 共有スペースでの主な違いの1つは 今度はアプリが コンテンツを 人々の周囲に追加でアンカーできる事です ここでのコンテンツのアンカリングには 2通りあります まずはRealityKitのAnchorEntityで アプリ内のARKitデータを使用する 許可を要請せずに コンテンツを配置する方法を 見ていきましょう RealityKitのAnchorEntitiesで システムが探し出して 自動的にコンテンツをアンカーする ターゲットを特定できます 例を挙げると 目の前にあるテーブルの上に 3Dモデルを置くには RealityKit AnchorEntityを使って ターゲットをテーブルに設定できます iOSと違い AnchorEntitiesは ユーザーの許可を促さずに使えます アプリ内にあるAnchorEntityの 土台となるtransformsを共有しない事で 人々のプライバシーが守られます 備考:これは異なるアンカーエンティティの 子エンティティ同士は お互いに気づいていないという事です アンカーエンティティで新たに 手をターゲットにできる様になり これにより興味深いインタラクションの まったく新しい領域が開けました 例えば コンテンツを 誰かの手のひらにアンカーし 手の動きを追わせる事ができます これはすべてシステムが行い アプリにその人の手の実際の位置を 知らせる必要はありません AnchorEntityはアプリのために プライバシーを尊重しつつ コンテンツを人々の周囲に 素早くアンカーできる方法を提供します フルスペースに戻ると やはりARKitを利用して 人々の周囲に関する システムレベルの知識を組み込めます これにより 自分自身のカスタムの 配置のロジックが構築できます その仕組みを見てみましょう iOSと同様にアプリは シーン認識データの アンカリングのアップデートを受けます このアンカーデータを アプリのロジックに統合して あらゆる種類の素晴らしい体験を 達成する事ができます 例えば 平面の境界を使い コンテンツをその真ん中に 配布する事ができます あるいは 平面とその分類を使って 2つの壁と床の交差点を探し 部屋のコーナーを見つける事もできます コンテンツの置き場所が決まったら ARKitがトラッキングをするための ワールドアンカーを加え エンティティのtransformコンポーネントを アップデートのために使います これにより 土台となるワールドマップが 更新されても コンテンツは 現実世界にアンカーされた ままであるのに加え アンカーの永続化への扉を開くわけですが それについては このあと見ていきます スペースに加えられた すべてのエンティティは お互い同士 そして周囲のものとも インタラクションできます これがすべて可能なのは scene understandingアンカーが 空間の原点と相対的なtransformsと 一緒に配布されるからです ARKit機能を使うには ユーザーの許可が必要です ARKitデータをアプリロジックに 統合するだけで 更に高度な機能が有効になると 分かりましたね ここまでは アプリにコンテンツを 配置させる事についてでした 今度は 人々に配置を誘導させる 方法について見ていきましょう iOSでは レイキャスティングを使って 2Dの入力を3Dポジションに変換しました この新しいプラットフォームでは 2Dと3Dを繋ぐ橋は もう必要無く 手を使って 直接 体験に対して 自然にインタラクトできます レイキャスティングはなおもパワフルで 腕の長さ以上の所まで 人々の手が届くようにしてくれます レイキャスティングの設定には 様々な方法があります 基本的にはレイキャストの対象になる RealityKitのコリジョンコンポーネントを 設定する必要があります コリジョンコンポーネントの作成は ARKitのメッシュアンカーで 人々の周囲に対してレイキャストする 方法もあります 空間コンピューティングのための レイキャスト方法の2つの例を見ましょう まずはシステムジェスチャの使用で 2つ目は手のデータの使用です 位置が取得できたら ARKitのworldAnchorを配置し コンテンツがアンカーされた 状態を維持します 次の例を考えましょう アプリの中心的内容が 模型の3Dアセットを 配置する事にあるとしましょう この特殊なシナリオでは 模型製作プロジェクト用として 誰かがアプリを使って 仮想の船を作業台に置きたいと 考えるかもしれません こちらが船を置くための作業台です まずは RealityViewを空っぽにします ARKitのシーン認識機能が提供する メッシュアンカーを使って 周囲を表示します 提供されたジオメトリや セマンティック情報を使います シーン再構築データのためのメッシュは 一連の塊で送られるという事を 覚えておきましょう このメッシュの塊を表示する エンティティを作成し メッシュアンカーのtransformを使って このエンティティを フルスペースに正しく配置します このエンティティには ヒットテストを行う対象の コリジョンコンポーネントが必要です RealityKitの ShapeResourcesメソッドを使って meshAnchorからエンティティのための コリジョン用の形状を生成します そしてヒットテストをサポートするために 正しく配置されたエンティティを加えます 周囲のすべてを表示するために 受け取ったメッシュの それぞれの塊のために エンティティとコリジョン コンポーネントを構築します シーンの再構築が仕上がると メッシュにアップデートを受けるか 塊が削除されます これらの変更に関しても エンティティをアップデートする 準備をしておくべきです これで 周囲を表示する エンティティのコレクションができました これらのエンティティはすべて コリジョンエンティティを持ち レイキャストのテストをサポートできます まずは システムジェスチャを使った レイキャスティングを見て 次に 手のデータを使った例を 見ていくことにしましょう システムジェスチャを使って 船をレイキャストし その配置場所を決められます ジェスチャがインタラクションできる エンティティは CollisionとInputTarget両方の コンポーネントを持つものだけなので それぞれのメッシュエンティティに それらを付け加えます RealityViewに SpatialTapGestureを加える事で エンティティを見てタップすれば 人々はレイキャストできます この結果として生じるイベントが保有する ワールドスペースでの位置は 人々がタップする時に 見ている場所を表しています システムジェスチャを使う代わりに ARKitのハンドアンカーを使って レイを構築する事もできます もう1度 元に戻って このオプションを見て見ましょう 人々が指差す場所を知るには まず その人の手を 表示する必要があります ARKitの新しいハンドアンカーで 知るべき事がすべて分かります 指の関節の情報を使って レイの原点と方向を クエリのために構築する事ができます これでレイの原点と方向が決まったので シーンのエンティティを対象に レイキャストができるようになりました 結果としてのCollisionCastHitは ヒットされたエンティティと その位置及び面法線を提供します どこにコンテンツを置くか その位置が決まったら ワールドアンカーを追加し ARKitが継続的にこの位置を トラッキングできるようにします ワールドマップが再編されると ARKitはこのワールドアンカーの transformをアップデートします 船のモデルをロードする 新しいエンティティを作成し ワールドアンカーのアップデートで そのtransformをセットして ユーザーが置きたい場所に位置付けます 最後にコンテンツにエンティティを加え 作業台の上でレンダリングします 追加したワールドアンカーを ARKitがアップデートするたびに 船のエンティティのtransform コンポーネントをアップデートし 現実世界にアンカーされたままだと いう事を確かめます それだけです! 手を使って周囲にある位置を指差し そこにコンテンツを置きましたね レイキャスティングはコンテンツの 配置に役立つだけでなく コンテンツとのインタラクションにも 役立ちます 仮想の船のレイキャストを どう実現するか 見てみましょう RealityKitのコリジョンコンポーネントは 非常にパワフルです 船のエンティティに 適切な コリジョンコンポーネントを加えるだけで そのエンティティをコリジョンに 参加させる事ができ それを Reality Composer Proが 手伝ってくれます 船のコリジョンコンポーネントを有効にして 最新の手の関節の位置から 新しいレイを構築したら 別のレイキャストを行い ユーザーが船か作業台のどちらを 指差しているのか判断できます 先ほどのいくつかの例では RealityKitの機能を ARKitの シーン認識機能と 組み合わせたパワーと多用途性で 本当に説得力のある体験が 構築できると分かりました ARkitの使い方は空間コンピューティングに とってどう変わったでしょうか 基本的にiOSの場合と同様 ARKitは今でもアンカー情報の更新を 受け取るセッションを 実行する事で機能します セッションをどう設定して実行するか アンカー情報の更新をどう受け取り ワールドアンカーを持続するかが このプラットフォームでは変わっています では見てみましょう! iOSではARKitは選べる設定を いくつか提供します 各設定には体験に必要な 機能がまとめられています ここでの例では ARWorldTrackingConfigurationを選び メッシュにはsceneReconstructionを 平面にはplaneDetectionを有効にします そしてARSessionを作成し それを選んだ設定で実行します この新しいプラットフォームでは 各シーン認識機能に ARKitがデータプロバイダを 公開するようになりました ハンドトラッキングは ARKitの提供する新しい機能で 専用のプロバイダも取得します 各データプロバイダのイニシャライザは プロバイダインスタンスの設定に必要な パラメータを受け取ります プリセットされた設定の カタログから選ぶ代わりに アプリに必要なプロバイダの 好みに合わせたセレクションが 入手できるようになりました ここの例では SceneReconstructionProviderを選んで メッシュアンカーを受け取り PlaneDetectionProviderを選んで 平面アンカーを受け取ります プロバイダを作成し 受け取りたいと思う メッシュ分類と平面タイプを初期化します そして ARKitSessionを作成し インスタンス化されたプロバイダで それを実行します セッションの設定方法が 簡易化されたのが分かったので これらの新しいデータプロバイダが アプリのARKitデータの受け取り方を 実際にどう変えたか見てみましょう iOSでは単一のデリゲートが アンカーとフレームアップデートを 受け取ります アンカーは集約されてARFrameで送られ カメラフレームとアンカーの 同期を維持します カメラのピクセルバッファの表示や トラッキングされたVRコンテンツの 登録やレンダリングのための カメラのtransformの使用は アプリが責任を持って行う事です メッシュや平面アンカーは ベースアンカーとして送られ 曖昧さを取り除いて それらを区別するかどうかは みなさん次第です この新しいプラットフォームでは アンカー情報の更新を送るのは データプロバイダです こちらは前もって設定した プロバイダです ARKitSessionを実行すると 各プロバイダは即座に アンカー情報の更新を 非同期で公開し始めます SceneReconstructionProviderが MeshAnchorを planeDetectionProviderが PlaneAnchorを与えてくれます 曖昧性解消は必要ありません! アンカー情報の更新は 入手可能になると直ぐに送られ ほかのデータプロバイダからは 切り離されています ARFrameはもはや提供されない事を 覚えておきましょう 空間コンピューティングのアプリは コンテンツの表示のために フレームやカメラのデータは不要で システムによって自動的に行われます アンカー情報の更新をARFrameで パッケージ化する必要が無く ARKitはそのような更新を即座に送れるので レイテンシが下がりアプリが素早く 人の周囲での情報更新に 反応できるようになります 次はWorldAnchorの永続化について 説明していきます この変更はきっと大歓迎ですよ! レイキャスティングの例では ワールドアンカーを使って VRコンテンツを現実世界の位置に 配置及びアンカーしました アプリはこれらのアンカーを持続し デバイスが同じ周囲に戻ったら 自動的にそのアンカーを また受けるようにできます まずは iOSでの永続化について 簡単に復習しましょう iOSではワールドマップとアンカーの 永続性に対処するのは アプリの責任になっています これには追加のアンカーで ARKitのワールドマップを 請求及び保存し 適切な時に正しいワールドマップを リロードするためのロジックを追加して 再ローカリゼーションの終了を待ってから 以前に持続されたアンカーを受け そしてアプリ体験を 継続していく事が含まれます この新しいプラットフォームでは システムが継続的に バックグラウンドでワールドマップを持続し シームレスなロードやアンロードも 既存のマップの作成や再ローカライズも 人々が動き回るのに合わせて 行われています アプリはマップに対処する必要が無く システムに任せられます! あとはワールドアンカーを使って VRコンテンツの位置を持続する事に 集中すればいいのです コンテンツを置く時には 新しいWorldTrackingProviderを使って WorldAnchorを ワールドマップに追加できます システムが自動的に それを保存してくれます WorldTrackingProviderが トラッキング状況を更新し これらのワールドアンカーを transformします WorldAnchor識別子を使って 対応するVRコンテンツの ロードやアンロードができます iOSからお馴染みの ARKitの原則に対する更新を いくつか取り上げましたが まだまだ探求する事項は たくさんあります! コードの例を使った 詳細な話を聞きたい方は 是非「空間コンピューティング向けの ARKitについて」をご確認ください では まとめに入ります! 本セッションでは ARKitと RealityKitの概念が iOSからどのように進化してきたのか どの変更点を考慮すべきか 詳細を学ぶには どのセッションを 見るべきかという事について ハイレベルでの説明をしました このプラットフォームは iOSアプリが扱わなければならなかった 多くのタスクを引き受けるので みなさんは既に馴染みのある フレームワークや概念を使って 素晴らしいコンテンツや体験を 構築することに集中できます 空間コンピューティングや その素晴らしい全機能を活用して みなさんのアプリが進化するのを 楽しみにしています! ご視聴ありがとうございました! ♪
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。