Accessibility(a11y)とは、障がいを持つ人々が使用できるアプリケーションを作成する実践です。世界保健機関(WHO)によると、13億人以上(人口の16%)が何らかの障がいを抱えて生活しています。WHO(2024年報告書)は、デジタルアクセシビリティが極めて重要になりつつあると強調しています。iOSとAndroidでアクセシビリティを確保する方法と、どのような標準が存在するかを見ていきましょう。
重要ポイント
Accessibility(略称a11y — 文字a + 11文字 + y)とは、製品が障がいを持つ人々にとって使用可能であるという特性です。モバイルアプリケーションの文脈では、これは以下を意味します:スクリーンリーダー(VoiceOver、TalkBack)のサポート、適切なテキストサイズ、高いコントラスト、キーボードナビゲーションの正しいフォーカス順序、めまいを引き起こすアニメーション要素の不在。
インクルーシビティは倫理的な義務だけでなく、法的な義務でもあります。多くの国にはデジタルアクセシビリティ法があります:ADA(米国)、Section 508、European Accessibility Act(EU、2025年からアプリに義務化)。Business Disability Forumによると、アクセシビリティに投資する企業はオーディエンスを15〜20%増やし、法的リスクを軽減します。
IT Sectrでは、開発の各段階でアクセシビリティをチェックしています。私たちの経験では、デザイン段階でアクセシビリティの問題を修正する方が、リリース後よりも10倍安価です。アクセシビリティは機能ではなく、現代のアプリケーションの基本要件です。
Appleのエコシステムは強力なアクセシビリティツールを提供しています。VoiceOverは、画面上で起こっているすべてを音声で読み上げる内蔵スクリーンリーダーです。ユーザーはジェスチャーでデバイスを操作します:右スワイプで次の要素、左スワイプで前の要素、ダブルタップでアクティブ化。
Accessibility Labelは、VoiceOverが要素に対して読み上げるテキストです。デフォルトでは、iOSはボタンテキストまたはラベルを使用しますが、アイコンやグラフィック要素の場合は明示的にラベルを設定する必要があります。Accessibility Traitは、要素のタイプ(button、header、link、image)を記述するプロパティです。正しいtraitは、ユーザーが要素とどのように対話するかを理解するのに役立ちます。
VoiceOverは40以上の言語をサポートし、すべてのAppleデバイスで動作します。開発者の主な仕事は、各インターフェース要素に正しいaccessibilityLabelとaccessibilityTraitsを設定することです。要素がアクセシブルであるべきでない場合(装飾画像)、isAccessibilityElement = falseを設定します。
// Swift — ボタンのアクセシビリティ設定
let shareButton = UIButton()
shareButton.setImage(UIImage(named: "share-icon"), for: .normal)
shareButton.accessibilityLabel = "この記事を共有"
shareButton.accessibilityHint = "送信方法を選択するダイアログを開きます"
shareButton.accessibilityTraits = .button
// SwiftUI — さらにシンプル
struct ShareButtonView: View {
var body: some View {
Button(action: share) {
Image(systemName: "square.and.arrow.up")
}
.accessibilityLabel("共有")
.accessibilityHint("共有メニューを開きます")
}
}
コードはテキストなしのボタン(アイコンのみ)のアクセシビリティ設定を示しています。AccessibilityLabelはユーザーが聞く内容です。AccessibilityHintはアクションの結果に関する追加のヒントです。ラベルに「〜のボタン」のようなフレーズを使用しないでください — Traitがすでにボタンであることを示しています。
TalkBackは、Android用のGoogle製スクリーンリーダーで、Android Accessibility Suiteパッケージの一部です。VoiceOverと同様に、インターフェース要素を音声で読み上げ、ジェスチャーで制御します。TalkBackは100以上の言語をサポートし、Google Play Servicesがインストールされたすべてのデバイスで動作します。
Content Descriptionは、AndroidにおけるaccessibilityLabelに相当します。XMLではandroid:contentDescription属性、コードではsetContentDescription()メソッドで設定します。フォーカス不可の要素(装飾的なImageView)には、importantForAccessibility="no"を使用します。
Focus Order(フォーカス順序)は、スワイプ時にTalkBackが要素間を移動する順序です。デフォルトでは、Androidはレイアウト内の要素の順序を使用しますが、accessibilityTraversalBeforeとaccessibilityTraversalAfter属性で変更できます。これはカスタムコンポーネントを持つ複雑な画面で重要です。
IT Sectrでは、すべての画面でFocus Orderをチェックしています。フォーカス順序のエラーは、最も一般的なアクセシビリティ問題の一つです。例えば、見出しの後に記事テキストではなくコメントに移動する場合 — それはアクセシビリティのバグです。
WCAG(Web Content Accessibility Guidelines)は、W3Cによって開発された国際的なアクセシビリティ標準です。現在のバージョンはWCAG 2.2(2023年)です。標準は4つの原則に分かれています:Perceivable(知覚可能)、Operable(操作可能)、Understandable(理解可能)、Robust(堅牢)— 頭文字をとってPOUR。
WCAGレベル:A(最低限)、AA(中程度、EUで法的に義務付け)、AAA(最大限)。モバイルアプリケーションにはレベルAAで十分です:テキストのコントラスト4.5:1以上、スクリーンリーダーのサポート、最小ターゲットサイズ44x44ピクセル、動画の字幕。
レベルA — 基本要件:画像のテキスト代替、キーボード操作、最低3:1のコントラスト。レベルAA — 中程度:コントラスト4.5:1、200%までの拡大サポート、正しい見出しとラベル。レベルAAA — 高レベル:コントラスト7:1、動画の手話、完全な音声操作。実際には、ほとんどの企業はAAを目標にしています。
| パラメータ | iOS | Android |
|---|---|---|
| スクリーンリーダー | VoiceOver | TalkBack |
| 要素ラベル | accessibilityLabel | android:contentDescription |
| 要素タイプ | accessibilityTraits | accessibilityRole(Compose)、フォーカスの重要性 |
| フォーカス順序 | 自動(変更可能) | accessibilityTraversalBefore/After |
| テキスト拡大 | Dynamic Type(UIFontMetrics) | sp(scale-independent pixels) |
| 動きの低減 | UIAccessibility.isReduceMotionEnabled | Settings.Global.getFloat(... ANIMATOR_DURATION_SCALE) |
表2. iOSとAndroidのアクセシビリティAPIの比較。名前は異なりますが、概念は同じです:ラベル、タイプ、フォーカス順序、テキスト適応サポート。
アクセシビリティテストは、アプリケーションがWCAG標準に準拠し、スクリーンリーダーと正しく動作するかを確認することです。最小限のテストセット:VoiceOver/TalkBackを有効にし、アプリケーションのすべての画面をナビゲートします。聞いて、すべての要素が読み上げられ、フォーカス順序が論理的で、不適切な要素(装飾的)が無視されていることを確認します。
自動化ツール:Xcode Accessibility Inspector(iOS用のXcodeでの監査)、Android Accessibility Scanner(画面をスキャンして問題を発見)、Axe DevTools、WAVE。これらのツールは、コントラスト、ターゲットサイズ、ラベルの有無などのパラメータをチェックします。
IT Sectrでは、毎回のリリース前にアクセシビリティレビューを実施しています。プロセスには以下が含まれます:自動監査(Accessibility Inspector)、VoiceOverとTalkBackを使用した手動テスト、コントラストとテキスト拡大の確認。問題はJiraに記録し、スプリントに割り当てます。これにより、すべてのプロジェクトでWCAGレベルAAを維持しています。
よくある質問
設定 → アクセシビリティ → VoiceOver。または、アクセシビリティショートカットを有効にしている場合、サイドボタン(またはホームボタン)を3回押します。素早く有効にするにはSiriを使用:「VoiceOverをオンにして」。Androidでは、設定 → アクセシビリティ → TalkBackでTalkBackを有効にします。
EUの法律(2025年からのEuropean Accessibility Act)および米国(ADA)に準拠するには、レベルAAが必要です。これは以下を意味します:コントラスト4.5:1、すべての要素にラベルあり、ターゲットサイズ44x44ピクセル以上、スクリーンリーダーサポート、動画の字幕。
はい。アクセシビリティはすべての人に役立ちます:高齢者、明るい日差しの下でのユーザー、赤ちゃんを抱えた親(片手で)。さらに、多くの国で法的要件です。インクルーシビティはオーディエンスを拡大し、すべての人のUXを向上させます。
以下のツールを使用します:WebAIM Contrast Checker(オンライン)、Figma/Sketch用のStark。WCAG AAの場合、通常テキストの最小比率は4.5:1、大きいテキスト(18px以上)は3:1です。AAAの場合 — それぞれ7:1と4.5:1です。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。