Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

アプリのユーザー補助機能をテストする

ユーザー補助機能をテストすることで、ユーザーの立場でアプリを体験し、見逃しがちな使い勝手の問題を見つけることができます。また、障がいのあるユーザーのみにとどまらず、すべてのユーザーにとって有用で使いやすいアプリにするためのヒントが得られます。

最良の結果を得るためには、このドキュメントで説明する以下のアプローチをすべて使用してください。

  • 手動テスト: Android ユーザー補助サービスを使用してアプリを操作します。
  • 分析ツールによるテスト: ツールを使用してアプリのユーザー補助機能の改善点を見つけ出します。
  • 自動テスト: Espresso と Robolectric でユーザー補助機能テストを有効にします。
  • ユーザーテスト: 実際にアプリを操作したユーザーからフィードバックを受けます。

手動テスト

手動テストでは、アプリをユーザーの視点で確認できます。Android AccessibilityService オブジェクトによって、アプリからユーザーへのコンテンツ表示方法や、ユーザーによるコンテンツ操作方法が変わります。ユーザー補助サービスを使用してアプリを操作することにより、ユーザーの立場でアプリを体験できます。

TalkBack

TalkBack は Android に組み込まれているスクリーン リーダーです。TalkBack を有効にすると、ユーザーは画面を見ずに Android デバイスを操作できます。視覚障がいのあるユーザーは、アプリの使用に TalkBack を必要とする可能性があります。

TalkBack をオンにする

  1. デバイスの設定アプリを開きます。
  2. [ユーザー補助] に移動し、[TalkBack] を選択します。
  3. TalkBack 画面の上部にある [OFF] をタップして TalkBack を有効にします。
  4. 確認ダイアログで権限を確認し、[OK] を選択します。

TalkBack でアプリを探索する

TalkBack を有効にした場合、一般的な移動方法には次の 2 つがあります。

  • 直線的なナビゲーション: 右または左にすばやくスワイプすることで、画面要素間を順番に移動できます。選択するには、任意の場所をダブルタップします。
  • タッチガイド: 画面上を指でドラッグすることで、指の下に何があるかを聞くことができます。選択するには、任意の場所をダブルタップします。

TalkBack でアプリを探索する手順は次のとおりです。

  1. アプリを開きます。
  2. スワイプして各要素を順番に移動します。
  3. 移動するごとに、以下の点を確認します。

    • 各要素の音声フィードバックにより、コンテンツや目的が適切に伝わるか(わかりやすいラベルの付け方をご覧ください)。
    • 案内は簡潔か。冗長になっていないか。
    • メインのワークフローを簡単に完了できるか。
    • スワイプですべての要素にアクセスできるか。
    • アラートなどの一時的なメッセージが表示された場合、それも読み上げられるか。

詳細については、TalkBack のユーザー ドキュメントをご覧ください。

任意: TalkBack のデベロッパー向けの設定

TalkBack のデベロッパー向けの設定を使用すると、TalkBack を使ったアプリのテストが容易になります。

デベロッパー向けの設定を表示、変更する手順は次のとおりです。

  1. デバイスの設定アプリを開きます。
  2. [ユーザー補助] に移動し、[TalkBack] を選択します。
  3. [設定] > [デベロッパー向けの設定] を選択します。

    1. [ログ出力レベル]: [VERBOSE] を選択します。
    2. [音声出力の表示]: TalkBack 音声出力を画面に表示するには、この設定を有効にします。

スイッチ アクセス

スイッチ アクセスを利用すると、タッチ スクリーンの代わりにスイッチを使って Android デバイスを操作できます。スイッチには、AbleNet、Enabling Devices、RJ Cooper、Tecla* が販売している支援技術デバイス、外部キーボードのキー、ボタンといった種類があります。このサービスは、運動機能障がいのあるユーザーに役立ちます。

* ここに挙げた会社またはその製品を宣伝するものではありません。

スイッチ アクセスを有効にする

スイッチ アクセスを簡単に設定するには、2 つのスイッチを使用します。1 つ目のスイッチは「次へ」スイッチとして、画面上でフォーカスを移動するのに使用し、2 つ目のスイッチは「選択」スイッチとして、フォーカスした要素を選択するのに使用します。この 2 スイッチ方式には、ハードウェア キーの任意のペアを使用できます。

注: スイッチ アクセスのエクスペリエンスは、次のように、使用するツールやソフトウェアによって異なる可能性があります。

  • キーボードなどの外部スイッチを使用する場合は、追加のセットアップ手順があります。たとえば、ソフト キーボードを再度有効にする必要があります。詳細については、スイッチ アクセスのユーザー ドキュメントをご覧ください。
  • TalkBack 5.1 以降を使用している場合は、スイッチ アクセスを設定するための設定ウィザードを利用できます。下記の手順の代わりにこのウィザードを使用するには、[設定] > [ユーザー補助] > [スイッチ アクセス] > [設定] > [スイッチ アクセスの設定を開く] を選択します。

音量小ボタンを「次へ」スイッチ、音量大ボタンを「選択」スイッチとしてスイッチ アクセスを設定するには、次の手順を行います。

  1. TalkBack が無効になっていることを確認します。
  2. デバイスの設定アプリを開きます。
  3. [ユーザー補助] に移動して [スイッチ アクセス] を選択し、[設定] を選択します。
  4. [スイッチ アクセスの設定] 画面で、[自動スキャン] がオフになっていることを確認します。
  5. 次のようにして、音量小ボタンを「次へ」スイッチに設定します。

    1. [スキャン用のスイッチを割り当てる] > [次へ] をタップします。
    2. ダイアログが開いたら、音量小ボタンを押します。ダイアログに KEYCODE_VOLUME_DOWN が表示されます。
    3. 確認して [OK] をタップし、ダイアログを終了します。
  6. 次のようにして、音量大ボタンを「選択」スイッチに設定します。

    1. [選択] をタップします。
    2. ダイアログが開いたら、音量大ボタンを押します。ダイアログに KEYCODE_VOLUME_UP が表示されます。
    3. 確認して [OK] をタップし、ダイアログを終了します。
  7. [スイッチ アクセスの設定] に戻るには、戻るボタンを押します。

  8. 任意: TalkBack 5.1 以降を使用している場合は、[音声フィードバック] を選択することで音声フィードバックを有効にできます。

  9. スイッチ アクセスのメイン画面に戻るには、戻るボタンを押します。

  10. [スイッチ アクセス] 画面の上部にある [OFF] をタップして、スイッチ アクセスを有効にします。

  11. 確認ダイアログで権限を確認し、[OK] を選択します。

スイッチ アクセスでアプリを探索する

スイッチ アクセスでアプリを探索する手順は次のとおりです。

  1. アプリを開きます。
  2. スキャンを開始するため、「次へ」スイッチ(音量小)を押します。
  3. 選択対象のアイテムがハイライト表示されるまで「次へ」を押し続けます。
  4. ハイライト表示されたアイテムを選択するには、「選択」スイッチ(音量大)を押します。
  5. 移動するごとに、以下の点を確認します。

    • メインのワークフローを簡単に完了できるか。
    • テキストなどの入力がある場合は、コンテンツの追加や編集を簡単に行えるか。
    • 操作可能なアイテムのみがハイライト表示されるか。
    • 各アイテムがハイライト表示されるのは 1 回のみか。
    • タッチ スクリーン操作で利用できる機能はすべて、スイッチ アクセス内で選択できるコントロールまたはカスタム アクションでも利用できるか。
    • TalkBack 5.1 以降を使用していて、音声フィードバックを有効にしている場合、各要素の音声フィードバックにより、コンテンツや目的が適切に伝わるか(わかりやすいラベルの付け方をご覧ください)。

任意: グループ選択を使用してスキャン可能なすべてのアイテムを表示する

グループ選択とは、スイッチ アクセスの移動方法の一つで、スキャン可能なアイテムをすべて一度に表示できます。このオプションを使用すれば、画面上の要素が適切にハイライト表示されるかどうかを簡単に確認できます。

グループ選択を有効にする手順は次のとおりです。

  1. デバイスの設定アプリを開きます。
  2. [ユーザー補助] に移動して [スイッチ アクセス] を選択し、[設定] を選択します。
  3. [スイッチ アクセスの設定] 画面で、[自動スキャン] がオフになっていることを確認します。
  4. [スキャン方法] > [グループ選択] を選択します。
  5. [スキャン用のスイッチを割り当てる] をタップします。
  6. グループ選択スイッチ 1 およびグループ選択スイッチ 2 の下のテキストから、それぞれにスイッチが割り当てられていることを確認します。スイッチ アクセスを有効にする手順を実行済みの場合は、すでに音量ボタンが割り当てられているはずです。

グループ選択を使用したスイッチ アクセスでアプリを探索するには、次の手順を行います。

  1. 「選択」スイッチ(音量大)を押して、現在の画面で操作可能なアイテムをすべてハイライト表示します。以下の点を確認します。

    • ハイライト表示されているのは操作可能なアイテムのみか。
    • 操作可能なアイテムはすべてハイライト表示されているか。
    • ハイライト表示されたアイテムの密度は適切か。
  2. ハイライト表示を消去するには、別の画面に移動します。

グループ選択を使用して移動する方法の詳細については、スイッチ アクセスを使用する場合のヒントをご覧ください。

その他のサービス

Android には、アプリのユーザー補助機能をテストするために追加できるツールがいくつか用意されています。

BrailleBack

Google BrailleBack は、更新可能な点字ディスプレイを Bluetooth で Android デバイスに接続できるようにするアプリです。BrailleBack と TalkBack を連携させて、音声と点字を組み合わせたエクスペリエンスを提供できます。

点字ディスプレイを使ってアプリをテストする方法については、BrailleBack をインストールしてオンにするをご覧ください。

次のようにして BrailleBack 設定のオーバーレイ オプションを使用すると、点字ディスプレイを接続することなく、BrailleBack でレンダリングされた点字(および ASCII 変換)を表示できます。

  1. デバイスの設定アプリを開きます。
  2. [ユーザー補助] に移動して [BrailleBack] を選択します。
  3. [設定] > [開発者向けオプション] > [画面に点字出力を表示] を選択します。

Voice Access

Voice Access を利用すると、音声コマンドで Android デバイスを操作できます。Voice Access は、Android 5.0(API レベル 21)以降を搭載したデバイスで利用できます。Voice Access を使用してアプリをテストする方法については、Voice Access のスタートガイドをご覧ください。

分析ツール

分析ツールを使用したテストでは、手動テストでは見逃されがちなユーザー補助機能改善のヒントを発見できます。

ユーザー補助検証ツール

ユーザー補助検証ツールは、画面をスキャンしてアプリのユーザー補助機能に関する改善案を提示するアプリです。ユーザー補助機能テスト フレームワークを使用し、コンテンツ ラベル、操作可能なアイテム、コントラストなどの確認結果に基づいて具体的な提案を行います。

詳細:

Google Play のリリース前レポート

アプリを Google Play で配布する場合は、そのアプリのリリース前レポートを利用できます。このレポートは、Google Play Console からリリース チャンネルにアプリをアップロードして間もなく、Google Play によって生成されます。リリース前レポートには、Google Play で実施されたアプリのテスト結果が示されており、Google Play Console からも確認できます。

特に、Google Play でのテストはユーザー補助機能テスト フレームワークを使用して行われます。 テストの結果は、アプリのリリース前レポートの [ユーザー補助機能] タブにある表に示されます。

この表には、改善提案が次のカテゴリごとにまとめられています。

タップ ターゲットのサイズ
フォーカス対象領域、つまりタップ ターゲットのサイズが推奨よりも小さい操作対象要素。
低コントラスト
テキスト要素とその背景の色のコントラスト比が推奨値よりも低いインスタンス。
コンテンツ ラベル
その要素の目的を説明するラベルがない UI 要素。
実装
システムのユーザー補助サービスによる UI 要素の解釈を困難にするような UI 要素属性の割り当て。例として、編集可能な View ラベルに定義した説明が不適切、要素の移動順序が論理的配置と一致しない、などが挙げられます。

リリース前レポートには、表の後にアプリのスクリーンショットが表示されます。このスクリーンショットには、各カテゴリのユーザー補助機能改善に役立つヒントが含まれています。スクリーンショットを選択すると、改善の提案や、アプリ内で同じ改善を適用できる箇所の包括的なリストなど、詳細を表示できます。

図 1 に、Google Play のリリース前レポートの [ユーザー補助機能] タブに表示される表の例を示します。また、この図にはアプリのスクリーンショットも含まれており、[Next] ボタンのタップ ターゲットのサイズが推奨値よりも小さいことが示されています。

リリース前レポート セクションのスクリーンショット
図 1. リリース前レポートの [ユーザー補助機能] タブの概要表(左)とスクリーンショット(右)の例

UI Automator ビューア

uiautomatorviewer ツールは、Android デバイスに現在表示されている UI コンポーネントをスキャンして分析するのに便利な GUI を備えています。このツールを使用して、レイアウト階層を検査し、デバイスのフォアグラウンドに表示される UI コンポーネントのプロパティを確認できます。この情報から、特定の表示プロパティとマッチングする UI セレクタを作成するなど、よりきめ細かなテストを作成できます。このツールは、Android SDK の tools ディレクトリにあります。

ユーザー補助機能のテストにおいて、このツールは他のテスト方法で見つかった問題をデバッグするのに役立ちます。たとえば、手動テストの結果、テキストが読み上げられるべきビューで読み上げられなかったり、フォーカスされないはずのビューがフォーカスされたりした場合に、このツールを使ってバグの場所を特定できます。

UI Automator ビューアの詳細については、複数アプリにわたる UI テストをご覧ください。

lint

Android Studio では、ユーザー補助機能のさまざまな問題について lint 警告が表示され、ソースコード内の該当箇所へのリンクが提示されます。次の例では、画像に contentDescription 属性がありません。コンテンツの説明が欠けている場合、次のメッセージが表示されます。

[Accessibility] Missing 'contentDescription' attribute on image

図 2 に、Android Studio でのこのメッセージの表示例を示します。

メッセージのスクリーン キャプチャ
図 2. contentDescription 属性が欠けていることを示す Android Studio のメッセージ

ユーザー補助サービス(スクリーン リーダーなど)のユーザーがアプリ内でこの画像に遭遇した場合、画像の意味を理解できないことになります。

自動テスト

Android プラットフォームは、EspressoRobolectric など、いくつかのテスト フレームワークをサポートしています。Espresso や Robolectric を使用すると、アプリのユーザー補助機能を評価するための自動テストを作成、実行できます。

Espresso と Robolectric を使用したユーザー補助機能のテストに関する概要動画を見るには、次の動画の 31:54 から 34:19 までをご覧ください: インクルーシブな設計とテスト: アプリをあらゆるユーザーにとってより使いやすいものにする(Google I/O 2016)

Espresso

Espresso は、UI テストを迅速かつ簡単に行えるように設計された Android テスト ライブラリです。これを使用すると、テスト中のアプリの UI コンポーネントとやり取りし、特定の動作が発生したことや、特定の条件が満たされたことを確認できます。

このセクションでは、Espresso を使用してユーザー補助機能チェックを実行する方法について説明します。

チェックを有効にする

次のように AccessibilityChecks クラスを使用して、ユーザー補助機能のテストを有効にして設定することができます。

Kotlin

import androidx.test.espresso.accessibility.AccessibilityChecks

@RunWith(AndroidJUnit4::class)
@LargeTest
class MyWelcomeWorkflowIntegrationTest {
    companion object {
        init {
            AccessibilityChecks.enable()
        }
    }
}

Java

import androidx.test.espresso.accessibility.AccessibilityChecks;

@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyWelcomeWorkflowIntegrationTest {
    @BeforeClass
    public static void enableAccessibilityChecks() {
        AccessibilityChecks.enable();
    }
}

デフォルトでは、このチェックは ViewActions で定義されたビュー アクションを行うと実行されます。チェックの範囲には、アクションを行ったビューと、そのすべての子孫ビューが含まれます。次のコード スニペットに示すように、truesetRunChecksFromRootView() に渡すことで、それぞれのチェックを行っている間に画面のビュー階層全体を評価できます。

Kotlin

AccessibilityChecks.enable().setRunChecksFromRootView(true)

Java

AccessibilityChecks.enable().setRunChecksFromRootView(true);

結果の一部を抑制する

Espresso がユーザー補助機能チェックを実行した後、すぐには対応できない改善点が見つかることがあります。その結果が原因で Espresso テストの失敗が続かないように、一時的にテストを無視できます。ユーザー補助機能テスト フレームワーク(ATF)では、setSuppressingResultMatcher() メソッドでこの機能を使用できます。このメソッドは、指定されたマッチャー式を満たす結果を抑制するように Espresso を設定します。

ユーザー補助機能の 1 つの観点に対処する変更をアプリに加えるとき、他の観点に関する結果をできるだけ多く Espresso に表示させるのが有益です。そのため、特定の改善点のみ抑制することをおすすめします。

後で対処することを予定しているユーザー補助機能テストの結果を一時的に表示しないようにするとき、似たような結果を誤って表示しないようにするのが重要です。このために、範囲を限定したマッチャーを使用します。具体的には、次のユーザー補助機能チェックのそれぞれを満たす場合にのみ結果を抑制するように、マッチャーを選びます。

  1. タッチ ターゲットのサイズを確認するなど、特定タイプのユーザー補助機能チェック。
  2. ボタンなどの特定の UI 要素を評価するユーザー補助機能チェック。

Espresso テストで表示する結果を定義するために、ATF で定義されているマッチャーを利用できます。次の例では、1 つの TextView 要素の色のコントラストに関連するチェックの結果を抑制します。要素の ID は countTV です。

Kotlin

AccessibilityChecks.enable().apply {
        setSuppressingResultMatcher(
                allOf(
                    matchesCheckNames(`is`("TextContrastViewCheck")),
                    matchesViews(withId(R.id.countTV))
                )
        )
}

Java

AccessibilityValidator myChecksValidator = AccessibilityChecks.enable();
Matcher<? super AccessibilityViewCheckResult> myChecksMatcher =
        Matchers.allOf(matchesCheckNames(is("TextContrastViewCheck")),
                       matchesViews(withId(R.id.countTV)));
myChecksValidator.setSuppressingResultMatcher(myChecksMatcher);

Robolectric

Robolectric は、エミュレータを起動することなく、JVM で実際の Android コードをテストできるオープンソースの Android テスト ライブラリです。Robolectric のスタートガイドをご確認ください。

既知の問題を抑制する

Robolectric のチェックを初めて有効にした際には、すぐに対処できない問題がたくさん見つかる可能性があります。このようなエラーを抑制するには、抑制対象の結果に対してマッチャーを設定します。詳細については、Robolectric で利用可能な AccessibilityUtil クラスの setSuppressingResultMatcher() メソッドについてのドキュメントをご覧ください。

ユーザーテスト

このガイドの他のテスト方法に加え、ユーザーテストを行うことで、アプリの使いやすさに関する具体的かつ有益な情報が得られる可能性があります。

アプリをテストできるユーザーを見つけるには、次のような方法を使います。

  1. 障がいのある人々にトレーニングを提供している地元の組織や大学に問い合わせる。
  2. ソーシャル サークルに問い合わせる。障がいのある人の中から積極的な協力者が見つかるかもしれません。
  3. ユーザーテスト サービス(usertesting.com など)に、アプリのテストが可能か、さらに障がいのあるユーザーの参加が可能かを問い合わせる。
  4. ユーザー補助フォーラム(accessibleeyes-free など)に参加し、ボランティアにアプリの試用を依頼する。

その他のヒントについては、次の動画のユーザーテスト セクション(31:10 から 44:51 まで)をご覧ください: 舞台裏: Android ユーザー補助の新機能(Google I/O 2016)