Axe DevTools Mobile 2026年10月7日リリースノート
2026年10月7日
コンポーネントバージョン
iOS
- iOS SDK (axeDevToolsXCUI v4.3.0)
更新方法: iOS SDK
Android
- Android SDK (axe-devtools-android v9.3.0)
- Android Gradle Plugin (axe-devtools-android-plugin v1.3.1)
- Android Analyzer (Axe Accessibility Analyzer v4.1.0)
更新方法 Android Gradle Plugin, Android Analyzer
修正
Android
- Auto Scanを使ってJetpack Compose UIテストを実行した際に、結果がほとんど返ってこない、または全く返ってこない問題を修正しました。Auto Scanはより多くの画面をキャプチャするようになり、より正確な結果を提供します。
- AndroidライブラリとGradleプラグインのセキュリティ修正
アップデート
iOS
runScansAndReport()はskippedScanCountの文字列値をsummaryおよびhtmlReportPathと共に返すようになりました。キャプチャされた結果に含まれなかった画面の数が分かるようになりました。画面がスキップされない場合、返される値は"0"です。
既知の問題
下記の問題を経験されている場合は、helpdesk@deque.comまたはsupport.deque.comにご連絡ください。解決次第、または記載されていない回避策が特定された際にご通知いたします。
- Axe DevTools Mobileの自動テストは、ネイティブiOS、ネイティブAndroid、React Nativeアプリケーションで動作します。技術スタックにおけるアクセシビリティテストソリューションについては、お客様のDeque担当者にお問い合わせください。
- ウェブビューやレンダリングされたPDFから一部の結果を得ることができますが、最も包括的なウェブアクセシビリティテストを行うためには、Axe DevTools for WebまたはAxe Monitorを使用することを強くお勧めします。
iOS
重い画面に対する推奨タイムアウト設定 axeScan
複雑なビュー階層を持つ画面をスキャンする際、 axeScan コマンドの完了に60秒以上かかることがあります。AppiumのWebDriverAgent (WDA)プロキシは未知のコマンドに60秒のデフォルトタイムアウトを適用し、 axeScan はそのカテゴリに該当します。スキャンがその時間内に完了しない場合、WDAがリクエストをキャンセルし、テストはタイムアウトエラーをスローします。
WDAプロキシされたコマンドのコマンドごとのタイムアウトを上書きするには、 axeScan、Appiumの機能に以下の設定を追加することをお勧めします:
appium:commandTimeouts: 240000(4分)appium:wdaConnectionTimeout: 30000(5分)
Note: appium:newCommandTimeout is a different setting. It controls how long Appium waits between commands from the test script. That is not the cause of this issue. The relevant setting is appium:commandTimeouts
Desktop Analyzerシミュレータの起動失敗
Xcode 27を使用していて、モバイルアナライザーデスクトップアプリが2.0.0より古い場合、アプリはiOSシミュレータを開くことができません。起動しようとすると失敗します。 /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app この問題が解決されるまで、シミュレーターを使用したスキャンを開始することができません。
Xcode 27でシミュレータを使用してスキャンを実行するには、Desktop Analyzerをバージョン2.0.0以上に更新してください。この更新により、アクセシビリティ結果は Axe Developer Hubで見つけることができます。
iPadでのVision OCRの不確実性がVisionベースのルールに影響
Axe DevTools SDKはAppleのVisionフレームワークを使用して、いくつかのアクセシビリティルール(例:色のコントラスト、重なり合うビュー、Vision検出テキストに依存するルール)における画面上のテキストを読み取ります。
Visionは同じ画面を何度も走らせても同じテキストを検出するとは限りません。Visionがコントロール上のテキストを逃した場合、そのテキストに依存するルールはその要素で実行されません。同じ画面の2回のスキャン間で結果が異なることがあり、1回のスキャンで失敗する問題が次のスキャンでは存在しない場合があります。
Visionベースのルールが失敗を報告した場合、その失敗自体は正確です。インコンシステンシーは、そのルールが実行されるかどうかの問題です。この問題を克服するには、次のことを試みてください:
- スキャンを再実行します。Visionベースのルールがコントロールのためにスキップされた場合、同じ画面の別のスキャンでそれを捉えることがよくあります。
- Visionベースのルール失敗は有効として扱います - もし色のコントラストがコントロールをフラグした場合、そのコントラスト問題は実際に存在し、対処すべきです。
- 手動で確認するには、関連するWCAG成功基準のためのDeque Universityの参照を使用してください。(リンクは各ルールページの下部に見つかります。)
テキストにパーセント記号が含まれる画面でのSupports Dynamic Typeルールの不完全な結果
iOS 26以降、画面に「50%オフ」のようにテキストにパーセント記号が含まれている場合、Supports Dynamic Typeルールはパスまたは不合格ではなく、不完全として報告されることがあります。このルールはAppleが提供するアクセシビリティ監査に依存しており、その監査はパーセント記号に遭遇するとテストの実行を停止します。テストを継続するため、このルールはその画面のチェックをスキップし、パーセント記号を含む各要素に対して不完全を報告します。その他のルールは画面上で通常通り実行され、他の画面への影響はありません。
アクションは必要ありません。スキャンは完了しますが、これらの画面のDynamic Typeサポートを確認するには、デバイスで**設定** > **アクセシビリティ** > **ディスプレイとテキストサイズ** > **大きなテキスト**でテキストサイズを増やし、画面上のテキストが適切に拡大することを確認してください。この問題はAppleに報告されています。(#2985)
アイコンのみの要素で、OCRの影響で色コントラストが実行されることがあります
色コントラストルールは、AppleのVisionフレームワーク(光学文字認識、つまりOCR)を使用して要素の境界内のテキストを読み取ります。OCRは、矢印の逆記号(〈)や箇条書き記号、装飾シンボルなどの小さなアイコン風のグリフをテキストとして誤識別することがあります。それにより、色コントラストルールが読み取れるテキストを含まない要素上で実行されることがあり、アイコンのみのボタンについて結果が生じることがあります。OCR出力はスキャンごとに決定的でないため、同じ要素があるスキャンで色コントラスト結果に現れ、次のスキャンで「適用外」と報告されることがあります。これはOCRの特性として知られており、ルールのバグではありません。
この問題を回避するためには、 ignore APIを使用して、影響を受けた要素に対する色コントラストの結果を抑制できます。
// Ignore Color Contrast for a specific element by accessibility identifier
axeDevTools?.configuration.ignore(rulesFor: [
"backButton": [AxeRuleId.ColorContrast.toString()]
])
// Or ignore Color Contrast globally
axeDevTools?.configuration.ignore(rule: AxeRuleId.ColorContrast.toString())ルールを無視することについて詳しくは、 ルールの無視方法で見つけることができます。
Flutterアプリでのスクリーンタイトルの誤検知
Flutterは、 AppBar.title をネイティブのスクリーンタイトルプロパティにマッピングしません — UIViewController.title、これにより、説明的なタイトルが存在するかどうかにかかわらず、すべてのFlutterスクリーンでスクリーンタイトルルールに失敗します。
これは、 flutter/flutter#185894で見つけることができます。
小さな画面でのグラデーション背景に関する色コントラストルールの誤検知
アクセシビリティチェックを小さな画面サイズまたは小さなフォントサイズで実行する際、色コントラストルールがグラデーション背景について誤検知することがあります。そのような場合、前景色を判断できず、代わりに背景色同士を比較しようとして失敗することがあります。
この問題を回避するには、大きなデバイスでアクセシビリティチェックを実行してみてください。または、テストでルールを無視し、これらのビューについて手動で色コントラストを確認することもオプションです。
不正確な isVisible プロパティがXCTestから報告される
AppleのアクセシビリティAPIは、WKWebView内のWebコンテンツを「isVisible」として誤報告することがあります。たとえWebビューがネイティブオーバーレイ(モーダルビュー、アラート、または他のネイティブUI要素)で覆われていても、これはアクセシビリティシステムがWKWebViewのコンテナ自体が表示されているかどうかをチェックし、実際にユーザーが見ることができるかどうかではないために起こります。
iOS 26のステッパーに関するアクセシビリティのバグ
iOS 26には、デフォルトのステッパーボタンがアシスティブテクノロジーによって「減光されている」とアナウンスされないアクセシビリティのバグがあります。そのため、iOSルールでもこれらのボタンが有効と見なされます。Appleにバグ報告が提出されていますが、これが解決されるまで、以下のルールが無効なステッパーボタンに対する結果を報告するかもしれません: AssociatedText、 InaccessibleAction、および ColorContrastで見つけることができます。
Appleがこのバグを修正するまでの解決策として、[ルールを無視する](ios-ignore-rule)ことができます。デフォルトのステッパーボタンは「Decrement」と「Increment」という識別子を持ち、必要に応じて識別子で無視することができます。
Color Contrast rule does not run when text and background colors are the same
Our Color Contrast rule depends on Machine Learning to detect text, which ensures that the text being scanned is visible to users of your application. In cases where the text contained in a view is the same color as the background, our Machine Learning algorithm is unable to detect if any text is present, so the Color Contrast rule does not run on this view.
誤検知: SwiftUIとクロスプラットフォームアプリでのLabelInNameおよびLabelAtFront
一部の画面では、 LabelInName および LabelAtFront に誤った associatedText プロパティが見つかることで誤検知が発生することがあります(#1622)
ネストしたコントロールに対するルール
私たちのルール改善を検討する際、XCTestではネストしたコントロールがアクセシビリティツリーに返されないことが分かりました。Appleにバグが報告されています。(#1110)
UIKitアプリでのImageView Nameルールのレビュー結果が必要
UIKitアプリでは、`accessibilityLabel`が設定されていない画像がデフォルトでアシスティブテクノロジーでフォーカスされません。
Appleからのフォーカス可能性をチェックするためのプロパティは、画像に`accessibilityIdentifier`が設定されている場合、不正確かもしれません。この予期しない動作により、UIKitアプリにおけるImageView Nameの問題の結果が「再検討が必要」と報告されることになります。Appleにバグ報告がされています。(#1633)
誤検知: スクロールビュー、Label In Name、Label at Front、v2.11.0のImage View NameおよびActive Control Name
私たちは以下の誤検知に対する修正を積極的に行っており、修正がリリースされ次第、このリストは更新されます。
In Scroll View
バナー動作の要素、固定のヘッダー/フッター、フローティングアクションボタン、カスタムタブビュー内のテキストが「再検討が必要」または「失敗」とフラグされることがあります。これらの要素をテキストが大きく必要な人に利用可能にするには、 UILargeContentViewerを使用してください。(#622, #2077)
v2.11.0 Image View Name & Active Control Name
UIImageViewが accessibilityIdentifier が設定されているがVoiceOverでフォーカスできず、その中にフォーカスできるコントロールがネストされている場合、Active Control NameでUIImageViewに誤検知が報告されることがあります。 accessibilityIdentifier を削除すると問題が解決します。Appleにバグが報告されています。(#1633)
Label In Name and Label At Front
これらの2つのルールは、ルールの状態を判断するために近くの要素の中からコントロールの見えるラベルを探します。一部のビュー階層では、誤った近くのテキストが検出され、これらのルールが失敗することがあります。(#1622)
Android
Label at Frontの誤検知とテキストの可視性の障害
Label at Frontルールは、要素の見えるラベルがアナウンスされるテキストの最初に来ることをチェックします。インタラクティブな要素の見えるテキストに略語(例:「GB」、「km」)や隠れた/切り捨てられた識別子が含まれ、アクセシビリティアナウンスメントが(例:「ギガバイト」、「キロメートル」)のような表された単語で構成される場合、これは推奨されるパターンですら、ルールの失敗が起こることがあります。
インタラクティブな要素の見えるラベルの最初の部分がスクリーンリーダーのアナウンスメントの最初と一致し、略語や隠された部分が異なるだけの場合、フラグされた結果は無視しても安全です。フルアナウンスメントが意図した通りに読まれていることをスクリーンリーダーで確認してください。
フォーカス可能なテキストに関する潜在的なアクセシビリティの懸念
「連絡先アイコン」などの装飾テキストを使用する際に、アクセシビリティの問題を引き起こす可能性があります。テキストビューを使用して文字を表示し、希望の文字をベクターとして生成する代わりに、そのテキストビューがアクセシビリティに重要でないと宣言した場合、アクセシビリティ違反が導入されたかどうかを正確には判定できなくなります。
フォーカス可能なテキストを編集して2文字以下を無視すると、多くの言語の1語のボタン(例:「OK」、「No」、「Sí」)を意図せずに無視する可能性があります。これらの問題を避けるため、アイコンで表現したい単語から希望の文字を取り出し、別々のテキストビューとしてではなく画像の一部として文字を生成するべきです。これにより、`FocusableText`はそれらのビューでは実行されません。
Flutterアプリでのスクリーンタイトルの誤検知
Flutterは、 AppBar.title をネイティブのスクリーンタイトルプロパティにマッピングしません — Activity.setTitle、これにより、説明的なタイトルが存在するかどうかにかかわらず、すべてのFlutterスクリーンでスクリーンタイトルルールに失敗します。
これは、 flutter/flutter#185894で見つけることができます。
アナウンスされたテキスト検出の誤検出
一部のケースでは、支援技術が AccessibilityEvent Androidシステムからの説明に依存して、他のアナウンスがない場合にユーザーに情報を伝えます。 AccessibilityEventはユーザーの操作によってトリガーされるため、この情報が提供されていない場合、正しい説明にアクセスできません。
この問題を回避するには、すべての関連ビューがアクセシビリティにとって重要であるとマークされていることを確認してください。これにより、Talkbackがビューから情報を取得できるようになり、それを当社のツールが検出可能になります。
テキストと背景色が同じ場合に色コントラストルールが実行されない
私たちの色コントラストルールは、機械学習を利用してテキストを検出し、アプリケーションのユーザーに見えるかどうかを確認します。ビュー内のテキストが背景色と同じ場合、機械学習アルゴリズムはテキストが存在するかどうかを検出できないため、このビュー上で色コントラストルールは実行されません。
EditTextName Android 7 (SDK 24-25)にて
XMLで書かれたアプリがヒントテキスト機能を使用している場合、 EditTextName ルールによる誤検出が生じることがあります。ヒントテキストはAndroid 8 (SDK 26)まで導入されていません。この要素をXMLアプリで使用すると、テキスト入力フィールドの値としてヒントテキストが割り当てられます。より新しいバージョンのAndroidは、この体験のアクセシビリティをより良くサポートしています。
この問題を克服するために、最初の推奨は、Androidの新しいバージョンでテストを実行することです。しかし、アプリが古いバージョンのAndroidでもアクセシブルであることが重要な場合は、 hintText この機能の使用を避けることを検討してください。それは公式にはサポートされていません。
Androidの隠されたビューが結果を返す
画面上に他のビューの背後に隠されたビューの結果が表示されることがあります。これらの隠されたビューは支援技術では利用できませんが、Axe DevTools Mobileはそれらを問題として報告します。
この複雑な問題の修正に取り組んでいます。それまでの間、TalkBackがこれらのビューに到達できない場合は、対応する問題を無視しても構いません。それらの問題を修正することでアクセシビリティを確保する必要はありません。
ML Kit テキスト検出実行中のエラー
ML Kitテキスト検出は、Axe DevTools Mobileの多くのルールで結果の正確性を確保するために必要です。ML Kitライブラリは、EspressoまたはUIAutomatorの自動テストでAxe DevTools Mobileを参照する際に自動的にインポートされるべきです。しかし、場合によっては自動インポートが行われず、logcatに以下のエラーが表示されます。
Axe DevTools Android: エラー mlKit テキスト検出実行中: MlKitContext が初期化されていません。
この問題を解決するには、プロジェクトに手動でML Kitライブラリをインポートする必要があります。アプリケーションの build.gradle ファイル内の依存関係の下に次の行を追加してください。
debugImplementation 'com.google.mlkit:text-recognition:16.0.1'Android Mobile SDK の "Getting Started" セクションの中の 実装
タッチターゲットの間隔とJetpack Compose
タッチターゲットスペーシングルールは、Jetpack Composeで書かれたスライダーコンポーネントには現在適用されていません。現時点ではできる対応はありませんが、修正が近いうちに行われる予定です!
API 30でのローカル保存時のエラー
Android API 30では、結果をローカルに保存しようとする場所の1つで権限エラーが発生します。このエラーが表示されても、結果はJSONファイルとして保存されます。このエラーは、以下のブロック内のコードをコメントアウトすることで抑制できます。
def clearDirectoryTask = task('clearDirectoryTask', type: Exec, group: 'reporting') {
executable "${android.getAdbExecutable().toString()}"
args 'shell', 'rm', '-r', '/storage/emulated/0/Documents/AxeTestCases'
// finalizedBy {
// fetchAndroidFolderAxeReportsTask
// }
}このコードはAPI 30に対してのみコメントアウトする必要があることを注意してください。他のAPIレベルでローカルに保存する際に問題を引き起こす可能性があります。
ハイブリッドアプリおよびクロスプラットフォームアプリでのスクロール検出
一部のハイブリッドおよびクロスプラットフォームアプリでは、スクロールビュー内の項目が画面の一部にしか表示されない場合に予期しない結果が返されることがあります。アクセシビリティのために要素をテストするには、完全に画面上に表示されていることを確認してからスキャンを実行してください。
アナライザーアプリ:浮動アクションボタンが消える
API 31(Android 12)で導入された機能として、非システムオーバーレイを非表示にする機能があります。Axe Analyzerアプリを利用するには、この設定がオフになっていることを確認してください。この機能をセキュリティ強化のために利用することを選択した場合は、内部テストビルドで安全にテストデータを利用し、セキュリティの懸念を排除することでオフにしておくことをお勧めします。 Note: this setting does not affect Google's accessibility scanner app as it's considered a system overlay.
Axe Accessibility Analyzer アプリを利用するには、影響を受けたアクティビティウィンドウでの setHideOverlayWindows(true) メソッドへの呼び出しを更新してください。 setHideOverlayWindows(false)
ダッシュボードでのスクリーンショット欠落(ブラックボックス)
Axe DevTools for Mobileの完全な機能をアンロックするには、スクリーンショットが有効化されていることを確認してください。セキュリティ上の懸念を避けるために、モックデータを使用したアプリのデバッグまたはテストバージョンでスクリーンショットを有効にすることをお勧めします。当社のガイドをチェックして、 Androidアプリでのスクリーンショットの有効化方法をご覧ください。
クラッシュ minifiedEnabled がtrueに設定されたとき
ビルドを縮小する場合、Axe DevToolsライブラリへのログインを試みる際にアダプタが見つからないというエラーログとともにクラッシュすることがあります。Axe DevToolsを実装したデバッグビルドには縮小を無効にします。(#729)
r8が有効なビルドでエラーを投げる
r8が有効なビルドでは、axeDevToolsライブラリを縮小しようとすることで、次のようなエラーが発生する可能性があります。
Caused by: java.lang.NullPointerException: throw with null exception
at g.b.b.a$a.a(Unknown Source:1)
at g.b.b.a$a.a(Unknown Source:0)
at g.b.b.a.a(AccessToken.java:190)
このエラーを解決するには、axeDevToolsクラスを保持するために次の行をProGuardファイルに追加してください。
keep class com.deque.** { *; }Compose API使用時のエラーメッセージ
Compose APIは非推奨ですので、 レイアウト非依存API を使用して、引き続き更新を受け取るようにしてください。もしCompose APIを使用し続け、「予想されるノードを '1' に指定しましたが、条件に合致するノードが '2' つ見つかりました」や、「Viewが初期化されていません。AxeDevToolsCompose.setComposeTestRule() を呼び出しましたか?」のようなエラーに遭遇した場合は、 Compose setTestTag APIで見つけることができます。
MAUI: Edit Text Nameルール
MAUIアプリのアーキテクチャの制約により、Androidエコシステムでのレンダリングは、SDKバージョン5.5.0以降において、失敗が疑われる場合ダッシュボードに"要レビュー"として表示されます。この場合は動作の正確性を手動で確認してください。
ネイティブAndroid: カスタムダイアログ/モーダル
ネイティブコントロールを拡張しないカスタムダイアログやモーダルを実装している場合、モーダルの背後にあるビューの結果が表示されることがあります。このような場合、当社のツールをこれらのカスタムモーダルやダイアログに対して実行するのを避け、支援技術と期待通りに動作することを手動で確認することをお勧めします。
Webダッシュボード
スクリーンショットがありません
スキャン詳細ページにスクリーンショットが表示されない場合、アプリがスクリーンショットの撮影を禁止している可能性があります。多くの場合、これは本番アプリケーションのセキュリティ理由によるものです。テストビルドでこの要件を削除し、Axe DevTools Mobile Dashboardでの完全な機能を許可することを検討してください。
一部のAndroidスキャン名が未フォーマット
画面のタイトルにデフォルト設定されている一部のAndroidスキャン名は、バンドル識別子を含む完全なクラス名として表示されます。次回のリリースでは、画面タイトルをより読みやすい名前にフォーマットするように解決されます。回避策として、ダッシュボードまたはフレームワークからスキャン名を設定できます。(#1643)
