View in English

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

クイックリンク

5 クイックリンク

ビデオ

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

その他のビデオ

  • 概要
  • トランスクリプト
  • コード
  • アプリにおけるユーザー年齢に応じた体験の提供

    新しいDeclared Age Range APIを使用して、アプリでユーザーの年齢に適した体験を提供する方法を学びましょう。アプリにおいて子どもによる年齢層情報の提供を保護者が許可できるようにすることで、プライバシーを尊重しながら安全な体験を保証する方法を紹介します。また、このフレームワークによって、ユーザーの年齢にもとづくアプリのコンテンツや機能のカスタマイズ、年齢ゲーティングの実装、キャッシュの把握を行って、ユーザーのプライバシーを尊重しつつ、より安全で魅力的な体験を創出する方法について解説します。

    関連する章

    • 0:00 - イントロダクション
    • 0:34 - オンラインでの子どもの安全確保の促進
    • 2:25 - Declared Age Rangeフレームワーク
    • 7:00 - 年齢層情報のリクエスト
    • 12:22 - 子どもの安全を守るためのその他の方法

    リソース

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

    関連ビデオ

    WWDC25

    • PermissionKitによる子どもの安全性の向上
  • このビデオを検索

    こんにちは ようこそ 「アプリにおけるユーザー年齢に応じた 体験の提供」へ iCloud Familyのエンジニアリング マネージャー Austinです この動画では 3つのトピックを取り上げます まず インターネットの危険から 子どもを守る方法 次に Declared Age Rangeフレームワーク 最後に 年齢範囲をリクエストし ユーザー年齢に応じた 最適な体験を構築する方法を 説明します まず Declared Age Rangeフレームワークの 開発に至った経緯から 説明しましょう Appleが目指すのは 誰もが安心してインターネットを使用でき プライバシーを守りながら 人々の可能性を広げ 暮らしを豊かにする テクノロジーを開発することです 当社の製品とサービスを通じて あらゆる年齢層のユーザーに 安全で楽しい体験をしてほしい それが私たちの願いです

    2025年2月にAppleは 「Helping Protect Kids Online」という ホワイトペーパーを公開しました 幼児からプレティーン ティーンエイジャー 子どもたちをインターネットの危険から 守るには継続的な努力が必要です デジタルの世界が 複雑さを増す一方で 家族にもたらされるリスクも 絶えず変化しています プライバシー、セキュリティ、安全性に対する 深いコミットメントを基盤に Appleではプライバシーを尊重しながら 保護者が子どもを危険から守れる 信頼性の高いツールの機能を 継続して強化しています 2025年3月 子ども用設定フローを 簡略化しました 保護者が子ども用アカウントの設定を ゆっくり考えたい場合は 子どもに適したデフォルト設定を 有効にすることができます また iOS 26では 子ども用アカウントに 関連付けられた 年齢設定が間違っていた場合 保護者が簡単に修正できる機能を備えています また iOS 26ではApp Storeの グローバルな年齢評価が細分化され 現在は 4歳、9歳、13歳、16歳、18歳の 5つの区分に分かれています 評価によって 製品ページに役立つ情報が追加され 保護者が子どもの体験を 細かく把握できるようになります 最後に 今回の動画のテーマである 新しいDeclared Age Range APIを 紹介します 次に Declared Age Rangeフレームワークを 詳しく取り上げます 年齢に適した体験では アプリは年齢範囲を尋ねます プロンプトはアプリのリクエストと ユーザーの年齢に基づいて カスタマイズされます ユーザーは情報の共有可否を選択できます 意思決定に基づいて アプリは体験をカスタマイズします ここでは ユーザーが16歳以上かどうかを アプリが尋ねます プライバシーを保護するため 年齢に適した体験ができるよう アプリは年齢の範囲を設定します APIは 2つの数値セットである 年齢範囲を返します これで生年月日を非公開にできます ユーザーは 適切な体験を得るために 必要な情報のみを 開示すればよいのです 次は さまざまなユーザーが 年齢範囲を宣言する方法を説明します この例では アプリの年齢は 13歳から16歳までに設定されています

    Oliviaは14歳なので 13歳から15歳と宣言します

    9歳のEmilyは 12歳以下という 情報を共有します

    Anneは42歳なので 16歳以上という 情報を共有します いずれの場合も 生年月日は アプリには提供されません Declared Age Rangeフレームワークは 子どもに適した体験を提供するためのもので APIは指定された年齢に対し 地域ごとの最大値を設定します 最大値は 常にその地域の 成人の年齢になります アプリには独自の要件があります 各アプリは1回のリクエストで 最大3つの年齢を指定するので 4つの年齢範囲が生成されます 各年齢範囲の区分は 最低でも 2年間隔になります

    基本的にアプリの対象年齢の設定は ある年齢層のユーザーに対して その体験を提供するか あるいは非表示にするかで決まります

    一部のアプリでは 地域の要件に基づいて または 最適な体験を提供するのに 必要かで決定されます お子様が登録する際 保護者は「Declared Age Range」について 詳しく確認し お子様の年齢が正しいことを確認し 最適な共有オプションを選択できます これを管理するには 保護者はにアクセスし 子どもの名前をタップした後 に移動し を選択します

    に移動し をタップすると が表示されるので お子様のデバイスでも この設定を管理できます このAPIには 3つの異なる設定があります このユーザーはモードです は アプリが尋ねた 年齢範囲を自動的に返します 新しい情報が公開された場合 通知が表示されます

    このユーザーはモードです

    は共有するか否かの プロンプトを表示します

    このユーザーはモードです は常に共有を拒否します つまり アプリがユーザーの年齢を要求しても 何も表示されません 生年月日を非公開にすることが重要なので

    Declared Age Rangeフレームワークには プライバシーを保護するための 追加措置が講じられています の場合 デフォルトでは 元のレスポンスから1年経つと プロンプトが表示されます 同様にの場合 デフォルトでは 元のレスポンスから1年経つと 新しい年齢情報を表示します

    以下に例を挙げます お子様が13歳になり 新しい年齢区分に入ると 1年後までは APIは 12歳以下に分類します

    その後 元の年齢を宣言した1年後に あたる日に リクエストに応じて APIが自動的に共有するか 共有を確認するメッセージが表示されます

    これにより ユーザーの生年月日が 公開されるのを防ぐことができます

    最後に ユーザーは アプリの再表示を許可することで 現在の年齢を表示することができます たとえば ユーザーの誕生日の翌週末には 年齢区分が上の子ども向けの機能に すぐアクセスできるようになるので 子どもは大喜びです 1年後まで 待つ必要はありません ので 特定のアプリに移動して をもう一度タップすると キャッシュを強制的にクリアできます

    つまり 次回年齢がリクエストされると 更新された年齢範囲が アプリに表示されます

    年齢に適した体験を実現するには アプリの機能を ユーザーに適したものに 変更することが重要です 例を挙げて説明するため 以前紹介した 年齢に適した体験を構築する手順を 実際にやってみましょう

    アプリでは ユーザーの年齢に適切かどうかによって 体験を変更できるように なりました この場合 ランドマークアプリが 子どもの年齢範囲を確認し 年齢に適したコンテンツだと 判断されるまで 写真共有機能は利用できません

    そのためには プロジェクトにDeclared Age Range機能を 追加する必要があります プロジェクトのターゲットで タブに移動し プラスボタンをクリックします

    次に、Declared Age Rangeを選択します

    次に サンプルアプリのUIに移動し コーディングを開始します これがランドマークアプリで ランドマークのリストを表示します タップすると 詳細な説明画面に移動します

    こちらは ランドマークの詳細ビューです ここで 新しい写真共有機能を 追加したいと思います

    機能が有効かどうかを 追跡する変数を追加します APIがアラートを表示する ウインドウを認識できるように 環境変数を追加します これは iPadやMacなど アプリに複数のウインドウがある ユースケースで重要です 次に 有効にするかどうかを 確認するボタンを追加します デフォルトでは 無効に設定されています

    次に requestAgeRangeHelperについて 詳しく説明します

    このメソッドには APIからのレスポンスを 要求し 受信するための すべてのロジックが含まれています

    APIは アプリの実行時に 年齢を指定できるようにします つまり 地域やユースケースごとに そのコンテキストで アプリに適用される年齢を指定します 時間の都合上 コメントを追加し ユーザーのいる地域を確認する コードは後で実装します

    requestAgeRangeメソッドで 年齢範囲をリクエストします 指定したい年齢を入力します この場合 知りたいのは ユーザーが16歳以上かどうかです

    レスポンスを処理するコードを実装する 準備ができました レスポンスは 共有または共有を拒否する 値を持つ列挙型を返します

    列挙型が「共有」と等しい場合 ユーザーは共有しており 下限と上限が返されます これはAPIが返した 年齢範囲を表します 列挙型が「共有を拒否」と等しい場合 ユーザーは共有を拒否します

    次に 下限が16歳以上かどうかを 確認します

    この値がtrueの場合 上限はnilと推測できます

    前述の通り 上限値と下限値は nilに設定できます これは 12歳以下などの範囲 または 16歳以上などの 上限がない範囲を 表すために使用されます

    16歳以上の場合は 写真共有ボタンを有効にします 15歳以下の場合は ボタンは無効にしておきます 年齢範囲を共有している場合は ageRangeDeclaration値も返されます

    子どもの場合 値は常にguardianDeclaredになります 10代がiCloudファミリーに所属している場合 guardianDeclaredになります iCloudファミリーに所属していない場合 selfDeclaredになります

    成人の場合はselfDeclaredに なります ではコードに戻りましょう APIがエラーをスローする場合もあります エラー処理のためのコードを追加します エラー「invalidRequest」は デベロッパによって生成されたエラーです これは リクエスト自体に 問題があることを示しています たとえば 年齢範囲の間隔が 2年ではない場合です エラー「notAvailable」は アプリで対処しなければならない デバイス設定の問題を示しています たとえば ユーザーがApple Accountで デバイスにサインインしていない場合です ここで すべてをまとめて ユーザー体験をデモ実演します

    ランドマークの詳細ビューを開くと 16歳以上であることを 共有するかどうかを尋ねる アラートが表示されます 共有を選択します 予想通り 写真共有体験が 利用できるようになりました

    知っておくと役立つ情報が いくつかあります APIは頻繁に呼び出されるため システムはレスポンスをキャッシュし ユーザーがプロンプトに 常に答える必要がないようにします これで アプリがAPIを呼び出しても ユーザーに 何度もプロンプトが表示されないので 煩わしくありません

    キャッシュされたレスポンスは デバイス間で同期されます たとえば iPhoneで共有された 年齢範囲はMacと同期されます

    レスポンスのキャッシュは で管理できます

    さらに 年齢範囲の上限が未成年に 設定されている場合 APIは 保護者が子どものために 設定した ペアレントコントロールを 追加で返します こちらは 子どもに対する 通信制限が有効になっているかを 確認するコードです

    詳細については 「PermissionKitによる 子どもの安全性の向上」をご覧ください このフレームワークを活用するアプリでは サードパーティの体験で 子どもが連絡できる相手を 保護者が管理できるようになります

    これが新しいAPIです ユーザーを保護するための 機能を紹介します

    Sensitive Content Analysis APIは 画像や動画にヌードが含まれる コンテンツを検出し 画面に表示する前に ユーザーに通知するので 安全なアプリ体験を提供します

    iOS 26では Sensitive Content Analysis APIが 拡張され ライブビデオ通話のヌードを 検出し ブロックできるようになりました

    Screen Timeフレームワークは 両親や保護者が 子どものネット使用を監視するのに 必要なツールをアプリに提供します ファミリーコントロールにより 独自の ペアレンタルコントロールを設定できます

    これで 年齢に適した体験について 理解できましたね 次にやるべきことは以下の通りです

    Appleの子ども向け安全ツールを developer.apple.com/jp/で確認し 年齢に適した体験を 適切な場所に追加します

    Declared Age Rangeを使用して 年齢に適した体験を 設定します

    これで 年齢に適した体験が アプリに追加されました

    • 8:03 - Request an age range

      // Request an age range
      
      import SwiftUI
      import DeclaredAgeRange
      
      struct LandmarkDetail: View {
          // ...
          @State var photoSharingEnabled = false
          @Environment(\.requestAgeRange) var requestAgeRange
          
          var body: some View {
              ScrollView {
                  // ...
                  Button("Share Photos") {}
                      .disabled(!photoSharingEnabled)
              }
              .task {
                  await requestAgeRangeHelper()
              }
          }
      
          func requestAgeRangeHelper() async {
              do {
                  // TODO: Check user region
                  let ageRangeResponse = try await requestAgeRange(ageGates: 16)
                  switch ageRangeResponse {
                  case let .sharing(range):
                       // Age range shared
                      if let lowerBound = range.lowerBound, lowerBound >= 16 {
                          photoSharingEnabled = true
                      }
                      // guardianDeclared, selfDeclared
                      print(range.ageRangeDeclaration)
                  case .declinedSharing:
                      // Declined to share
                      print("Declined to share")
                  }
              } catch AgeRangeService.Error.invalidRequest {
                  print("Handle invalid request error")
              } catch AgeRangeService.Error.notAvailable {
                  print("Handle not available error")
              } catch {
                  print("Unhandled error: \(error)")
              }
          }
      }
    • 11:49 - Communication Limits

      // Request an age range
      
      func requestAgeRangeHelper() async {
          do {
              // TODO: Check user region
              let ageRangeResponse = try await requestAgeRange(ageGates: 16)
              switch ageRangeResponse {
              case let .sharing(range):
                  if range.activeParentalControls.contains(.communicationLimits) {
                      print("Communication Limits enabled")
                  }
                  // ...
              case .declinedSharing:
                  // Declined to share
                  print("Declined to share")
              }
          } catch {
              // ...
          }
      }

Developer Footer

  • ビデオ
  • WWDC25
  • アプリにおけるユーザー年齢に応じた体験の提供
  • メニューを開く メニューを閉じる
    • 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.
    利用規約 プライバシーポリシー 契約とガイドライン