
-
アシスティブアクセスのためのアプリのカスタマイズ
アシスティブアクセスは、認知障がいのある方がiPhoneやiPadを一人で簡単に使えるようにする、目的が明確な独自のiOS体験です。iOSおよびiPadOS26では、アシスティブアクセスで実行時のアプリをカスタマイズして、より簡単で自立した使用を実現できます。AssistiveAccess SwiftUIシーンタイプを使ってアプリをカスタマイズする方法を学び、誰にとっても高品質なアシスティブアクセス体験を実現するための重要なデザイン原則を確認しましょう。
関連する章
- 0:00 - ようこそ
- 0:59 - アシスティブアクセスの紹介
- 4:09 - シーンの作成
- 7:08 - アプリのカスタマイズ
リソース
関連ビデオ
WWDC25
WWDC23
-
このビデオを検索
こんにちはAnneです Appleの Accessibilityチームのメンバーです 今日は アシティブアクセスについて お話できることを嬉しく思います 認知障がいのある方のために Appleが すっきりと無駄のない iOS体験とiPadOS体験を デザインしました アシスティブアクセスは アプリとコントロールの本質を突き詰めて デバイスの操作方法を見直すことにより 誕生しました 経験を明確にすることで すべての人が 自力で簡単にデバイスを 操作できるようになりました iOS 26とiPadOS 26では アシスティブアクセスのシーンタイプと 組み合わせることで 皆さんのアプリと こうした体験を シームレスに統合できます
今日は アシスティブアクセス内のアプリで すばらしい体験を 構築する方法を紹介します SwiftUIでアシスティブアクセスシーンを 作成する方法や アプリの調整を進めるにあたって 心に留めておくべき原則も取り上げます
まず アシスティブアクセスについて 確認しておきましょう
AppleはiOS 17とiPadOS 17に アシスティブアクセスを導入しました
無駄を排したこのシステム体験は 認知障がいのあるユーザーのために 特別に設計されています 操作の流れを整理して 成功への道筋を明確に示すという 一貫した設計慣行のもとで アプリとインターフェイスを提供して 認知負荷の軽減を目指しています アシスティブアクセスが初めての方には セッション「Meet Assistive Access」で 詳細を紹介しています アシスティブアクセスはご覧の通り カメラやメッセージなど 数種類の組み込みアプリに対応しています
これらアプリには共通のスタイルがあり コントロールが大きめで インターフェイスに無駄がなく テキストを視覚的要素で補っています アシスティブアクセスをベースに 明確でわかりやすいデザイン言語を 確立することで 新しいUIを操作する場合に どうしても付きまとう 認知的負担を軽減しています デザインは一貫していて 期待される内容も一貫しています
デフォルトでは アシスティブアクセス用に 最適化されていないアプリは 小さめのフレームで表示されます デバイス下部に常に表示される ボタン用の スペースを確保するためです ボタンを押すと アプリ画面からホーム画面に移動します これまでに 認知障がいのある方のためのアプリを デザインしたことがある場合は アプリをそのままアシスティブアクセスに 移植することをお勧めします それを証明してくれる例が 拡大代替コミュニケーションアプリ 別名「AACアプリ」を サポートする場合です AACアプリのように 認知障がいのある方のために 設計したアプリがあり これと同じレイアウトと同じ体験を アシスティブアクセスでも 実現したい場合は フルスクリーン表示のメリットを 利用できる準備はできています アプリをフルスクリーンで表示するには アプリのInfo.plistで UISupportsFullScreenInAssistiveAccess キーをtrueに設定します アプリの外観はアシスティブアクセスを オフにした状態と同じになり 唯一の違いは 縮小フレーム表示にならず 画面の寸法いっぱいに 表示されるという点です ランタイムのバリエーションが必要な場合は SwiftUIとUIKitのサポートを使用して アシスティブアクセスのセッションが アクティブであるか検出させます
アシスティブアクセスで全画面表示を 採用しているアプリは 「アクセシビリティ」設定の サポートアプリのリストに 表示されます
アプリが認知障がいの支援用に 設計されたものでない場合は iOS 26およびiPadOS 26への 対応を機に アシスティブアクセスシーンを 作成しましょう このシーンタイプでは カメラやメッセージなどの 内蔵アプリでよく見る 目立ちやすいスタイルで コントロールが自動的に表示され アプリにマッチした体験を 提供します フルスクリーンサポートとは違い 画面のサイズ以外 アプリは変更されません
進め方が分からない場合は アシスティブアクセス用に iOS 26とiPadOS 26が提供している シーンを選んで 便利に活用しましょう このシーンによって アシスティブアクセスで アプリを引き立てる方法を紹介します アシスティブアクセス採用アプリは わかりやすさ重視のデザインを共有します そのわかりやすさは アシスティブアクセスを有効にしたときの ネイティブのコントロールの 独特の表示方法を見れば 納得できます
このシーンタイプでは 既存のスタイルになじむ形で アプリのコントロールがより大きく わかりやすいスタイルで表示されます なじみのあるデザインによって 認知障がいのある方も アプリを 最大限に活用できます アシスティブアクセスに対応するには まず UISupportsAssistiveAccessの Info.plistキーを App Bundleでtrueに設定します これにより アプリが 「アクセシビリティ」設定の サポートアプリのリストに 表示されます アプリは デフォルトの縮小フレームではなく フルスクリーンで起動するようになります
次に AssistiveAccessシーンを採用して わかりやすいアプリ体験を 構築します 試してみましょう
私が構築していたアプリを アップデートします この描画アプリでは キャンバスにスケッチしたり 作品をフォルダや お気に入りに整理したり さまざまな編集ツールを使用して 楽しくて魅力的なイラストを作成できます
SwiftUIのライフサイクルを採用しています このシーン これは メインコンテンツビューを宣言する ウィンドウグループです
UISupportsAssistiveAccessを アプリのInfo.plistでtrueに設定したら AssistiveAccessシーンを アプリに追加します AssistiveAccessシーンで 新しいコンテンツビューを作成して アシスティブアクセス用にデザインした カスタム階層を使用します 新しいコンテンツビューは 無駄がなく より軽快な アプリ体験のベースになります アシスティブアクセスで アプリを起動すると このシーンを作成して アタッチします
シーンがアクティブになると アプリ固有のSwiftUIコントロールが アシスティブアクセスらしいデザインで 表示されます ボタン、リスト、ナビゲーションタイトルは より目立つスタイルで表示されますが 追加作業はありません
コントロールの表示は自動的に アシスティブアクセス設定で構成した グリッドまたは行のレイアウトに従います
シーンがアクティブな状態での アプリのレイアウトをテストするには assitiveAccess特性を SwiftUIプレビューマクロに渡します
UIKitアプリの場合は iOS 26およびiPadOS 26の サポートにより UIKitライフサイクルアプリの SwiftUIシーンの定義とアクティブ化を行い 同様のことができます シーン宣言クラスの 静的プロパティrootSceneで UIKitから AssistiveAccess SwiftUIシーンを宣言します シーンをアクティブにするには アプリデリゲートから AssistiveAccessシーンをホストするよう 構成された シーンdelegateClassを返します
シーンブリッジングの詳細については 今年のセッション 「What’s New in SwiftUI」をご覧ください アシスティブアクセスは シンプルで使いやすい 操作を軸に構築されています アシスティブアクセスのための 準備ができたら 次は アプリのコンテンツに注目しましょう ここで アプリのコンテンツを アシスティブアクセス用に絞り込む際の 指針になる原則を いくつか紹介します アプリ体験について検討する際は アプリの本質を見極めましょう 気をそらすような変化をなくし 複数の方法で情報を伝え 理解しやすく ユーザーを支援する手順を 構築できないか検討しましょう
まずは アプリの核になる機能を 見極めましょう アプリでサポートするべき最も重要な機能を 1つか2つに絞り込んで アシスティブアクセスで実現します 機能を削除すると 操作の直感性が 失われてしまいそうですが 選択肢が少ないため 気をそらす要因が減り 全体的な認知負荷を軽減できます 心配ならば 引き続き シンプルで的が絞られた アシスティブアクセス体験を使いましょう このアプリでは アシスティブアクセスに 2つの機能を導入します キャンバスにスケッチする機能と 描画結果を表示する機能です アプリのルートビューには これらUI要素だけを表示します お気に入りをマークする機能や スケッチを編集する機能など アプリが提供するその他の機能は 残しておきます アシスティブアクセスの外では 体験重視の状態をキープします デザイン見直し後の アプリのルートビューです 先に特定しておいた2つの機能 DrawとGalleryを 実装しています
2つの機能は ナビゲーションリンクの リストとして表示されます アシスティブアクセスのシーンが アクティブになっているので リンクは自動的に グリッドまたは 行レイアウトのスタイルで表示されます
ビュー内でアシスティブアクセスの ボタンを押すと アプリのナビゲーションスタックを さかのぼります 追加作業は必要ありません
アプリは より的を絞ったものになりました 画面上のUI要素は アプリの本質的な機能だけに絞り込まれ UI自体も おなじみの アシスティブアクセススタイルでの表示です 操作経路も DrawとGalleryの2つを 明確に示しました 整理された選択肢に合わせて オプションの数を減らし 選択肢を整理することで ユーザーがアプリの操作を うまくやり遂げる可能性が高まります アプリ体験を凝縮させる 最適の方法が決まったら ある程度のカスタマイズを 加えることも可能です アシスティブアクセスに 機能を追加する方法を紹介します アシスティブアクセスに取り組む際は 目的はあくまで 認知的負担の 軽減であることをお忘れなく
豊富な機能やカスタマイズによって アプリの完成度は高まりますが 認知障がいのある方にとっては 画面に大量のコンテンツが表示されると 難易度が上がってしまう可能性があります 意思決定に集中できるよう 表示するオプションの数は抑えましょう これは 画面に表示する要素の数と ビューの目的の両方に 適用するべき原則です オプションを減らすことで アプリ操作中に 気が散る原因がなくなります オプションが多すぎると 圧倒されてしまい 認知的負荷が増大しかねません 次に 表示されるコントロールは はっきりと見えるようにしましょう わかりにくいジェスチャや 入れ子状のUIは避けましょう このような操作は 認知障がいのある方には 見つけにくい場合があります 代わりに はっきりと見やすく 目立ちやすいコントロールを使用しましょう
アプリを操作する速度は 人それぞれに異なります 誰でも自分のペースで タスクを完了できるよう 時間制限は避けましょう タイムアウト後にUIやビューが消えたり ステータスが変化したりする場合は 体験のデザインを見直しましょう アプリの操作を無事に完了させられるよう 十分な時間を設けましょう
アシスティブアクセスでは 選択プロセスを通じて ユーザーを導くよう 体験をデザインします 複数のオプションを 一度に提示するのではなく 一歩一歩 段階的に進められるような フローを構築しましょう 適切なステップ数で ユーザーを導くようにしましょう 完了までのプロセスが長すぎると やる気が損なわれてしまいます
カスタマイズを追加する場合は ゆっくりと慎重に行うよう注意しましょう 特定の決定を行う順序の 入れ替えが必要になる場合があります 決定は1つずつ順を追って行うよう 徹底しましょう これにより 認知機能への負担が軽減され より快適なアプリ体験を 実現できます 一部の重要なアクションには 実行後の復旧が難しいものがあります 写真の削除などですね こうした機能は 完全に取り除くことを検討しましょう または削除のように より恒久的な アクションの実装を予定している場合 必要に応じて2回 確認を求めるようにしましょう 目指すのは ユーザーが 本来意図していなかった状況に 陥らないようにすることです
ここまで 提示するオプションの数を 減らしたり UIを目立たせたり 操作に時間制限を設けないなど アシスティブアクセスにおける ベストプラクティスを紹介しました 段階を追ったガイド付きのフローを 構築する方法や ユーザーの気をそらすアクションを突き止め 見直す方法も紹介しました これらのデザインガイドラインを 私のアプリにも適用してみましょう
アプリのアシスティブアクセス体験に 描画色変更へのサポートを追加します アシスティブアクセスが無効の場合 描画色の選択には カラーピッカーを使用します
不透明度などのカラーピッカーオプションが 便利に働くアプリもありますが 私のアプリは色があれば十分です この点は調整しておきましょう
選択肢を減らすため アシスティブアクセス用に アプリ専用の 色選択ビューをデザインしました カラーピッカーの機能を見直して 決定すべき項目を 線つけ色の 1つに絞り込みました 選択できる色の数も 数色に減らしました 描きたい色を タップするだけです
Drawオプションと Canvas入力の間に このビューを追加しました こうした段階的なアプローチによって アプリを使用する誰もが 色の選択を済ませた状態で キャンバスにたどり着けます カラーピッカーでは キャンバス内の オプションとして色を選択しますが それとは操作の順番が異なる点に 注意してください ここでは 色の選択という決定を 1つのビューとして独立させ 常にキャンバスに到着する手前で 表示させるようにしています 混乱を招きそうな機能や 元に戻すのが難しそうな機能も アプリから削除しました キャンバスビューには ストロークを元に戻す機能がありません
ギャラリーには 作品を削除するオプションがありません このような判断に至ったのは ユーザーの意図していなかったアクションを 実行してしまうリスクを取り除くことで 安全でユーザー支援を重視した 環境を作るためでした アシスティブアクセスの肝となるのが 直感的で理解しやすいデザインです 認知障がいのある 一部の方にとっては 画像とアイコンがあれば テキスト単体の 場合よりも理解しやすくなります つまり 情報は複数の方法で 提示する必要があるのです テキストだけに頼るのではなく アシスティブアクセスで アプリを実行している間は 視覚的な代替手段も使って 意味を伝えましょう ボタンやナビゲーションリンクなどの コントロールを実装する際は アイコンとラベルの両方を使いましょう
アシスティブアクセスでは ナビゲーションバーで アイコンをサポートしていることもあり ナビゲーションタイトルにも ビジュアルデザインが適用されています
アプリでこれを実装するには アシスティブアクセス ナビゲーションアイコン修飾子を使用して 画像またはシステム画像の名前を渡します これで アシスティブアクセスのシーンが アクティブ状態のとき アイコンが ナビゲーションタイトル横に表示されます すべてのナビゲーションタイトルに アイコンを添えるよう徹底しましょう
認知障害のある方のために デザインする方法を学んだところで SwiftUIシーンを採用して アプリを アシスティブアクセスに展開しましょう セッションで説明したデザイン演習を 皆さんのアプリで実行してみましょう アシスティブアクセスの サポート対象である体験に集中して これを洗練させるという目標を 常に意識しましょう 最後にひとつ フィードバックの情報源として ユーザーに勝るものはありません アシスティブアクセスのコミュニティ内で テストする機会を見つけましょう ご視聴ありがとうございました アプリをすべての人のために 設計してくださることに 感謝します
-
-
5:21 - Create a scene for Assistive Access
// Create a scene for Assistive Access import SwiftUI import SwiftData @main struct WWDCDrawApp: App { var body: some Scene { WindowGroup { ContentView() .modelContainer(for: [DrawingModel.self]) } AssistiveAccess { AssistiveAccessContentView() .modelContainer(for: [DrawingModel.self]) } } }
-
6:25 - Display an Assistive Access preview
// Display an Assistive Access preview import SwiftUI struct AssistiveAccessContentView: View { @Environment(\.modelContext) var context var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundStyle(.tint) Text("Hello, world!") } .padding() } } #Preview(traits: .assistiveAccess) AssistiveAccessContentView() }
-
6:35 - Declare a SwiftUI scene with UIKit
// Declare a SwiftUI scene with UIKit import UIKit import SwiftUI class AssistiveAccessSceneDelegate: UIHostingSceneDelegate { static var rootScene: some Scene { AssistiveAccess { AssistiveAccessContentView() } } /* ... */ }
-
6:55 - Activate a SwiftUI scene with UIKit
// Activate a SwiftUI scene with UIKit import UIKit @main class AppDelegate: UIApplicationDelegate { func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { let role = connectingSceneSession.role let sceneConfiguration = UISceneConfiguration(name: nil, sessionRole: role) if role == .windowAssistiveAccessApplication { sceneConfiguration.delegateClass = AssistiveAccessSceneDelegate.self } return sceneConfiguration } }
-
14:36 - Display an icon alongside a navigation title
// Display an icon alongside a navigation title import SwiftUI struct ColorSelectionView: View { var body: some View { Group { List { ForEach(ColorMode.allCases) { color in NavigationLink(destination: DrawingView(color: color)) { ColorThumbnail(color: color) } } } .navigationTitle("Draw") .assistiveAccessNavigationIcon(systemImage: "hand.draw.fill") } } }
-
-
- 0:00 - ようこそ
Apple's Accessibility team has developed Assistive Access, a new feature for iOS and iPadOS 26, which simplifies the device interface for users with cognitive disabilities. The feature focuses on essential apps and controls, enhancing navigation and independence. Developers can integrate their apps using the Assistive Access scene type in SwiftUI, following specific principles to create a user-friendly experience.
- 0:59 - アシスティブアクセスの紹介
Apple introduced Assistive Access in iOS and iPadOS 17, a feature designed to simplify the system experience for users with cognitive disabilities. The feature offers streamlined interactions, clear pathways, and consistent design practices across a few distilled built-in apps like Camera and Messages, which have large controls and visual alternatives to text. Apps not optimized for Assistive Access are displayed in a reduced frame with a persistent back button. Developers of apps already designed for cognitive disabilities can enable full-screen mode for their apps within Assistive Access. For developers of non-optimized apps, support will be available in iOS and iPadOS 17, allowing them to create tailored experiences with automatically displayed controls in a familiar style.
- 4:09 - シーンの作成
In Assistive Access, apps are designed with clarity in mind, utilizing a larger, clearer control style for native controls. To enable this, developers set a specific key in the app bundle to true, which lists the app as optimized and launches it in full screen. Developers then create a separate Assistive Access scene within their app, which presents a streamlined and lightweight version of the interface. This scene automatically displays native controls in a more prominent, grid-based style, enhancing usability for people with cognitive disabilities. For SwiftUI apps, this is achieved by adding a new content view within the Assistive Access scene. UIKit apps can also support this feature by defining and activating SwiftUI scenes from the scene delegate class.
- 7:08 - アプリのカスタマイズ
To optimize an app for Assistive Access, developers should distill the app to its core functionality, focusing on one or two essential features. This streamlined approach reduces distractions and cognitive load. The app's interface should be designed with clear, prominent controls, and avoid hidden gestures or timed interactions. Information should be presented in multiple ways, such as using icons and labels alongside text. Navigation should be intuitive and step-by-step, with back buttons automatically conforming to the preferred layout style. Developers should also consider removing potentially confusing or irreversible actions, or providing multiple confirmations for such actions. Also, consider reducing selectable options in cases where it makes sense to do so such as replacing a color picker with a discrete set of selectable colors. By following these guidelines, developers can create a safe, supportive, and user-friendly experience for individuals with cognitive disabilities.