Unity エンジンのモバイルスクリーンリーダーサポートのご紹介

包括性に向けた前向きな変化の中で、アクセシビリティを作品の不可欠な側面として優先するゲーム開発者が増えています。Unity は、開発者がアクセシビリティの目標を達成できるよう、サポートの提供に尽力しています。GAconf USA 2023 で Leah Skerry が発表したように、Unity はモバイルスクリーンリーダーサポートの開発に積極的に取り組んでおり、これは、今後数年間でゲーム体験向上のために実装予定の多くのアクセシビリティランタイム機能の中で最初のものとなります。
Unity で開発されたプロジェクトは、独自のグラフィカルユーザーインターフェース(GUI)システムを使用しているため、モバイルスクリーンリーダーに Unity で制作されたコンテンツとの互換性を持たせることはこれまで不可能でした。つまり、Android や iOS デバイスでスクリーンリーダーを起動したまま Unity で制作されたゲームを開くと、スクリーンリーダーをオフにするまで、ゲームを操作することができなかったのです。あらゆるユーザーにモバイルデバイスでゲームを楽しんでもらうことは、当社の主な目標の 1 つです。このサポートが Unity 開発者に提供できることを見ていきましょう。
スクリーンリーダーは、視覚的な入力を音声や点字のような視覚に頼らない方法で出力するアシスティブテクノロジーです。Android や iOS が搭載されたモバイルデバイスには、それぞれ TalkBack、VoiceOver などのスクリーンリーダーテクノロジーが組み込まれています。このタイプのアシスティブテクノロジーは、目の不自由な人には欠かせず、その他の視覚障がい者、非識字者、認知障がい者にも有益です。
モバイルデバイスは、画面上の情報を音声に変換するために、テキスト読み上げ(TTS)エンジンを使用しています。これを使用し、タッチかジェスチャーのいずれかの動作によって、UI 操作を行うことができます。
Unity で制作された古いゲームは、デフォルトでは、スクリーンリーダーとの互換性がありません。スクリーンリーダーがこれらのアプリケーションを操作できるようにするには、アクセシブル要素、それらの画面上の位置、役割、そして UI に対するユーザーインタラクションの方法に関する情報を受け取る必要があります。つまり、スクリーンリーダーに、この位置にはこの特定のテキストが書かれたラベルがあり、この位置にはこの特定のテキストが書かれたボタンがある、さらに、ボタンがアクティブになったときにこの関数を実行する、などと伝える手段が必要だったのです。
Unity 2023.2 TECH ストリームでリリースされ、2023.3 TECH ストリーム(Unity 6 Beta と呼ばれる)での改善を経て、開発者たちは、GUI を Unity ゲームの操作やインタラクションのためにモバイルデバイスのスクリーンリーダーが使用するデータに変換できるようになりました。この API は特定の GUI システムへの依存を回避するために開発されたもので、GUI の実装に使用したテクノロジーに関わらず、Unity でゲーム開発をしている誰もが使用できます。非 GUI 要素もスクリーンリーダー要素として表すことが可能です。
スクリーンリーダー API では、シンプルなデータ構造階層に、スクリーンリーダーがそれぞれの GUI 要素と相互作用するのに必要な情報を格納しています。通常、階層の各ノードは、ゲーム内のアクセシブル要素を表しており、ラベル(ノードがフォーカスされた際に最初に読まれるもの)、画面上の位置、時にはその値、そしてボタンかトグルか、要素が無効化されているかなど、要素に関する詳細をユーザーに伝える追加情報が含まれます。
アクセシビリティ階層内のノードの順序は、スクリーンリーダーが画面を移動する順番を決定します。例えば、兄弟ノード(同階層にあるノード)は上から順に読まれ、親ノードは子ノードの前に読まれることになります。

現在、本スクリーンリーダー API の初期リリースは、Android または iOS オペレーティングシステムが搭載されているモバイルデバイスでのみ機能します。当社の製品戦略チームによると、macOS および Windows のサポート追加を検討しており、それぞれネイティブスクリーンリーダー機能とデスクトップベースのウェブブラウザーも含まれる予定です。ゲームコンソールは元来アクセシビリティプラットフォームではありませんが、実現可能な内容について検討中です。

Unity は、すべてのゲーマーが、能力に関係なく、世界中の開発者によって創造されるすべての作品を完全な形でプレイできるようにすることの重要性を認識しています。この最新の機能は、すべてのプレイヤーにとって包括的で楽しいゲーム業界の形成を促すという当社のコミットメントを強調するものです。当社のアクセシビリティチームの立ち上げはまだ始まったばかりで、やるべきことがたくさんあります。詳細は、こちらのロードマップと UI システムのロードマップを合わせてご確認ください。
この記事で言及された API はドキュメント化されており、Unity マニュアルのスクリプティング API セクションからアクセス可能です。AssistiveSupport class を利用して開始しましょう。さらに、Unity アプリケーションやゲーム内にスクリーンリーダー機能を実装する方法の実践的な例(上部バナーにある LetterSpell)と、追加の AccessibilitySettings の使用例を含めた GitHub リポジトリを作成しました。
当社のツールをどのようにアクセシビリティのサポートに活用しているか、ぜひお聞かせください。Unity で取り組まれている素晴らしい作品を共有し、Accessibility フォーラムで直接フィードバックを投稿してください。