ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Screen Time APIについて
Screen Time APIについて確認し、常にプライバシーを最優先しながら、カスタマイズされたペアレンタルコントロールをサポートするAppを作成する方法を紹介します。コア制約やデバイスアクティビティ監視などの主要機能を使用して、数値に基づいた管理機能を親や保護者に提供しながら、セキュリティの高い安全なApp環境を実現する方法について解説します。
リソース
関連ビデオ
WWDC21
-
ダウンロード
(音楽)
(Christopher) WWDCへようこそ Christopher Skogenです Screen Timeチームのデベロッパです 新しいScreen Time API についてお話します AppleがiOS用に スクリーンタイムを紹介して以来 3年経ちました そしてユーザーやご家族の デバイスとの関係を向上させる 大きな一歩となりました この3年間で スクリーンタイムにより iPhone iPad そしてMacは 新たな可能性が広がりました スクリーンタイムは あなたやご家族の AppやWebページの 使用頻度を記録し 制限を設定して時間を管理し デバイスがどう使用されるか 目に見える形で 家族と共有できます そしてついに お子さんが 誰と連絡をとるのか等も 管理できるようになりました 多くの方より こういった機能のいくつかを ご自身の ペアレンタルコントロールの Appで管理したいという声も 寄せられました そこで Screen Time API を開発しました スクリーンタイムの核となる 機能をAppに追加し ユーザーにダイナミックで 新しい体験を提供できます まず このAPIはiOS 15と iPadOS 15で利用可能で 最新のSwift App に統合しやすいよう 100% Swift および Swift UIコードとなります Screen Time APIを 設計するにあたり 3つの指針がありました まず 既存の制限に直接的に APIアクセスするための 最新のオンデバイス フレームワークの提供 第二の指針は ユーザープライバシーの保護 スクリーンタイムは極めて センシティブな個人情報を 扱っています 例えば 使用したAppや 訪れたWebサイトなどです スクリーンタイムでは常にプライバシー を重視したアプローチを採用しています 例をあげると 家族以外は誰も Appleさえも あなたが何のAppを使い どのWebサイトを訪れたか 知る方法はありません このプライバシー保護のアプローチを 新しいAPIにも 継続採用し ユーザーが使用するデータが 本人のデバイス以外に 表示されることはありません そして 第三の指針は デベロッパの皆さんが ダイナミックで優れた ペアレンタルコントロールを 新たに作成できるよう 保証することです この3つの指針より 新たな3つのフレームワーク が開発されたのは 偶然ではありません Screen Time APIは 3つのフレームワークで構成されます まず Managed Settingsです Managed Settingsは スクリーンタイムで 利用できる制限にAppが直接 アクセスできるようにします 次にFamily Controlsです Family Controlsは プライバシーポリシーの核となります 最後はDevice Activityです Device Activityは スクリーンタイムをさらに超え Appを起動せずに コードを実行できるという 新たな素晴らしい機能が 使えるようになります 3つのフレームワークを さらに細かく見てみましょう まずはManaged Settingsです Appでは子どもがデバイスで できることを制限し 保護者による設定が 変わらない限り その制限を継続するための より良い方法が必要です Managed Settingsでは スクリーンタイムと同様に アカウントのロックや パスワード変更の防止 Webトラフィックのフィルタリング 特定Appへのシールドなどの制限を 設定できますが App独自のブランドや機能性に 合わせてカスタマイズできます 次はFamily Controlsです ファミリー共有を活用し 保護者の承認なく Screen Time APIに アクセスすることを防ぎます 一度保護者にAppが承認されると 保護者の許可なく Appが削除されることは ありません さらに Family Controlsは AppやWebサイトで 使用される不透明な トークンを提供します このトークンは使用状況の モニターまたは制限のために Screen Time API全体で使われ 単一のファミリー共有グループ 以外の人が AppやWebサイトの使用状況を 知ることはありません そして最後に Device Activityです このフレームワークは WebやAppの使用状況を 必要な時にモニターし コードを実行できる スクリーンタイム以上のものです というのも あなたのAppは ペアレンタルコントロールが目的なので 子どもは自分のデバイス上で そのAppを実行する 可能性は低いからです では 制限を設定するコードを どのように実行できるのでしょうか 答えはDevice Activityの スケジュールとイベントにあります Device Activity スケジュールは タイムウィンドウの開始時と 終了時にAppの Extensionを呼び出す タイムウィンドウです イベントはDevice Activity スケジュールでユーザーが 使用しきい値に達した時 Extensionを呼び出す 使用量モニターです あなたのAppは モニターしたい使用のタイプと 使用のタイミングを 宣言するだけです 3つの全フレームワークを 連携するとこの様になります 保護者と子どものデバイスに Appがインストールされたら 保護者は子どもの デバイス上でAppを開きます Appはファミリーコントロールを承認し その後 保護者のデバイス上のAppで 設定または制限や規則を選択します Appが子どものデバイスに 情報を送り そこで Device Activityを使い スケジュールとイベントを作成します スケジュールやイベントが 発生するとあなたのAppに Device Activity Extensionが 呼び出され この通知より Managed Settingsで制限を 設定できます ここでNolanを紹介します Nolanは新たなデモApp 「ホームワーク」の開発中です このデモAppを使って Screen Time APIの 使い方を説明します (Nolan) こんにちは Screen Timeチームの デベロッパ Nolanです デモAppの「ホームワーク」を 紹介します ホームワークは保護者が 利用してほしい他のAppの使用が 蓄積されるまで 子どもの特定のAppへの アクセスを制限することで 良い習慣を身につけるよう促します ホームワークが機能するには Screen Time APIの 3つのフレームワーク全てを 使う必要があります まず初めに Family Controlsの 承認リクエストについて説明します 次に 保護者が指定した 推奨されないAppを 繰り返しのスケジュールで 保護します それから 推奨されたAppの 使用が十分に蓄積された後 そのシールドを解除する方法を 紹介します 最後に Appのブランディング や機能に合うよう ホームワークで使用された シールドをカスタマイズします まずプロジェクトの設定から始めて Family Controlsの承認を 説明します Xcodeプロジェクトに Family Controls機能を 設定するには プロジェクトエディタで Appのターゲットを選択し Signing and Capabilitiesの下の プラスボタンをクリックします Family Controlsを検索し この機能を プロジェクトへ追加します これで機能が追加され コーディングできます ホームワークがすべき事は Family Controlsに承認を リクエストする事です Family Controlsの フレームワークで 共有のAuthorization Center を使用し Appが起動する際 リクエストさせます リクエストはsuccessか failureかの結果を返します この機能を呼び出すには 保護者がホームワークの Family Controlsを 承認する必要があります AppはまだこのiPhone上で 実行されたことがないので requestAuthorizationが 警告を表示し 保護者の承認を求めます 許可をタップすると 保護者はApple IDと パスワードの入力が求められ 認証が行われます 保護者が一度認証されると requestAuthorizationの 呼び出しは警告を再表示せず 密かにsuccessを返します サインイン中のiCloudが ファミリー共有を使用中の 子どもでない場合 誤用を防ぐために requestAuthorizationは failureを返します AppでScreen Time APIの利用を 準備するのはこのように簡単です (Christopher) ありがとう Nolan デモApp「ホームワーク」で ファミリーコントロールの 認証方法を確認しました Family Controlsで認証すると その他にも素晴らしい能力を Appに付与できます 例えば 一度デバイスが 認証されると ユーザーは iCloudからサインアウトできません またNetwork Extensionsの フレームワークと共に オンデバイスの Webコンテンツフィルタを Appに含めると これが 自動的にインストールされ 削除することができません これで Appはデバイス上の Webトラフィックの フィルタリングが可能になります ペアレンタルコントロールAppの開発では 子どもが保護者のAppを実行する 可能性はかなり低いため 子どものデバイス上でコードを 実行することが課題です Screen Time API用に Device Activityを使って バックグラウンドでコードを実行する 新たな方法を開発しました Device Activity Extensionは Screen Time APIの 残りの部分とやり取りする 主要な手段です ここでNolanに戻り 「ホームワーク」が定期的に コードを実行し特定のAppに スクリーンタイムシールドを かけて 子どものデバイスを 制限する方法を見てみましょう Nolan (Nolan) ありがとう Chris では「ホームワーク」で 保護者が使用を制限したい Appを繰り返しのスケジュールとして シールドしてみましょう 子どものデバイス上で 私のAppが実行されることは 期待できないので Device Activity スケジュールを使って 毎日のAppのシールド制限を 設定すれば 保護者による設定後に ホームワークが 実行されなくても これが可能です Device Activity スケジュールが起動すると 新しい拡張ポイント が呼び出されます ホームワークにはシールドによる Appの制限を設定する 拡張ポイントの 拡張機能が含まれています 拡張ポイントの拡張機能を 実装するには プリンシパルクラスとして DeviceActivityMonitorを サブクラス化します こちらがExtensionの プリンシパルクラスで 2つのメソッドを オーバーライドしたものです intervalDidStartと intervalDidEndです これらの関数は スケジュールの開始と終了後 デバイスが最初に使用される 時に呼び出されます ホームワークのメインAppから Device Activityの スケジュールを設定するまで これらの関数の実装は 空のままにしておきます Device Activityモニターの ExtensionがメインAppで 設定できたので DeviceActivityNameと DeviceActivityScheduleを 作成する必要があります DeviceActivityNameは Extension内から アクティビティを参照する ためのものです DeviceActivityScheduleは Extensionがアクティビティを モニターする時間枠を表します ここに アクティビティ名を “daily”と設定し 夜中12時にスケジュールの開始と 終了をセットしました またこのスケジュールを 繰返すよう設定します 最後にDeviceActivityCenter を作成し 先ほど定義した アクティビティ名とスケジュールで startMonitoringを呼び出します この数行のコードで DeviceActivityMonitorの Extensionは スケジュールの開始時と 終了時にいつでも アクティビティ名で 呼び出されます Appのシールドで もう一つ重要な点は 保護者が何を阻止したいのか を明らかにすることです Family Controlsの フレームワークにはこのための Swift UI要素があります FamilyActivityPickerです メインAppのUIから FamilyActivityPickerを 表示し 家族で使用する AppやWebサイトや カテゴリのリストを 保護者に選んでもらいます 一度保護者が選択すると ホームワークはpickerから 返された不透明なトークンを使用して 各トークンが表すAppや Webサイト カテゴリに対する 制限を設定することができます こちらが私が追加した familyActivityPickerの View modifierを App内のボタンに追加しました さらpickerの選択パラメータを Appのモデルの プロパティにバインドしました これで保護者の選択が UIで変更される度にモデルが 更新されます さて 保護者の推奨しない Appの選択が 私のAppのモデルに 保存されたので DeviceActivityMonitorの Extensionに戻ります まず始めに Appのシールド制限 にアクセスするための Managed Settingsモジュール をインポートし それからintervalDidStartで Appのモデル以外の選択を 引き出し それに伴い Appのシールド制限を設定します そして intervalDidEndで nilに設定することで 制限を削除できます これらのシンプルな変更で ホームワークは毎日24時間毎 保護者が選んだ 好ましくないAppから シールド保護します では Chrisに戻します (Christopher) ありがとう Nolan Managed Settingsでは シールド以外にも 利用できる制限があります Device Activity スケジュールの始めと 終わりに いくつもの制限を 設定することも可能です 例えば アカウント作成や削除の防止 AppやWebサイトを完全に ブロックしたり 年齢に応じてメディアコンテンツを 制限することができます メディアの制限と言えば Managed Settingsは どのAppでも映画やテレビの コンテンツの制限を読み込める APIを提供しています Family Controlsの許可は 必要ありません これらの機能はデバイスが ユーザーに提示する コンテンツを制限すべきか 確認するメディアAppに 最適です ホームワークのデモAppでは 制限が毎日午前0時に 設定されていましたが AppやWeb利用に応じて 制限を変更したい場合は どうすればよいでしょう? Device Activityには まさにこのための Device Activityイベント という機能があります これらのイベントは FamilyActivityPickerと 同じトークンで構成され 使用量が上限に達した際 コードを実行できるように なっています これらのイベントは 先にNolanが説明した スケジュールと 一緒に登録されます Nolanとこれらのイベントが どう機能するか見てみましょう (Nolan)ホームワークの スケジュールの終了時だけでなく 保護者が選択した推奨Appを 子どもが十分に使用した時点で Appのシールド制限を解除したい と思います そのために Device Activityを設定して 使用量がしきい値に達した時 DeviceAtivityMonitorの Extensionを追加で呼び出すよう お勧めのAppの 使用をモニタリングする 必要があります ここで DeviceActivityEvent.Nameを “encouraged”と定義します この名前はExtensionの中で イベントを参照するためのものです そして 保護者が選んだ お勧めAppのセットと 希望する使用量のしきい値を含めて 推奨するイベントを定義します 最後に この定義したイベントを含めて startMonitoringの呼び出し を更新します メインAppから DeviceActivityイベントを モニターしているので これらのイベントが使用量の しきい値を満たす度に DeviceActivityMonitorの Extensionが呼び出される ことになります 関数の eventDidReachThresholdは DeviceActivityEvent.Nameと DeviceActivityNameで 呼び出され どのイベントが どのスケジュールの活動で 発生したかを特定します ホームワークでExtensionが イベントの通知を受けた時に Appのシールド制限をnilに 設定しようと思います この制限をnilに設定することで それまでシールドしていた どのAppの制限設定も外れます Chrisへ戻します (Christopher) 前のセクションで 推奨されないAppは デフォルトの スクリーンタイムのシールドで 制限されるとありましたが 御社のブランドやスタイルを このシールドに 追加したいと思われるでしょう またシールドボタンに 独自のアクションハンドラを 入れたいとも 思うのではないでしょうか これらを実現するツールを ご用意しました カスタムシールドによって 独自のブランド体験を 生み出すことができます シールドをカスタマイズし Managed Settingsで定義した 新たな2つの拡張ポイントを 実装する必要があります 1つの拡張ポイントは 背景の素材 タイトル アイコン およびボタンを変更して 見た目をカスタマイズ することができます もう一つの拡張ポイントでは 独自のアクションハンドラ を作成できます Nolanに再び戻し シールドのカスタマイズに ついてみてみましょう (Nolan)ホームワークで 独自のシールドの見た目に するのにExtensionの プリンシパルクラスで ShieldConfigurationProviderを サブクラス化することから 始める必要があります ここでオーバーライドする 必要がある関数は Configurationのみです この関数に 現在シールドされているAppへの レファレンスが渡され ShieldConfiguration構造体 を返すことが期待されます ShieldConfiguration構造体 によって 背景エフェクト 背景色 アイコン サブタイトル プライマリボタンのレベル プライマリボタンの背景色 および セカンダリボタンのレベルを 定義することができます かなりカスタマイズができますね ShieldConfigurationProviderの Extensionによって 一旦この構造体が設定され 戻されると ホームワークでシールドされた どのAppに対しても OSはこれのカスタマイズを 自動的に表示します シールドのスタイリングを 行ったので Managed Settingsの2つ目 の拡張ポイントを使って プライマリボタンと セカンダリボタンの アクションハンドラを設定します この新たなExtensionでは ShieldActionHandlerを プリンシパルクラスとして サブクラス化し ハンドル関数を オーバーライドします 関数ハンドルは プライマリボタンアクションか セカンダリボタンアクション どちらかが押されたか そして どのAppが現在 シールドされているかを伝えられます ShieldActionResponseで 関数の完了ハンドラを 呼び出す必要があります シールドされたAppを閉じるか アクションを延期して シールド構成を再定義するか の対応となります シールドのアクションを 延期する機能はとても強力で どのように進めるかの信号を待つ間に シールドの外観を更新する 機会を与えてくれます 例えば 子どもがここをタップして アクセス権を求める際 シールドが保護者による 承認待ちであることを 示すことができます このカスタムシールドを加えれば デモApp「ホームワーク」は完成です 保護者はゲームや娯楽の Appを選択してシールドでき 子どもが 読書や学び あるいは創造的なことなど 勧められた活動で十分に スクリーンタイムを過ごすと シールドを取り除くことが可能です この素晴らしい新たな デモAppの開発に参加いただき ありがとうございます Chrisへお返しします (Christopher)今日 Screen Time APIを構成する 3つのフレームワークを使って 制限を設けること プラバシーを守ること 新しいダイナミックな体験を 可能にするという 3つのゴールがどのように 実現されるのかを学びました Managed Settingsで 設定や制限を 実施することができます Device Activityでは Appが使用されていなくても スケジュールやイベントで コードを実行できます 最後にFamily Controlsは Managed Settingsと Device Activityへの アクセスを許可し ユーザーのプライバシーを保護し 保護者だけが 子どもが何をしているか 知ることができます 全てのフレームワーク同様 Screen Time APIは 皆さんのフィードバックに基づき 進化を続けます ぜひご活用いただき それぞれのユニークな使用で 十分にサポートされているか どうかお知らせ下さい ご参加いただき ありがとうございました WWDC2021をお楽しみください (音楽)
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。