ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
HealthKitの最新情報
HealthKitの最新機能をヘルスケアとフィットネスのAppに取り入れます。ここでは、睡眠段階の詳細な睡眠データを取得する方法、強化されたWorkout APIでトライアスロンやインターバルワークアウトをトラッキングする方法、プライバシーを保護しながら、物理的な処方箋画像などの眼科処方箋をHealthKitに直接保存する方法を紹介します。
リソース
-
ダウンロード
♪ 穏やかな音楽 ヒップホップミュージック ♪ ♪ こんにちは、WWDCへようこそ 私はKarimと申します HealthKitのエンジニアをしています HealthKitフレームワークは 優れた健康体験を 構築するための 基盤を提供し Apple Watchは あなたを見守る 多くの健康と安全に関する 機能を搭載しています 最も人気な機能は 睡眠トラッキングであり より詳細な睡眠データ を取得できるよう アップデートを行っています また 今年はHealthKitの 素晴らしい新機能が 追加されています Swiftの非同期で データのクエリが簡潔にできるよう APIを強化しました より豊かなワークアウトの表現で ワークアウトを向上させます そして 眼科の処方箋の デジタルコピーなどの 保存をサポートする 機能を追加しています これらの更新内容や Appで どんな活用ができるのかを 説明するのを楽しみにしています では始めましょう 睡眠は 私たちの身体と 心を充電するために とても重要なことであり Apple Watchを使って 睡眠スケジュールを管理し 睡眠を理解し 改善するための 洞察を得ることができます 今年は 睡眠の段階を 導入することで 睡眠のトラッキングを より良いものにします Apple Watchは あなたが眠っている際 すべての異なる睡眠段階を 自動的に記録して このデータは HealthAppからアクセスでき HealthKitに保存されます もちろん Appで睡眠段階のデータを 読み込み 保存することも可能です Apple WatchやAppで 保存された睡眠データは HealthKitではsleepAnalysis という識別子を持つ カテゴリーサンプルにより 示されています レム睡眠 コア睡眠 深い睡眠 この3つの睡眠段階を サポートします 睡眠データをHealthKitに 保存する際は 睡眠段階において それぞれの連続した期間に 1つのサンプルを 作成してください スリープサンプル値enumは このような感じになります 睡眠段階を表す 次の3つのケースを追加しました まずは American Academy of Sleep Medicine(AASM) スコアリングモデル ステージ1と2に 対応するsleepedCore 次に、AASM スコアリングモデルの ステージ3に対応する asleepDeep そして最後に 急速眼球運動のステージに 対応する sleepedREMです 睡眠段階を 追加したことにより asleep caseは 非推奨とし ユーザーが眠っているが 睡眠段階が 特定されていないことを示す sleepedUnspecified を適用しました 睡眠サンプルenumの アップデートにより HealthKitの 睡眠段階のデータを保存し 読み取ることが可能になりました 各段階のの睡眠サンプルを 簡単に読み込むために 新しい述語を追加しました レム段階で 睡眠サンプルを読み込みたいとします まず初めに 新しい predicateForSamplesメソッドを使って 値としてsleepingREMを 指定して 述語を作成します これにより クエリを 構築することができます sleepAnalysis サンプルタイプと 睡眠段階の述語で クエリの述語を作成します このクエリ述語を使い クエリを作成することができます このクエリを実行すると レム睡眠段階の 睡眠サンプルの配列が返されます 未特定を含む すべての睡眠段階のサンプルを 読み込むことに興味がある場合 述語を構築する際に 新しい.allAsleepValuesを 使用できるように Appを更新することが 重要となります 昨年からHealthKitを 確認していない方には このクエリの短い構文が 見慣れないかもしれません iOS 15.4以降 Swiftの非同期をサポートするため クエリAPIを更新しました クエリはHealthKitに 不可欠な要素であり Swiftの 非同期サポートにより より簡潔な構文で 使いやすくなりました クエリを介して HealthKitから 様々なデータを読み込み 述語を使って 結果をフィルタリングしたり 新しいデータが入ってくるのを 監視したりすることができます すべてのクエリは HKQueryのサブクラスです 特定期間の 総消費カロリーを知りたい場合 これらの計算された 統計情報を 取得するための 優れたクエリが HKStatisticsCollectionQueryです 最初の結果を得るには クエリのinitialResultsHandlerクロージャ を設定することになります 更新を監視したい場合は 追加でstatisticsUpdateHandler クロージャを設定します クエリが開始されると これらのクロージャが 結果とともに呼び出されます Swiftの非同期のおかげで さらにシンプルにすることができます 各クエリに適合する クエリ記述子が追加されたことで HKStatisticsCollectionQueryは HKStatisticsCollectionQuery Descriptorになりました async result(for:) メソッドを 呼び出すだけで 最初の結果が取得できます 最初の結果を取得し 更新も監視したい場合は results(for:)を呼び出すと AsyncSequenceが返され それをループして 結果を読み込むことができます HealthKitは ワークアウトや 消費カロリーなどの 関連指標をトラッキングするのに 適しています 今週の消費カロリーを 調べるために 統計収集のクエリ記述子 を活用できます まず初めに カロリーサンプルに 適合する述語を持つ クエリ記述子を 作成します 総合計が知りたいため cumulativeSumオプションを使用します 今週のデータに興味があるため anchorDateとして thisSundayを使用しています そして最後に カロリーの合計を 1週間単位で 計算したいと思います クエリ記述子を 作成すると あとすべきことは result(for:)を healthStoreオブジェクトで 呼び出すだけです 返された statisticsCollectionオブジェクトは 現在のデータの スナップショットを提供します カロリーが変化したときに ライブアップデートが必要な場合 results(for:)を呼び出し 返された非同期シーケンスを ループして 結果を読み込むだけです 更新の監視が終わったら ループを抜けるだけで クエリが停止します ではここからワークアウトについて 話していきましょう HealthKitは 気軽なサイクリングでも レースで自分を限界まで 追い込む場合でも ワークアウトと その関連指標を 保存するための 素晴らしい場所です ワークアウトにはよく 1つ以上の明確なアクティビティが 含まれています インターバルトレーニングで 同じ運動を繰り返したり 水泳 サイクリング ランニングで構成される トライアスロンレースに参加したり する場合もあるかと思います iOS 16とwatchOS 9で ワークアウトAPIを更新し これらのタイプのワークアウトと 各アクティビティーの 関連統計情報を 取得できるようにしています これは 最近行った 水泳/サイクリング/ランニングの ワークアウトのタイムラインです まず水泳から始まり 少し時間をあけて サイクリングの準備をし 最後にランニングをしました 各アクティビティは HKWorkoutActivity オブジェクトで表現されます 各ワークアウトアクティビティは アクティビティのタイプを含む 独自のワークアウト構成で 作成されます。 ワークアウトアクティビティは アクティビティ中に 発生したイベントの リストを保持します また 各アクティビティの 統計情報を 読み込むことができるので 特定のアクティビティで 何が起きたのかだけを 分析したいときに最適です タイムラインに戻りましょう 3つのアクティビティが それぞれ適切な アクティビティタイプで 構成されています アクティビティは時間的に オーバーラップすることはできません また 各アクティビティ間で 移行期間がある 可能性があるため 連続している 必要はありません 移行期間中に何が起きたか 分析したい場合 移行ごとに移行タイプで HKWorkoutActivityを作成できます これらのアクティビティはすべて workoutActivitiesプロパティの HKWorkoutオブジェクトで 保存されます HKWorkoutBuilderを使用して HealthKitにワークアウトを追加する場合 アクティビティの追加は 開始と終了日 オプションのメタデータがある workoutConfigurationで HKWorkoutActivityオブジェクトを 作成するだけで簡単にできます そして ワークアウトビルダーで addWorkoutActivityを 呼び出すだけです Apple Watchでは ワークアウトセッションを使い 水泳/サイクリング/ランニングの ワークアウトを記録し 関連するワークアウト ビルダーを使い HealthKitにワークアウトを 保存することができます では 私のワークアウト タイムラインに戻りましょう Apple Watchでこのワークアウトを記録するには ワークアウトセッションと ビルダーを設定する必要があります swimBikeRunタイプで ワークアウトの構成を 作成することから始めます そして 私の構成を使用して HKWorkoutSession を作成します ワークアウトの開始時を セッションではstartActivityを呼び出し 関連するワークアウトビルダーでは beginCollectionを呼び出します これで私のセッションと ビルダーは準備ができ 水泳ワークアウトの構成と 開始日を指定し beginNewActivity メソッドを使用して 最初のアクティビティを 追加できます 各アクティビティの開始時に ワークアウトビルダーの データソースの更新を確認し 回収したいデータタイプ のみ収集できます これは 水泳アクティビティのため 水泳距離を収集したいと思います アクティビティ終了時に 終了日とendCurrentActivityを呼び出します 水泳からサイクリングへの 移行時の分析がしたいため 水泳が終わった 直後から新しく 移行アクティビティを 開始します これはアクティビティの 開始時であるため ビルダーデータソースを 更新し 水泳距離の収集は 関連性がなくなるため 無効にします サイクリングが開始する直前に 移行アクティビティを終了します この方法で 私の ワークアウトアクティビティの あとの部分を 記録する事ができます ワークアウトの終了時に セッションが終了し ランニング中の いかなるアクティビティも終了します ワークアウトビルダーを 終了でき HKWorkout オブジェクトを 保存し返します 返されたワークアウトを使用して totalEnergyBurnedや totalDistanceのような 関連するいくつかのメトリクスを読み込み 私のAppにワークアウトの 概要を表示する事ができます しかし このプロパティの 小さなセットだけでは 十分ではなくなりました totalSwimmingStrokeCount はすべてのワークアウトに関連しておらず ワークアウトによっては より詳細なメトリクス収集が必要です すべてのいかなる ワークアウトに対して メトリクスの読み込みを より簡単にするために 私たちはこれらのプロパティを 非推奨にし 指定された定量タイプの 統計を返す 新しいメソッドを 採用しています リマインドとして この方法は\HKWorkoutActivity でも利用でき アクティビティ中に起こったこと だけにフォーカスできます HKWorkoutBuilderまたは HKLiveWorkoutBuilderを使用する場合にのみ これらの統計は ワークアウトで収集された サンプルから 自動的に算出されます このような豊富な ワークアウト表現とともに 分析や可視化を行う際に 興味のあるワークアウト だけをクエリするのに 役立つ新しい述語の セットもあります 例を紹介します ここに、各アクティビティの 平均心拍数が記載された 私の最近のワークアウトのリストがあります 平均心拍数が150を超えた 高強度のアクティビティで 自分のワークアウトを 見つけたいと思います まず最初に ワークアウト アクティビティで動作する 新しいpredicateForWorkoutActivities メソッドを 使って述語を作成する ことから始めます 平均心拍数を 毎分150回以上に したいと思います 次に ワークアウトを クエリするため ワークアウトの述語内で 心拍数の述語を書き込みます その述語を使用して クエリを作成します そして クエリ記述子の result(for: healthStore) メソッドを呼び出し 述語にマッチする ワークアウトのリストを取得します このようにして 私が興味のある ワークアウトだけを クエリすることができます 最近のワークアウトの1つに 4つのランニング間隔があります HKWorkoutActivityを 使用することは これらの間隔をキャプチャするのに 最適な方法です ワークアウトの間隔の すべてのアクティビティが ワークアウトと同じ アクティビティタイプであることを 確認する必要があります ランニングワークアウトの場合 すべてのアクティビティは .runningタイプで構成されます ワークアウトアクティビティを使って 間隔を記録する利点の1つは 各間隔の統計情報を 取得できることです これらのアップデートにより ワークアウトには そのアクティビティや その周辺のコンテキストを より包括的に把握できる 図が含まれます より豊富な図を 提供するためには Apple Watch Series 6 SE以降で 自動的に収集される 走幅やパワー(ワット)など のメトリクスである 新しいランニングメトリクスを 導入します 水泳ワークアウトにおいて SWOLFスコアを追加します ある長さで泳いだ ストローク数と その長さを泳ぐのにかかった 時間で定義されます このスコアは Apple Watchに記録された 水泳のワークアウトの ラップイベントと セグメントイベントごとに 算出されます これらのメトリクスは ワークアウトを充実させ 自身のパフォーマンスを より理解することができますが ワークアウト後に記録される 他の重要なメトリクスは 心拍数の回復です 運動後に心拍数がどれくらい 早く下がるかを推定するもので ストレス後の心臓の 回復状況を把握し 健康上の問題の可能性を 明らかにするために 活用されます iOS 16では 新しいCardio Recoveryの データタイプを導入しています ヘルスケアAppから アクセス可能であり AppはHealthKitで このデータを読み込み 保存することが できるようになります 回復心拍数は 識別子 .heartRateRecoveryOneMinute がある定量タイプです 各回復心拍数サンプルの コンテキスト情報を メタデータとして 追加することができます 最近の水泳 サイクリング ランニングのワークアウトでは 自身の限界まで追い込み 心拍数の回復速度を 観察しました 3時間半ほどで そのワークアウトを 終了しました ランニング時の 最大心拍数が 毎分184回に到達しました ワークアウトの次の1分間には 心拍数が50回と下がりました Apple WatchでHKLiveWorkoutBuilder を使用した際に ワークアウト後に 回復心拍数サンプルと その周辺の コンテキストが HealthKitに 自動的に保存されます または 回復心拍数の サンプルを保存するために .heartRateRecoveryOneMinute タイプで 定量サンプルを作成します 運動後の1分間で 心拍数が 50回と下がったので それをサンプルの量として 設定します サンプルの開始と 終了日も設定します テストタイプの 回復から始めた メタデータ ディクショナリに 追加のコンテキスト 情報を入れます 私はワークアウトを 全力で行っていたため テストのタイプは .maxExerciseとなります 私のワークアウトは swimBikeRunであったため それをアクティビティタイプとして 設定しました HeartRateRecoveryActivity Durationキーを 使用して ワークアウト 時間も追加できます 最後に ワークアウト中に 観測された 最大心拍数 (毎分184回)を追加します これらのアップデートにより 水泳 サイクリング ランニング ワークアウトの間隔を これまで以上に簡単に 記録できるようになりました この新しい メトリクスの導入により ワークアウトをより 包括的に把握できる図や 経過過程を評価する 新たな方法を提供しています アクティビティや フィットネスが すべての人に 影響を与える一方で 視力のように 多くの人に関わる 健康上の側面もあります 実際 米国眼科協会によると 米国では成人の 約75%が処方された メガネや コンタクトによる 視力矯正に 頼っている状況です これらの処方箋は 失くしやすいため 処方箋に沿ったメガネや コンタクトを注文するために もう1つ予備を持っておく 必要があります 私たちの電話に それを入れましょう iOS 16以降から Appで メガネとコンタクトの処方箋を HealthKitに 保存できるようになりました 眼科の処方箋は visionPrescriptionTypeがあるサンプルです サンプルの開始日は 処方箋の発行日に 終了日は有効期限に 対応します オプションとして 物理的処方箋 のデジタルコピーを サンプルに 添付することができます メガネやコンタクトの 処方箋のサンプルは HKVisionPrescriptionの サブクラスです メガネの場合は HKGlassesPrescriptionサブクラス コンタクトの場合は HKContactsPrescriptionサブクラスを使用します 各メガネの処方箋は それぞれの目に対して1つずつ 合計2つのメガネレンズ 仕様オブジェクトを 使用して作成されます 同様に コンタクトの処方箋は 2つのコンタクトの仕様 オブジェクトで作成されます HealthKitに 老眼鏡の処方箋を 保存しましょう 最初の段階では 1つずつの目に対して HKGlassesLensSpecification を作成します 頂点間距離やプリズムなど 一部のパラメータは オプションです 右目のレンズの仕様も 同じように作ることができます 右目と左目の レンズの仕様で メガネの処方箋 サンプルを作成します この処方箋は私の老眼鏡 に対するものであり 説明文にその旨を 書き加えています 処方箋がある healthStoreに 保存を呼び出します これで 処方箋は HealthKitに保存されました 保存したサンプルに 追加したい 写真を撮りました 添付ファイルは HKAttachment オブジェクトにあります HKAttachmentStoreを使用して 添付ファイルを保存及び読み込みます 処方箋に添付できるのは 静止画像または PDFファイルだけです 撮影した写真を処方箋 サンプルに添付するために healthStoreを使用して HKAttachmentStoreオブジェクトを 作成することから開始します 私の処方箋サンプルがある addAttachment(to:)を呼び出します 添付ファイルの名前を 設定します ここに PNGファイルを添付します そして ファイルのURLに アクセスを取得します 今添付した処方箋には レンズの仕様以外にも 私の氏名や生年月日など 機密情報が たくさん含まれています HealthKitの 主要原則の1つとして プライバシーを保護し 共有データを常に 管理することです 添付ファイルを含む 処方箋では 意図した以上のデータを 共有することが 容易になるため 処方箋の新しい認証モデル を導入しています 読み取り認証は 処方箋オブジェクトごとに 個別に付与されます ユーザーはAppに アクセス許可する 処方箋を正確に選択し いつでもその選択を 更新することができます 眼科の処方箋 オブジェクトの認証を 要求するための 新しいAPIを用意しました 他のデータタイプのように あなたのAppから アクセスする 処方箋を読み込むために クエリを使用します 特定の処方箋にだけ 興味がある場合 述語を使用できます 認証リクエストをするために visionTypeで healthStoreの requestPerObjectRead Authorization メソッドを呼び出します そうすることで 常にAppに 認証プロンプトが表示され 述語に一致する すべての処方箋の リストが表示されます 最高のユーザー体験を保証するために 適切なコンテキストで認証を 確認してください これらは あなたのAppが より良い健康と フィットネス体験を 提供できるために HealthKitに追加された 新しくなった部分です 皆さまが次にどのようなものを 構築するか楽しみにしています WWDCで素晴らしい日々を! ご質問がある場合は Developer Forumで皆さまのお手伝いが できればと思います ♪
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。