View in English

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

クイックリンク

5 クイックリンク

ビデオ

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

WWDC22に戻る

ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。

  • 概要
  • トランスクリプト
  • コード
  • Unityゲームにアクセシビリティを追加する

    オープンソースのAccessibilityプラグインを使用して、AppleプラットフォームでUnityゲームにアクセシビリティ機能を追加する方法を紹介します。そして、サンプルのUnityゲームプロジェクトにVoiceOverやスイッチコントロールなどの支援技術も追加していきます。さらに、Dynamic Typeでテキストサイズを自動的に変更する方法をはじめ、透明度の低減やコントラストの向上など、インターフェイスの調整をサポートする方法も紹介します。

    リソース

    • Accessibility
    • Apple Unity Plug-Ins on GitHub
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC22

    • プラグインと再生:AppleフレームワークをUnityゲームプロジェクトに追加する
  • このビデオを検索

    ♪ ♪

    皆さん こんにちは Ericです Unityゲームに アクセスのしやすさを実現しましょう

    これは すべての人が私たちの 製品を使えるようにすることです そして今日 ゲームのための 大きな一歩を踏み出しました Appleアクセシビリティ プラグインを導入しました Appleの3つの技術に 焦点を当てます

    VoiceOverは 視覚障がい者を 支援することができます 画面上の項目を読み取り ユーザーが操作するための カスタムジェスチャーを 提供します

    運動機能に障がいがある方は 外部スイッチを利用できる スイッチコントロールを 使うことができます そして Dynamic Typeでは 文字サイズを 設定することができます

    まずは リポジトリの クローンを作成します Appleのすべてのプラグインを 構築し ビルドスクリプトを リポジトリのルートに 置いてください これでビルトフォルダが 作成され Unityプロジェクトに 組み込むことができます 最後に Unityパッケージ マネージャを使用して プラグインを プロジェクトに追加します 詳しくはリポジトリにある ドキュメントをご覧ください Unityプラグイン全般に 関するビデオをご覧ください; プラグインと再生:Appleフレーム ワークをUnityゲームプロジェクトに追加する プラグインが用意できたので 3つのエリアを説明します まず アクセシビリティについてです これによって VoiceOverやスイッチコントロール のような支援技術を ゲームでサポート可能です 次はDynamic Typeです この使いやすいユーティリティは ユーザーの好みに合わせて テキストを拡大縮小するのに役立ちます そして UI適応設定 このユーティリティは他のユーザーの 設定を読み取るために役立ちます まずはアクセシビリティ からスタートしましょう

    コンセプトの説明用に 簡単な カードゲームを作りました 「Flip」ボタンを タップすると ランダムに2枚のカードを 引くことができます しかし VoiceOverでは 画面上の文字が読めず 外部スイッチでは ボタンが押せません これは単なるピクセルで しかないからです システムが相互作用を 理解する必要があります アクセシビリティ要素は 支援技術が相互作用 できるものを定義します

    画面上の文字 カード ボタンが アクセシビリティの 要素であるべきです そして 各要素をラベルで 説明することができます VoiceOverがラベル読み上げることで ユーザーは画面の内容を理解できます

    そして もしこのゲームが 多言語に対応していれば このラベルも ローカライズすべきですね

    さて VoiceOverは画面の表示を 説明することはできますが タップできるボタンを 認識できません 「traits」と呼ばれる 別のプロパティを使用して システムに要素のタイプを 通知することができます ここにボタンの特性を 追加する必要があります これでVoiceOverは 「Flip button」と読みます 外部スイッチがこのボタンを コントロールできます

    テキストに「Static Text」 特性を追加もできます 「Static Text」の特性は ラベルやエリアに付与され VoiceOverがより良い 相互作用体験を提供します

    そして 「Button」や 「Static Text」を以外にも さらに多くの特徴があります

    では カードにはどのような 特徴を持たせればいいでしょうか? すべてのアクセシビリティ要素に 特徴を使う必要はありません カードに特性は必要ありません しかし それぞれのカードには まだVoiceOverが 認識していない部分 つまりカードフェイスがあるのです もうひとつ 「Value」という プロパティがあります

    各カードに 「Value」を 追加すると VoiceOverでは カード1はクラブの3を カード2はクラブのエースの 値を示します 以上です 基本を理解したところで Unityを開いてみましょう プロジェクトに 追加する方法を確認します

    このゲームの Unityエディタにいます すでに Appleアクセシビリティ プラグインを追加しました

    まず カメラのような通常の シーンオブジェクトがあリマス 直射日光 そしてUIキャンバスもあります キャンバスの下には 2つのテキスト要素と ボタンがあります カード用ゲームオブジェクト を2つ用意しました

    各2つのメッシュ部品で 構成されています 表と裏のテクスチャを それぞれレンダリングします まず アクセシビリティ 要素を定義しましょう プラグインに 構成要素が必要です

    階層にあるすべてのアクセシブルにしたい オブジェクトを選択します

    そして 構成要素を追加して アクセシビリティ要素にします

    次に ラベルを追加します カードオブジェクトを 選択し 右側の「Accessibility Node」 構成要素をクリックし 「Label」フィールドを 探します

    また ラベルフィールドの チェックボックスがチェックされている

    ことを確認します 次に 「Card 1」と入力します

    そして カード2も同様です

    テキストやボタンにも ラベルが必要ですが Unity UIの標準コントロール を使用する場合は 明確なアクセシビリティ ラベルの提供は必要ありません プラグインはすでに デフォルトで実装されています

    次に ボタンに特徴を追加します

    フリップボタンを選択して 「traits」を 「None」から 「Button」に変更します

    2つのテキスト要素を選択…

    そして 「traits」を 「Static Text」に変更します

    素晴らしいですね 最後に カードのアクセシビリティの 値を設定します カードはランダムに 引くのでスクリプトを 追加して 動的に値を設定します

    2枚のカードを選択し 新しいスクリプトを追加します

    まず 他のCシャープの ファイルの1つで すでに Playing Cardという カードフェイスの列挙型があります AccessibleCardの MonoBehaviorスクリプトでは カードの種類を表す変数として カードが上向きか 下向きかを表しています

    では アクセシビリティ値を 追加してみましょう accessibilityNodeを このgameObjectにアタッチします

    次に accessibilityValue デリゲートをカードの フェイス値を動的に返す 関数に設定します

    この関数の内部で カードが覆われている場合 accessibilityValueの 「covered」を返します カバーされていない場合は カードフェイスを列挙し それぞれについて 「Ace of Spades」のような説明を 返します 以上です では プロジェクトをビルドして その動きを見てみましょう これが私たちのゲームです VoiceOverをオンにしましょう

    自動音声:VoiceOverオン Ericのゲーム カード2 カバーあり Eric:右にスワイプで 次の要素に移動できます 自動音声:カード1 カバーあり

    Ericのカードゲーム

    カードをめくる

    フリップ ボタン Eric:5つの オブジェクトがすべて VoiceOverでアクセスできる ようになりました ボタンをタップしたい場合は ダブルタップします 自動音声:フリップ Eric;もう一度 カードを確認しましょう

    自動音声:カード1 クラブの2

    カード2 クラブのエース Eric:VoiceOverで 読み上げられるようになりました かっこいいですね 何百万人ものVoiceOverユーザーが 私たちのゲームを届けましたね その人たちは今このゲームに 恋をしているのです 外部スイッチコントロールを使っていても ゲームをプレイできます 以上がアクセシビリティ要素でした 次に Dynamic Typeに ついて説明します

    ゲームって難しいですよね 多くの人にとって 文字が小さくて読めない そこで iOSとtvOSでは 誰もが設定で 自分の読書能力に合った 文字サイズを選べます

    アクセシビリティ プラグインではこの設定値を 読み込むことで 期待通りの 大きさの表示が確認できます

    Dynamic Typeの使い方を ゲームの例を見てみましょう

    DynamicTextSize.csという スクリプトを作ります 最初にデフォルトの文字サイズを 変数に格納します 次にOnEnable関数の内部で 設定変更イベントを受信します PreferredTextSizesChangedで AccessibilitySettingsを使用します これにより ユーザーがテキスト設定を 変更すると すぐにUIが更新されます

    次に settingsChanged 関数の内部です PreferredContentSize Multiplierを最初に読み込み 元の文字サイズに乗じて テキスト要素に 割り当て直します Unityエディタ内では Text要素を持つゲーム オブジェクトを 全て選択します 先ほど作成したDynamic TextSizeを追加します

    これでDynamic Typeを サポートしました 結果を実際に見る前に まず Dynamic Typeを ゲームで素早くテストする 方法を紹介します 設定を開き コントロール センターを探します

    「Text size」が表示されるまで 下にスクロールしてください

    これでコントロールセンターを 開いて 文字サイズを 変更することができます

    素晴らしいですね リアルタイムに フォントサイズが調整されました

    コントロールセンターで 表示されるテキストパーセンテージ値は 先ほどの倍率を 読み取っています この設定は テキスト以外の オブジェクトにも採用できます 例えば カードフェイスの アセットを入れ替えて Large Printに変更すると サイズが大きくなります

    まず DynamicCardFacesという スクリプトを作成します 先ほどのようにTextSizeChanged イベントにサブスクライブします

    倍率を読み取る代わりに スライダーの目盛りに マッピングされた文字サイズ カテゴリの列挙を読みます 大きいサイズが選択されると いつでも アセットを入れ替えることができます

    そして 通常の素材と大判の素材の どちらかを選ぶだけです では 大きなサイズを 選ぶと…

    ユーザーは大判のカードを 見ることになり 弱視の人にとても読みやすい 素晴らしいカードフェイスです

    最後に このプラグインから アクセスできる UI適応設定について お話したいと思います

    最初の設定は 透明度を下げることです この設定がオンの場合 背景が不透明になります ぼかしや透明感のある 効果ではなく 読みやすさを 向上させることができます この設定を確認するには AccessibilitySettings IsRuceTransparency Enabledを呼び出します

    次に コントラストを 上げる設定です ダークグレーでスイッチ類を 目立たせています デバイス全体でコントロールを 認識しやすくします

    AccessibilitySettings. IsIncreaseContrastEnabled この設定を確認することで これが有効なときに あなたのUIでコントラストを 上げることができます

    次に 動きを抑える 設定です 動きに対して 敏感な人もいます

    このアニメーションは「Reduce Motion」 がオンの時は 削除する必要があります

    これを実行するための コードを見てみましょう

    CardControllerスクリプトに Flip関数があります Reduce Motionがオンに なっているかを確認します オンではない場合 コルーチンで アニメーションを起動します それ以外は回転を設定するだけです アニメーションはなしです 以上です このように 動きに敏感な 方にも楽しんでいただけます まとめです まずApple Accessibility プラグインを使い始めるには セッションにリンクされているGitHubの リポジトリをクローンします

    アクセシビリティ要素の追加して VoiceOverやスイッチコントロールを 使って ユーザーが ゲームを楽しめるようにしましょう

    Dynamic Typeで 文字サイズを変更できます

    そして UI適応設定についても 確認しましたね 誰もが素晴らしい 体験ができるよう願っています

    ご参加ありがとうございました アクセシビリティに優れた 誰もが楽しめるゲームを どのように実現するか 楽しみにしています

    • 7:43 - PlayingCard enum

      public enum PlayingCard
      {
          AceOfSpade,
          AceOfClubs,
          AceOfDiamonds
      }
    • 7:53 - AccessibleCard class

      using Apple.Accessibility;
      public class AccessibleCard : MonoBehaviour 
      {
          public PlayingCard cardType;
          public bool isCovered;
          void Start()
          {
              var accessibilityNode = GetComponent<AccessibilityNode>();
              accessibilityNode.accessibilityValueDelegate = () => {
                  if (isCovered) {
                    return "covered";
                  }
                  if (cardType == PlayingCard.AceOfSpades) {
                    return "Ace of Spades";
                  }
              }
          }
      }
    • 10:35 - DynamicCardFaces

      public class DynamicCardFaces : MonoBehaviour
      {
          public Material RegularMaterial;
          public Material LargeMaterial;
          void OnEnable()
          {
              AccessibilitySettings.onPreferredTextSizesChanged += _settingsChanged;
          }
      
          void _settingsChanged() 
          {
              var shouldUseLarge = AccessibilitySettings.PreferredContentSizeCategory >= 
                  ContentSizeCategory.AccessibilityMedium;
              GetComponent<Renderer>().material = shouldUseLarge ? RegularMaterial :
                  LargeMaterial;
          }
      }
    • 10:36 - Dynamic Type

      using UnityEngine.UI;
      public class DynamicTextSize : MonoBehaviour
      {
          int originalSize;
          void Start()
          {
              originalSize = GetComponent<Text>().textSize;
          }
      
          void OnEnable()
          {
              AccessibilitySettings.onPreferredTextSizesChanged += _settingsChanged;
    }
      
          void _settingsChanged() 
          {
              GetComponent<Text>().textSize = (int)(originalSize *
                  AccessibilitySettings.PreferredContentSizeMultiplier);
          }
      }
    • 14:54 - Reduce motion

      using Apple.Accessibility;
      public class CardController : MonoBehaviour
      {
          public void Flip() 
          {
              var reduceMotionOn = !AccessibilitySettings.IsReduceMotionEnabled;
              if (!reduceMotionOn)
              {
                  StartCoroutine(Animate());
              }
              else 
              {
                  transform.rotation = Quaternion.identify;
              }
          }
          IEnumerator Animate()
          {
          } 
      }

Developer Footer

  • ビデオ
  • WWDC22
  • Unityゲームにアクセシビリティを追加する
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習
    • オープンソース(英語)
    • セキュリティ
    • 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.
    利用規約 プライバシーポリシー 契約とガイドライン