ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
空間コンピューティングにおけるCore Locationの概要
Core Locationがどのようにアプリの現在地を見つけるのに役立つかを見ていきます。プライバシーを尊重しながら、人の位置情報を利用する空間コンピューティングのアプリを構築する方法をご紹介します。また、アプリが位置情報へのアクセスを要求する方法や、Core Locationが互換性のあるiPadやiPhoneアプリからの要求をどのように適応させるかについても学びます。
リソース
関連ビデオ
WWDC23
WWDC19
-
ダウンロード
♪♪ ♪ こんにちは! Core Locationのエンジニア Ilya Veygmanです 今日は 空間コンピューティングの Core Locationについてお話しします Appleのエコシステムに 初めて参加する人も 長年App Storeを開発している人も このシステムでどんなことができるのか 多くの疑問を持っていることでしょう xrOSはあなたの想像力の結晶を 見せるのに最適で 一方 Core Locationは 現実世界のアンカーとなります 今日は Core Locationを使った その方法について お伝えします Appleのデベロッパーエコシステムに 初めて参加するみなさん ようこそ! まず アプリに位置情報を追加するのが いかに簡単かを示すために 簡単な例から始めます 経験豊富なデベロッパにとって 自分の基本を見直すことは 決して損にはなりません それでは 同僚のセッション 「Discover streamlined location updates」 に関連するデモアプリケーションの サンプルコードを見てみましょう このアクターでは CLLocationUpdateに ライブアップデートをリクエストし それが利用可能になると 非同期でここに送られてきます ロケーション更新APIの詳細については このデモに関連するセッションを 参照してください アプリは 位置情報などの機密情報に アクセスする前に ユーザーの許可を求めなければならないので ここではそのために このAPIを呼び出しています この単純な例では ビューの開始時に実行します また Build Settingsのアプリの情報に この文字列が 設定されていることを確認する 必要があります 繰り返しますが アプリは位置情報などの 機密情報を取得する前に ユーザーの許可を得なければならず この文字列はその理由をユーザーに 説明するためにあります これは後に このアクセスを要求する ユーザーに現れる プロンプトに表示されます では シミュレーターで実行すると どう見えるか見てみましょう このアプリケーションでは 単純な例なので すぐに位置情報へのアクセスを要求します あなたのアプリが常に そうであるとは限りません 個人情報へのアクセスを許可するかどうかを 尋ねるプロンプトが 表示されるのが見えます さて次に進む前に Core Locationが このシステムでユーザーのプライバシーを どのように扱うかについて もう少しお話しましょう 私たちのデベロッパーエコシステムに 初めて参加される方でも Appleがユーザー体験において プライバシーを重視していることは すでに知っているかもしれません ロケーションアクセスも この例外ではありません ジオロケーションに関するアップデートを 取得する前に まずユーザーに位置情報への アクセス許可を求める必要があります ユーザーの同意なしに位置情報の更新を 受けることはありません ロケーションマネージャーを作成し requestWhenInUseAuthorizationを起動し アプリのInfo.plistに使用説明文字列を 設定することで このシステムで同意を求めることができます ここでもまた アプリが 位置情報を知る必要がある理由を ユーザーに伝えます 最後に このアクセスを求めるのは アプリケーションが実際に それを必要とするときだけにしてください この方がプライバシーの観点から 優れているだけでなく ユーザーがアクセスを許可する 可能性も高くなります サンプルコードでこのようにしたのは 非常に単純な例で すぐに位置情報の更新を 要求し始めたからです では このプロンプトはどのように見え 何を示しているのでしょうか? ユーザーには アプリから ここにあるような プロンプトが表示されます すでにiOS開発の経験がある人なら 見覚えがあるかもしれません ユーザーは アプリを使用している間 このセッションだけの位置情報アクセスを 許可することも 完全に拒否することもできます また iOSと同じように ハイライトされたボタンを使って 正確な位置かおおよその位置かを アプリケーションに 知らせることもできます この正確な位置とおおよその位置が どのように機能するかについては 若かりし頃の私がホストを務めた WWDC20の 「What's new in location」を 参照してください では デモに戻ります このアプリケーションに正確な 位置情報へのアクセスを許可し 使用中に承認すると 位置情報の更新が開始され アプリが位置情報の更新を 確認できます では 私が言った"正確な位置"とは 一体どういう意味でしょう? つまり ヘッドセットはどれだけ正確に ユーザーの位置がわかるのでしょうか? ユニット単体では Macと同じような 精度を期待する必要があるので 約100メートルということになります 近くのレストランや公園 その他のアトラクションを 探すような用途には十分でしょう しかし iPhoneが近くにあれば このデバイスは これら2つのデバイス間の 既存の接続を活用し ヘッドセットから得られる位置情報の精度を iPhoneと同じレベルまで向上できます お使いのデバイスは Appleの他の ハードウェアと組み合わせることで さらに優れた機能を発揮します これにより このような 空間コンピューティングシステム上で 動作する 正確な天気予報の更新や ジオタギングなど まったく新しいアプリケーションの幅が 広がります さて 新参者も経験豊富なデベロッパも ユーザーがアプリを使用している間 アプリは位置情報の更新を 受ける対象となるという 私の言葉を聞いたことがあるでしょう これが何を意味するかは iPhoneやWatchでは極めて簡単ですが 我々にとってはどうでしょうか? 結局のところ ユーザー体験は iPhoneやWatchとは大きく異なります では そのことについて話しましょう iOSでフォアグラウンドアプリが いつどのように使用されていると みなされるかについて議論した 2019年の「What's New In Core Location」に 話を戻しましょう iPhoneのようなプラットフォームでは これはごく当たり前のことです 常に1つのアプリしか フォアグラウンドにできません また アプリがバックグラウンドに なった後も 位置情報の更新を取得できる 短い猶予期間があります では ここはどうでしょうか? このプラットフォーム上の アプリケーションは 完全に没入型にすることもできますし ウィンドウのようなものの中で アプリを実行させることも できます "Core Locationの扱いは?" と疑問に思っていることでしょう 完全な没入体験のためには これは簡単なことです ユーザーがアプリケーションを 実行している限り ユーザーがアプリが位置情報を 取得することに同意したと仮定して そのアプリは使用中であり 位置情報の更新を取得する対象となると みなします このシステムでは Core Locationは ユーザーが 直近でみたアプリに限り 位置情報をアプリに提供します つまり このプラットフォームでは ユーザーが位置情報を提供することに同意し ユーザーが最近そのアプリを見た場合 ウィンドウ内で実行されているアプリは 位置情報の更新を受ける対象となると 考えます もう少し具体的に検証してみましょう これらのアプリの両方が 使用中にユーザーの位置情報に アクセスすることを許可されたとします ユーザーがどちらのアプリとも やりとりしたり見たりしていない限り どちらも位置情報の更新を受けることは できません ユーザーが左側のアプリを見始めた場合 つまり左側のアプリとインタラクションし始めた場合 左側のアプリは位置情報の更新を 受けることができますが 右側のアプリは たとえユーザーの 周辺視野にあったとしても 位置情報の更新を受けることが できません そして ユーザーが右側のアプリなど 別の場所を見るか 2つのアプリを同時に 見ることができるように移動させるまでは この状態が続きます iOSと同様に Core Locationがアプリを 使用中でないとみなすまでの 猶予期間もあります つまり ユーザーが左側のアプリを見た後 右側のアプリを見てから 他の場所を探した場合 Core Locationがこれらのアプリを 使用中ではないと判断するまでに 数秒という短い時間 両方のアプリが 位置情報を取得できる状態が 続くことになります このような位置情報アクセスのモデルは ユーザーのプライバシーを尊重しつつ このプラットフォームで良い体験を 提供するものだと感じています 特にこのデバイスは バックパックの中など どこかにしまっておくものではなく 相互作用的に使用されることを 想定しているため ユーザーが許可や知識なしに位置情報を 追跡されることはありません そのため アプリが起動していない間は 位置情報の更新を 受けることができません 同様に モニタリングAPIからの更新も 配信されません そこで Appleプラットフォーム向けに 位置情報を利用するアプリを すでに持っているデベロッパの多くが おそらく疑問に思っているであろう 別の話をしましょう: 互換モードで実行した場合 自分のアプリは どのように動作するのでしょうか? iPhoneやiPadのアプリを xrOSを搭載したデバイス用に コードを変更せずに実行すると どうなるのでしょうか? そのことについて少しお話ししましょう すでに述べたように 「使用中」の 「使用中らしさ」は ユーザーが最近どこを見たかに由来します また アプリはユーザーが見ているときだけ 位置情報を取得することができます では Always認証を要求する アプリについてはどうでしょうか Alwaysを要求するアプリは 使用中にリクエストが認証要求に リダイレクトされます 同様に AlwaysがSettingsの下にある アプリケーションの オプションではないことがわかります このシステムでの位置情報は アプリが使用されている間の 単発のまたは連続更新に最適です 互換性のあるiPhoneまたはiPadアプリが 地域モニタリング または 新しいCLMonitorを使用している場合 イベントは配信されません iOSアプリが 特定のAPIが 常にサポートされていると 仮定するような方法で設計されており 例えば APIをモニタリングしても イベントが配信されない場合 予期しない動作をするかもしれないかどうか 考えてみてください 同様に アプリが実行されていない間 バックグラウンドで位置情報の更新を 取得することに 依存しているかどうかを検討してください API全般についてもっと知りたい方は 特に今年の新情報 とりわけエコシステムに 初めて参加される方は 私の同僚による他の2つのセッションや 過去のセッションをご覧になることを おすすめします 「Discover streamlined location updates」では 特に位置情報の更新を取得することを 推奨する方法や Swiftの並行処理とAPIを より互換性のあるものにする方法など APIの新しい開発について説明しています 「Meet Core Location Monitor」では モニタリングAPIの新展開や 地理的な出入りなどのイベントを アプリに通知する手段を 再考した方法について さらに説明しています もし位置情報がアプリにとって 重要なものであるなら これらのセッションはきっと 有意義な時間になるはずです xrOSは みなさんの多くが長い間 待ち望んでいたであろう 実に素晴らしい体験を 提供してくれます 私たちも同様で このデバイスのために 特別に設計されたアプリと 互換性のあるiPhoneやiPadアプリの両方で 可能な限り最高の ユーザー体験を提供できるよう 努力してきました また 可能な限り最善の方法で ユーザーのプライバシーが 尊重されるようにし 私たちのストアの既存のアプリを お持ちの方にとって このプラットフォームへの移行が 可能な限りスムーズになるように したいと考えています とはいえ 地域の変更や訪問などの イベントに関する通知を 受け取らないシナリオで 互換性のあるアプリがどのように 動作するかを考えてみてください Core Locationに特化したセッションも 空間コンピューティング全般に関する セッションも 興味をそそられるものがあれば ぜひ見ることをおすすめします ありがとうございました 残りのWWDCも楽しんでください ♪
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。