ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
マルチデバイスワークアウトアプリの構築
HealthKitを使って、Apple WatchベースのワークアウトアプリにiPhoneを関連づける方法をお話しします。デバイス間でワークアウトをミラーリングし、サイクリングデータタイプを備えてライドに出る方法をお見せします。さらに、iPad用のHealthKitについても紹介します。
リソース
関連ビデオ
WWDC23
WWDC21
WWDC20
-
ダウンロード
♪♪ ♪ みなさん ようこそ 私は Sirishaです HealthKit Teamのエンジニアです 今ではユーザーの健康獲得および 健康維持のためのヘルスケアアプリや フィットネスアプリが App Storeには何百もあります そのすべてに対して HealthKitは一元化された 暗号化データベースを提供しているので みなさんの素晴らしいアプリは ユーザーのヘルスケアデータを ひとまとめに表示できます ワークアウトAPIは HealthKitの提供する 非常にパワフルな機能の1つで とても素晴らしいものです 私のサイクリングワークアウトを Apple Watchで追跡する サンプルのサイクリングアプリを このビデオのために作りました アクセスを容易にするため iPhoneをハンドルに装着し サイクリングコンピュータとして 使いたいと思います そうすれば ハンドルから 手を離さなくても Apple Watchに表示されている 生の測定値を素早く簡単に 見ることができます HealthKitの導入する 新しいワークアウトAPIは Apple WatchとiPhone間で アクティブなワークアウトセッションを コントロールしミラーリングします 新しいデータタイプが追加された サイクリングワークアウトのサポートの アップデートにより 追跡できる対象としてサイクリング速度や パワーやケイデンス そして機能的しきい値パワー あるいは FTPと呼ばれるものが追加されました これだけではありません HealthKitとヘルスケアアプリが iPadでも利用可能になりました iPadのiCloudアカウントに みなさんのお客様がサインインすれば HealthKitを通してiPadに同期された ヘルスケアデータが見られます さらにリッチなヘルスケアと ワークアウト後の体験が 提供できるようになります 今日 サンプルアプリを使って デモンストレーションを行うのは Apple Watchで実行されているワークアウトを ペアリングされているiPhoneに ミラーリングする方法です そしてコードを追加して 新しいサイクリング測定値を収集し どのようにすべてのデバイスに 同期するのかをお見せします そして最後に iPadでのワークアウト表示に必要な 認証についての詳細を説明します それでは Apple Watchと iPhoneとiPadがどのように 一緒になって素晴らしいワークアウト体験を 与えてくれるのかを見てみましょう 私の例ではApple Watchで ワークアウトを実行しています ワークアウトセッションを 中心のオブジェクトとして扱い スタートやポーズやストップの ライフサイクルを管理します ワークアウトセッションに馴染みのない方に お勧めする以前のトークは 「New ways to work with Workouts」と 「Apple Watch用ワークアウトAppの構築」です このワークアウトをiPhoneから コントロールするには ワークアウトセッションを Apple WatchからiPhoneに 取り込む必要があります そのために使うのがHealthKitの 新しいミラードセッションAPIです 私のApple Watchで ミラードセッションが始まった時 iPhoneのアプリが実行されていなければ バックグラウンドで起動され ワークアウトセッションが 渡されます セッションを受け取るにはiPhoneのアプリが 準備されている状態でなければなりません なので 最初にHealthStoreを使って iPhoneアプリの起動シーケンスに ハンドラを設定します これでApple Watchから セッションを受け取る準備ができます iPhoneアプリが起動すると 起動がフォアグラウンドであれ バックグラウンドであれ Apple Watchから渡される アクティブワークアウトセッションを 受け取るために MirroringStartHandlerを 実装します 次にサイクリングの アクティビティタイプで ワークアウトコンフィグレーションを 作成します そして既存のstartWatchApp APIを iPhoneアプリ内で呼び出し ペアになっているApple Watchの アプリを起動して ワークアウトコンフィグレーションを 渡します iPhoneからコンフィグレーションを 受け取ることで Apple Watchのアプリで ワークアウトセッションが作成できます Apple Watchのワークアウトセッションは プライマリセッションと呼ばれます iPhoneのワークアウトセッションは ミラードセッションと呼ばれます 実際に見てみましょう iPhoneアプリでワークアウトを始めると iPhoneから送られた コンフィグレーションで Apple Watchのアプリが起動します 今のところ順調ですね このAPIが非常に便利なのは HealthKitがプライマリと ミラードの両セッションの状態を いつでも同期してくれるという点です 例えば Apple Watchの プライマリセッションが 一時停止されれば iPhoneのミラードセッションも 一時停止されます アクティブワークアウトセッションを iPhoneにコピーするだけでなく HealthKitはデバイス間で 関連するワークアウトデータを 交換する新しいAPIも提供しますし イベントの生成に加えて アクティビティを開始したり 終了する機能も提供します これでプライマリセッションは準備完了し 私のiPhoneがハンドラを受ける 準備ができたので startMirroringToCompanionDeviceを 呼び出して Apple Watchのミラーリングを始め プライマリセッションを開始します Apple WatchにstartMirroringが 呼び出されると HealthKitはバックグラウンドで ペアとなるiPhoneアプリを起動し ライブアクティビティをスタートし ハンドラを呼び出して ミラーリングを始めるまでに 10秒の猶予が与えられます これでApple Watchのセッションを開始し iPhoneにコピーができました 今度はデバイス間でどのように セッション状態が 通信されるかについてです この例のアプリでユーザーに表示したいのは ワークアウトセッションの状態で セッションが実行中なのか 一時停止中なのか などです そこでApple WatchとiPhoneに セッションデリゲートを設置し セッション状態の更新や 生成されたイベントをモニターします iPhoneアプリにミラーされた セッションを取得するために レファレンスを保持しておくのが 重要である事を覚えておきましょう Apple Watchで startActivityを呼び出すと プライマリセッションを開始し セッション状態を実行中に変更します この状態の更新が Apple Watchのアプリに送られるのは プライマリセッションの デリゲートに設定されているからです iPhoneアプリでもミラーされた セッションデリゲートを通して 状態の更新を受け取ります アクティブワークアウトセッションを iPhoneに送って セッションの変更をモニターするのは こんなにも簡単です 実際に見てみましょう Apple Watchでワークアウト セッションが始まると iPhoneとApple Watchの 一時停止ボタンが有効になり ワークアウトセッションが 実行中だと示しています プライマリセッションと ミラードセッション間での セッション状態の同期に加えて 一時停止や再開などのイベントも 生成し送ることができます ワークアウトセッションを Apple Watchで一時停止すると Apple Watchのアプリと iPhoneのミラードセッションの両方が それぞれのセッションデリゲートを通して 一時停止のイベントについての 通知を受けます 実際にはこのようになります Apple Watchでワークアウト セッションを一時停止すると 両デバイスの再開ボタンが有効になります ワークアウトセッションが iPhoneにもあるので ワークアウトをiPhoneからも コントロールできます iPhoneのミラードセッションを 再開すると Apple Watchのプライマリ セッションデリゲートは 状態変化の通知を受け ミラードセッションデリゲートが 再開イベントを行います 次に見ていくのは 今年HealthKitが導入した 新しいサイクリング機能の 利用方法についてです サイクリング速度やパワー ケイデンスなどの新データタイプや このようなデータタイプを 提供するようデザインされた Bluetoothデバイスに 直接接続する新しい機能で 心拍数モニターが心拍数を収集し ヘルスケアデータベースに 書き込む機能と似ています 最後は このようなBluetoothデバイスから 収集されたデータに基づき Apple WatchのHealthKitが 自動的にFTPを計算して保存する機能です 私の自転車はパワーとケイデンスを 収集するパワーメーターがあり Apple Watchにペアリングされています センサーがデータを Apple Watchに書き込みますが アプリを拡張してそのデータを 走行中のiPhoneディスプレイに 送りたいと思います そのためにはまず 奨励される ワークアウトビルダーAPIの beginCollectionを使って サイクリング測定値を集め始めます そしてsendData(toRemote WorkoutSession) APIを使って データを送ります サイクリング測定値を送るのに Apple Watchの Bluetoothセンサーから受けた 速度とケイデンスとパワーのデータを パッケージ化してから プライマリセッションの sendData(toRemoteWorkoutSession)を 呼び出します その結果 iPhoneのミラード セッションデリゲートが didReceiveDataFromRemoteDeviceのコールを パッケージデータと一緒に受け取り それをiPhoneでアンパックし 表示できます 私のサンプルアプリでApple Watchから サイクリング測定値を送ると iPhoneアプリでどのように 表示されるか見てみましょう sendData(toRemoteWorkoutSession)を使えば データの送付は逆方向も可能で iPhoneからApple Watchにも送れます 私のサンプルでは次のライドの時に 水分補給計画を改善できるよう ワークアウト中の水分摂取量を 追跡したいと思います そのために ミラードセッションで 私が消費した水分量をパッケージ化して iPhoneからApple Watchに送ります プライマリセッションの デリゲートメソッドである didReceiveDataFromRemoteDeviceが パッケージデータで呼び出され それをApple Watchで アンパックして保存します サンプルアプリではこのようになります 私が水を1オンス飲むたびに ボタンをタップすると それがApple Watchに送られ そこで摂取した水の合計量が表示されます ワークアウト中にはいつでもセッションの ミラーリングを中止できますが stopMirroringToCompanionDevice APIを呼び出すだけです このメソッドを呼び出すと 対になっているデバイスに データを送るのを中止し ミラードセッションの didDisconnectFromRemoteDevice WithErrorデリゲートメソッドが 呼び出されます サイクリング完了時には プライマリセッションを終了し ビルダーを終了する事で Apple Watchに保存します Apple Watchにワークアウトの サンプルを保存したあとは もう一方のデバイスに同期され ワークアウト後のサマリーが さらに詳細なグラフや視覚表現を使って 表示できます 良いですね! 次のステップでは iPadで実行されるアプリでの ワークアウト後のサマリーです Apple Watchにたった今 保存したワークアウトは 自動的にiPadに同期されるので ワークアウトデータの視覚化には ほんの少しの変更だけで済みます HealthKitデータにアクセスする 他のアプリと同様に まずiPadの私のアプリも ユーザーの認証が必要です アプリが認証を要求する時は 必要な場合に認証シートが表示されます iPadでは アプリに複数の ウィンドウシーンがあるかもしれないので 認証シートが適切なシーン上に 表示されているのを 確認することが重要です 私のアプリでこれを行うには まず HealthKitUIフレームワークを インポートします 読みたいデータタイプを特定します activeEnergyやcyclingSpeedや PowerやCadence heartRateやworkoutSamplesなどです SwiftUIアプリを作成したので HealthKitUIフレームワークから 新しいhealthDataAccessRequest view modifierを使い 共有して読みたいデータタイプと トリガーを渡します トリガーをtrueに設定すれば アプリに認証シートが表示されます UIKitアプリで設定するのは healthStores.authorizationView ControllerPresenterプロパティで 認証のリクエストでは ToShareとToReadのタイプです これで認証に関しては無事に済んだので iPadでのワークアウトを見てみましょう 素晴らしいですね! これでワークアウトデータに アクセスできますし iPadのスクリーンサイズをフルに活用して アプリの体験をよりリッチなものにできます 驚くほど簡単ですよね? これでiPhoneからの ワークアウトの開始やコントロール Apple Watchからのリッチな サイクリングデータの収集と同期 そしてiPadでのワークアウトの 詳細の閲覧が可能になりました まとめます 必ずアプリをアップデートして iPadでの認証をサポートしましょう フィットネスアプリが サイクリングを含む場合は 新しいデータタイプの サポートが追加できます iPhoneやApple Watchでの ワークアウトアプリを作成するなら 新しいミラードセッションAPIを チェックしてみて 両デバイス間でのデータの ミラーリングや 状態コントロールを始めましょう アプリに必要な場合はsync identifierと バージョン番号を使って サーバーとユーザーのデバイス間に データの一貫性を保ちましょう そして最後になりますが フィードバックをお待ちしています 世界の健康を維持のための 素晴らしいアプリを作成し続けられるよう みなさんが必要とする機能を サポートし続けたいと思います ご視聴ありがとうございました ♪
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。