View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

その他のビデオ

  • 概要
  • トランスクリプト
  • コード
  • PermissionKitによる子どもの安全性の向上

    アプリを利用する子どもたちの安全性を強化する上で、PermissionKitがどのように役立つかを紹介します。この新しいフレームワークでは、年齢に適したコミュニケーション体験を提供し、ファミリー共有を利用して親の承認を求めることができます。メッセージアプリにシームレスに統合された許可リクエストを作成し、親からの回答を処理し、子どもにフレンドリーなUIをカスタマイズする方法を学びます。このセッションの内容を十分理解できるよう、最初に、WWDC25の「Deliver age-appropriate experiences in your app」を視聴することをおすすめします。

    関連する章

    • 0:00 - イントロダクション
    • 2:40 - PermissionKitの紹介
    • 3:26 - 子ども向けのUIのカスタマイズ
    • 4:38 - 「許可を依頼する」体験の構築
    • 7:02 - 保護者の回答
    • 10:27 - 子どもの安全を守るためのその他の方法

    リソース

    • Declared Age Range
    • Design safe and age‑appropriate experiences for your apps and games
    • PermissionKit
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC25

    • アプリにおけるユーザー年齢に応じた体験の提供
  • このビデオを検索

    こんにちは Andrewです Familyチームエンジニアです 「Enhance child safety with PermissionKit」を説明します

    親には子供の安全を守るという とても大きな責任があります デジタル環境では子供の安全の 確保は子供と保護者間の 会話から始まります

    特に大事なのは 子供がオンラインで 誰とやり取りするかについての会話です アプリからその会話を 始めるのは難しく 技術的にもかなり負担が ある可能性があります 親が子供とコミュニケーションを取るには いつもやり取りしている メッセージが最適です iOS、iPadOS、macOS 26では PermissionKitを使うと メッセージで親子間の会話を始められます

    子供はPermissionKitを使い 新しい人とやり取りして良いかを 親に質問できます このビデオでは 最初に新しい PermissionKitフレームワーク紹介します

    次に この新しいAPIを使用して 子供の安全を考慮しながら アプリのUIを適応させる 方法を紹介します

    次に 子供が保護者に やり取りを許可してもらうために メッセージで直接尋ねる質問を 作成する方法を解説します

    最後に 保護者からの 答えを受取り対応する方法を 紹介します 本ビデオの前提条件は 皆さんのアプリに通信機能があり 各ユーザーの年齢または 年齢範囲を判断する手段が あることです 紹介するPermissionKit APIは 現在のユーザーが 子供だとわかっているときに使用します 現在のユーザーが子供だと判断するための 独自のアカウントシステムが ない場合は新しい Declared Age Range APIを 使用します

    親は子供のアカウントに 関連付けられた年齢範囲の 提供を子供に許可できます この年齢範囲はその後 Declared Age Range APIで要求できます 詳細はWWDC25 「Deliver age appropriate experiences in your app」をご覧ください

    皆さんのアプリに PermissionKitが適しているか どうかを判断するときには 次の点も考慮します

    PermissionKitはユーザーの ファミリー共有グループを活用して 親や保護者と子供をつなぎます

    PermissionKitの機能を最大限に 活用するにはユーザーが ファミリー共有グループメンバーである 必要があります リクエストが行われたときに子供が ファミリー共有グループのメンバーでないと APIはデフォルトの応答を返します また保護者は子供のコミュニケーション 制限を有効にする必要があります コミュニケーション制限が 有効化されていない場合も APIはデフォルトの応答を返します

    最初に PermissionKitから 説明します 新しいフレームワークの PermissionKitを使うと 迅速で簡単な方法により 許可の要求者と権限者の間で スムーズで一貫した許可が 行われるようにできます iOS、iPadOS、macOS 26で PermissionKitを採用すると オンラインでの子供の安全を 守ることができます PermissionKitを使用すると ファミリー共有グループ内の子供と保護者は メッセージで会話を開始できます 子供は新しい人とやり取りする 許可をアプリからメッセージで リクエストできます 保護者は生成されたメッセージ会話内で直接 子供からのやり取りの許可リクエストを 承認または拒否できます

    次はPermissionKitの導入方法です まずUIの対象年齢を合わせる方法です Landmarksはランドマークを 表示して学ぶアプリです これからアプリに新しい チャット機能を加えユーザーが 互いにお気に入りを会話できる ようにする例を紹介します Landmarksは 全年齢層向けのアプリで PermissionKitに最適です

    このアプリは不明な送信者からの コンテンツを子供には表示しません 例えば メッセージのプレビュー プロフィール写真 その他 子供に適さないデリケートな コンテンツなどです

    CommunicationLimitsシングルトンの knownHandles(in:)を 待機させるのが1つの方法です ハンドルのセットを指定すると APIが最適化されたルックアップを実行し システムによって認識されている ハンドルのサブセットを返します これは自分のデータベースからの 情報で補完できます システムにこのデータがあれば 最初から始める必要はありません 次に 子供がやり取りしようとしている ハンドルやグループに含まれるのが 既知のハンドルのみかどうかを特定します ハンドルが既知の場合にのみ 非表示だったコンテンツを表示します

    次に 子供が親に許可を求めらる質問を 作成して送信する方法を紹介します PermissionKitでは質問の 抽象化を提供します この中には子供の許可リクエストの 詳細がすべて含まれます 各質問には その質問の内容をさらに説明する トピックが付属しています 例えばコミュニケーショントピックは子供が 何らかの方法でやり取りしようとしている 人やグループのすべての 情報をパッケージ化します この情報には少なくとも その人のハンドル 具体的には その人の電話番号 メールアドレスそして ユーザー名など 他の識別子を含みます

    次にコードを説明します 許可の質問を作成し 不明なハンドルを渡すコードです

    特定のハンドルに関するメタデータを 追加することもできます できるだけ多くのメタデータを 追加することをお勧めします 提供されたメタデータはシステムが 保護者に表示し 保護者はこれを 子供のリクエストの 承認/拒否の判断に使用できます これを行うには CommunicationTopicを作成します

    CommunicationTopicは PersonInformationを使用します

    PersonInformationにはハンドル 名前 画像の情報があります 任意でトピックにアクションを 設定することもできます

    選択したアクションは 子供がそのユーザーとやり取りしようと している方法に対応させる必要があります

    選択したアクションに応じて システムは特定の表現を使用して 親に確認リクエストを 表示します

    この例ではメッセージを使用していますが 電話やビデオなども 提供できます

    最後に PermissionQuestionをカスタム CommunicationTopicで初期化します

    次に 作成した PermissionQuestionを使用して SwiftUIビュー内のCommunication LimitsButtonを初期化します

    子供がボタンをタップすると システムプロンプトが表示され 親や保護者にメッセージで 質問を送信できるようになります

    UIKitアプリでは CommunicationLimitsシングルトンで 子供のデバイスでAskフローを開始します UIViewControllerを渡す必要があります システムがこれを使いUIを表示します

    AppKitアプリでは CommunicationLimitsシングルトンで 子供のデバイスで Askフローを開始できます NSWindowを指定するだけです

    質問体験の説明は以上です 次は 保護者が選択した回答を 処理する方法です 保護者がメッセージ内で応答すると 子供のデバイスのバックグラウンドで アプリが起動します 応答は 子供が受け取った時に 処理する必要があります

    アプリ起動後すぐに CommunicationLimitsシングルトンから AsyncSequenceを取得して バックグラウンドタスクで反復処理し 常に最新の許可を取得します 応答を受け取った時は 自分のUIを更新したり 自分のデータベースに新しいデータを 投稿したりする機会です

    これで 本当に終わりです これまでを総合するとどうなるか Landmarksで見てみましょう 左側が子供のデバイス 右側が親のデバイスです 子供のデバイスのLandmarksでは私が 追加した新しいチャットが表示されています

    子供には不明なハンドルからの メッセージのプレビューは デフォルトで非表示になります

    会話の1つをタップすると メッセージの内容は子供には隠されます 子供は保護者から許可を得てからでなければ 応答できなくなっています

    子供がコミュニケーション制限ボタンを タップするとアラートが表示されます 子供はこのアラートを使い親や保護者に メッセージを送ることを確認します 子供はScreen Timeパスコードを 使い親や保護者から対面で 承認を取ることもできます アラートのオプションを タップすると メッセージ作成ウインドウが表示され 子供のファミリー共有グループの保護者が フィールドに事前入力され テキストビューに質問が用意されます

    子供はボタンを タップして その人の名前を任意で追加できます その人のメタデータを前述の PermissionQuestion API 経由で提供する場合 ここにメタデータが表示されます このメタデータは保護者が 自分のデバイスで リクエストを確認するときに表示されます

    子供が送信ボタンをタップすると質問は 他のiMessageと同様に 保護者に送信されます

    次は 親のデバイスを見てみましょう 保護者はメッセージで 子供からの質問を受け取りました

    親はバブルから直接拒否することも 質問の確認を選択することもできます

    確認するとこの質問に関する 追加の内容が表示され 承認/拒否のどちらかを選択できます

    親の選択にかかわらず 子供には自動的に通知が送られ 保護者の選択が知らされます 通知が子供に配信された時点で アプリにも親の選択が直接 バックグラウンドで配信されます この選択への応答は 例えば UIの更新 ローカルキャッシュの再読み込み サーバへの情報送信などで行います

    親が承認したので 子供はLandmarksでこの人からの メッセージを確認し返信できます PermissionKitを採用できる ようになったので 次はアプリで 子供の安全性を向上させる時に 考慮することを紹介します PermissionKitをlaunchpadとして使うと PermissionKitから取得した 情報を自分のサーバに永続化 することでアプリのWebサイトなど Appleプラットフォーム外部に 類似の体験を追加できます PermissionKitにとどまらず 当社の他の家族と子供の 安全性向上のためのAPI製品が アプリに適しているか確認してください 例えば こちらが当社のAPIを使用した 子供の安全性を向上させる他の方法です 新しい Sensitive Content Analysis APIは ライブストリームビデオ通話で 裸体を検出/ブロックし コミュニケーションの安全を 子供を守ることにまで拡大します 新しいDeclared Age Range APIにより 子供は安全で年齢に適した 体験ができます

    Screen Timeフレームワークの ツールを使うと 保護者が子供のWeb使用を 監督できるようになります Family Controlsフレームワークにより アプリで独自のペアレンタル コントロールを提供できます

    PermissionKitを使いアプリで 子供の安全性を向上させる方法は以上です やり方は以下の通りです まず 皆さんのサーバからのデータ または Declared Age Range APIを使って ユーザーの年齢範囲を決定します 次に 子供を念頭に置いて アプリのUIを調整します その後 PermissionKitを採用します 尋ねる質問を作成し 保護者の回答に対応します

    PermissionKitをご紹介する 許可をありがとうございました

    • 4:03 - Tailor your UI for children

      import PermissionKit
      
      let knownHandles = await CommunicationLimits.current.knownHandles(in: conversation.participants)
      
      if knownHandles.isSuperset(of: conversation.participants) {
          // Show content
      } else {
          // Hide content
      }
    • 5:15 - Create a question

      import PermissionKit
      
      var question = PermissionQuestion(handles: [
          CommunicationHandle(value: "dragonslayer42", kind: .custom),
          CommunicationHandle(value: "progamer67", kind: .custom)
      ])
    • 5:38 - Create a question - additional metadata

      import PermissionKit
      
      let people = [
          PersonInformation(
              handle: CommunicationHandle(value: "dragonslayer42", kind: .custom),
              nameComponents: nameComponents,
              avatarImage: profilePic
          ),
          PersonInformation(
              handle: CommunicationHandle(value: "progamer67", kind: .custom)
          )
      ]
      
      var topic = CommunicationTopic(personInformation: people)
      topic.actions = [.message]
      
      var question = PermissionQuestion(communicationTopic: topic)
    • 6:25 - Ask a question - SwiftUI

      import PermissionKit
      import SwiftUI
      
      struct ContentView: View {
          let question: PermissionQuestion<CommunicationTopic>
      
          var body: some View {
              // ...
              CommunicationLimitsButton(question: question) {
                  Label("Ask Permission", systemImage: "paperplane")
              }
          }
      }
    • 6:43 - Ask a question - UIKit

      import PermissionKit
      import UIKit
      
      try await CommunicationLimits.current.ask(question, in: viewController)
    • 6:54 - Ask a question - AppKit

      import PermissionKit
      import AppKit
      
      try await CommunicationLimits.current.ask(question, in: window)
    • 7:19 - Parent/guardian responses

      import PermissionKit
      import SwiftUI
      
      struct ChatsView: View {
          @State var isShowingResponseAlert = false
      
          var body: some View {
              List {
                 // ...
              }
              .task {
                  let updates = CommunicationLimits.current.updates
                  for await update in updates {
                      // Received a response!
                      self.isShowingResponseAlert = true
                  }
              }
          }
      }

Developer Footer

  • ビデオ
  • WWDC25
  • PermissionKitによる子どもの安全性の向上
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習とAI
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン