目次
Session概要
カスタムアクションでは、アプリで支援技術を使用するユーザの体験をシンプルにすることができます。また、インタフェースの操作とタスクの実行に必要なスワイプやタップの数を減らすことっができます。このセッションでは、VoiceOverとスイッチコントロールで使用するカスタムアクションの活用方法を紹介します。iOS 13では、カスタムアクションをiOSのフルキーボードと音声コントロールにも利用できるようになりました。 https://developer.apple.com/videos/play/wwdc2019/250/
カスタムアクションとは
- AssistiveTouch(アシスティブタッチ)ボタンをタップしたときの動作をカスタマイズする機能

カスタムアクションのメリット
- アプリ内の整理
- 支援技術を利用するユーザには特に重要
- インタラクションの利便性と速度の向上
アプリ内の整理
- VoiceOverは視覚障害がある方のための画面読み上げ機能
- アプリのUIを視覚的に判断可能なユーザはUIが論理的な構造となっていれば、直感的でありコンテンツの理解も容易であるケースが多い。しかし、VoiceOverを利用するユーザにとってはUIが論理的でなかったり、時間がかかるケースがある(下記画像参照)
- 下記のサンプルアプリでは、セルにカスタムアクションを追加することで、VoiceOver利用者にもコンテンツの把握と検索が容易になる
- アプリの整理において、カスタムアクションは下記のメリットがある
- 反復するコントロールを除去
- アプリ使用中の認知負荷の軽減
- コンテンツを見つけてから、明確に操作ができるためコントロールの役割が明瞭
- UXが楽になる + 時間の削減
- UXが楽になる + 時間の削減


インタラクションの利便性、速度の向上
- スイッチコントロール
- 身体機能に制限がある方が利用する、2回程度の入力でデバイスを操作可能で、デバイスの画面は触れなくて良い
- ただし、デメリットはタップ数が増加すること
- カスタムアクションを利用することで、アクションのゴール(目的)までのステップ(タップ)数を減らすことができる
- 具体的には、スイッチコントロールのメニューにオプションを表示させる
- 具体的には、スイッチコントロールのメニューにオプションを表示させる

カスタムアクションの実装方法
- カスタムアクションのプロパティをoverrideし、UIAccessibilityCustomActionのArrayを返す
- Action Handlerを取り込むAPIが追加された
- アクセサリのコントロールなどをカスタムアクションに変えるなら、支援技術を無効にするため、アクセシビリティの要素をfalseにする
override var accessibilityCustomActions: [UIAccessibilityCustomAction]? {
get {
let actions = [UIAccessibilityCustomAction]()
let myAction = UIAccessibilityCustomAction(name: "Custom Action") { (customAction:
UIAccessibilityCustomAction) -> Bool in
var success = false
// action logic
return success
}
actions.append(myAction)
return actions
}
set {}
}
cellButton1.isAccessibilityElement = false
cellButton2.isAccessibilityElement = false
cellButton3.isAccessibilityElement = false
カスタムアクションが利用可能な支援技術
- VoiceOver
- スイッチコントロール
- フルキーボードアクセス
- Voice Control