Axe DevTools Mobile 2026年8月5日リリースノート
2026年8月5日
iOS
- iOS SDK (axeDevToolsXCUI v4.1.0)
- iOSアナライザーデスクトップアプリ (axe-devtools-mobile-desktop-app v1.3.0)
更新方法: iOS SDK、iOSアナライザーデスクトップアプリ
Android
- Android SDK (axe-devtools-android v9.1.0)
- Android Gradleプラグイン (axe-devtools-android-plugin v1.2.0)
- Androidアナライザー (Axe Accessibility Analyzer v3.2.0)
更新方法 Android Gradleプラグイン、Androidアナライザー
新機能
自動スキャン時に画面をスキップ
SDKで自動スキャンをご使用ですか?スキャン結果に含めるべきでない画面をAxeAutoScan.skipScanでセクションを囲むことでスキップできるようになりました。ブロックが終了するとスキャンセッションは自動的に再開されます。自動スキャンの実装詳細は以下のページをご参照ください:
WCAGカバレッジの拡大
Dequeは、実際のアクセシビリティの問題を正確に検出するルールの提供と最適化に対して持続的な取り組みを行っています。このリリースでは、以前は実験的とされていた2つのルールを昇格させることで、WCAG 2.0に対するカバレッジを拡大します。
iOS
ダイナミックタイプのサポートルールが完全なルールとして昇格しました。このルールはWCAG 2.0, 1.4.4 Resize Text (AA)に対応しており、以前は選択的に実行されていましたが、現在はデフォルトで実行されます。ダイナミックタイプは、ユーザーがデバイス全体で好みのフォントサイズを設定できるiOSの機能です。このルールは、アプリがスケーラブルなフォントを使用してその好みを尊重しているかを確認します。
このルールは、AppleのXCUIアクセシビリティ監査APIに依存しており、iOS 17.0+が必要です。ダイナミックタイプのサポートルールはターゲットテストのみで実行されます。自動スキャンのサポートは近日公開予定です!
このアクセシビリティルールの詳細についてはこちらをご覧ください: ダイナミックタイプのサポート。
Android
Androidのアクセス不能なアクションルールが完全なルールとして昇格し、WCAG 2.0, 2.1.1 Keyboard (A)のカバレッジを拡大しました。このルールは、TalkBackやSwitch Accessなどの支援技術によってインタラクティブな要素に関連付けられたアクションがフォーカス可能およびトリガーされることを確認します。
このアクセシビリティルールの詳細についてはこちらをご覧ください: アクセス不能なアクション。
修正
iOS
- クリップされたテキストルールの精度向上
Android
- 以下のルールの精度向上: フォーカス可能なテキスト、編集可能テキスト名、アクセス不能なアクション、およびネストされたフォーカス可能な要素
非推奨および削除
iOS
optInToSupportsDynamicTypeプロパティは非推奨です。ダイナミックタイプのサポートルールは現在デフォルトで実行されます。このルールを以前に選択していた場合は、コードからそのプロパティを削除してください。
Android
ネストされたアクティブコントロールおよびネストされた要素名ルールは無効化され、これらの問題が結果でフラグされることはなくなります。両方のルールは後日削除される予定です。
既知の問題
以下の問題のいずれかが発生した場合は、helpdesk@deque.comまたはsupport.deque.comにご連絡ください。その後、問題が解決された際や回避策が判明した際にお知らせします。
- Axe DevTools Mobileの自動テストは、ネイティブiOS、ネイティブAndroid、およびReact Nativeアプリケーションで実行されます。お使いの技術スタックに対するアクセシビリティテストソリューションについては、Dequeの担当者にお問い合わせください。
- ウェブビューやレンダリングされたPDFからいくつかの結果を得られるかもしれませんが、最も包括的なウェブアクセシビリティテストを行うために、Axe DevTools for WebまたはAxe Monitorを使用することを強くお勧めします。
iOS
テキストにパーセント記号を含む画面のダイナミックタイプのサポートルールで不完全な結果
iOS 26以降では、画面にパーセント記号を含むテキストがあると(例: テキストラベルに「50% Off」と表示される)、ダイナミックタイプのサポートルールが合格や不合格ではなく「不完全」として報告されることがあります。このルールは、Appleが提供するアクセシビリティの監査に依存しており、その監査はパーセント記号に遭遇するとテスト実行を停止します。テストを続行するために、当社のルールはその画面のチェックをスキップし、パーセント記号を含む各要素について不完全として報告します。他のルールは画面上で通常どおり実行され、他の画面には影響しません。
特に対応は不要ですが、スキャンは完了します。これらの画面のダイナミックタイプのサポートを確認するには、デバイスの**設定** > **アクセシビリティ** > **表示とテキストサイズ** > **大型テキスト**でテキストサイズを増やし、画面上のテキストが適切にスケールすることを確認してください。この問題はAppleに報告されています。(#2985)
アイコンのみの要素に対してOCRによりカラーコントラストが実行される場合
Color Contrastルールは、AppleのVisionフレームワーク(光学文字認識、またはOCR)を使用して要素の境界内のテキストを読み取ります。OCRは、小さなアイコンのような字形、例えばバックアローの矢印(<)、箇条書き、装飾記号をテキストとして誤認識することがあります。その場合、Color Contrastルールが読み取れるテキストを含まない要素で実行され、アイコンのみのボタンに結果が出ることがあります。OCRの出力はスキャンごとに決定的ではないため、同じ要素があるスキャンではColor Contrastの結果に現れ、次のスキャンでは「適用外」と報告されることがあります。これはOCRの特性であり、ルールのバグではありません。
この問題を回避するには、 ignore APIを使用して、影響を受けた要素のColor Contrast結果を抑制することができます。
// 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 、スクリーンタイトルルールがすべてのFlutterスクリーンで失敗し、記述的なタイトルがあるかどうかに関わらず適用されません。 UIViewController.title、スクリーンタイトルルールがすべてのFlutterスクリーンで失敗し、記述的なタイトルがあるかどうかに関わらず適用されません。
これはFlutterプラットフォームの既知の制限で、 flutter/flutter#185894で追跡されています。
小さい画面でのグラデーション背景のColor Contrastルールの誤検出
小さい画面サイズや小さいフォントサイズでアクセシビリティチェックを行うと、グラデーション背景に対してColor Contrastルールが誤検出を報告することがあります。このような場合、テキストの前景色を特定できず、背景色を互いに比較して失敗として報告されることがあります。
この問題を回避するには、大きなデバイスでアクセシビリティチェックを試みてください。あるいは、テストでルールを無視し、これらのビューのColor Contrastを手動で確認することもできます。
不正確な isVisible プロパティ (XCTest)
AppleのアクセシビリティAPIは、WKWebView内のウェブコンテンツを「isVisible」と誤って報告することがあります。これは、ウェブビューがネイティブオーバレイ(モーダルビュー、アラート、他のネイティブUI要素など)で覆われている場合でも同様です。アクセシビリティシステムは、WKWebViewコンテナ自体が表示されているかどうかをチェックするためで、ウェブコンテンツが実際に妨げられていないと判断できません。
iOS 26のアクセシビリティバグ (ステッパー)
iOS 26には、デフォルトのステッパーボタンがAssistive Technologyにより「無効」とアナウンスされないアクセシビリティのバグがあります。このため、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で誤検出が報告されることがあります(#1622)。
ネストしたコントロールに対するルール
我々のルールの改善を検討している間、XCTest内でネストしたコントロールがアクセシビリティツリーに返されないことを発見しました。Appleにバグを報告しました。(#1110)
ImageView NameルールがUIKitアプリでレビュー結果を必要とする
UIKitアプリでは、`accessibilityLabel`のない画像はデフォルトでアクセシビリティ技術でフォーカスされません。
Appleからフォーカス可能性を確認するために使用するプロパティは、画像に`accessibilityIdentifier`が設定されている場合、不正確である可能性があります。この予期しない動作のために、UIKitアプリのImageView Name問題の結果はレビュー必須と報告されます。Appleにバグが報告されました。(#1633)
Scroll View内のLabel In Name、Label at Front、v2.11.0のImage View Name & ActiveControlNameの誤検出
以下の誤検出に対して積極的に修正作業を行っており、修正がリリースされ次第このリストを更新します。
In Scroll View
バナービヘイビアのある要素、固定ヘッダー/フッター、フローティングアクションボタン、カスタムタブビュー内のテキストは、「レビュー必須」または「失敗」メッセージでフラグされる可能性があります。これらの要素を大きなテキストが必要なユーザーに利用可能にするために、 UILargeContentViewerを使用してください。(#622, #2077)
v2.11.0 Image View Name & Active Control Name
UIImageViewに accessibilityIdentifier が設定されていても、VoiceOverでフォーカスされず、さらにその中にフォーカス可能なコントロールがネストされている場合、UIImageViewでActive Control Nameが誤検出される可能性があります。 accessibilityIdentifier を削除すると問題が解決します。Appleにバグが報告されました。(#1633)
Label In Name and Label At Front
これら2つのルールは、コントロールの可視ラベルを近くの要素の間で探し、ルールのステータスを決定する助けをします。一部のビュー階層では、誤った近接テキストが検出され、これらのルールが失敗することがあります。(#1622)
Android
目に見えなくなったテキストでのLabel at Frontの誤検出
Label at Frontルールは、要素の可視ラベルが発表されるテキストの最初に来ることをチェックします。対話型要素の可視テキストに省略形(例えば「GB」、「km」)や見えなくなった/切り捨てられた識別子が含まれると、ルールの失敗につながる可能性があります。アクセシビリティの発表が代表する単語(例えば「gigabytes」、「kilometers」)で構成される場合は特に、これは省略されたまたは切り捨てられたコンテンツをスクリーンリーダーフレンドリーにするための推奨パターンです。
対話型要素の可視ラベルの最初の部分がスクリーンリーダーによる発表の冒頭と一致し、略語/見えなくなった部分だけが異なる場合には、フラグされた結果を安全に無視できます。スクリーンリーダーで確認し、完全な発表が意図したとおりに読み上げられることを確認してください。
フォーカス可能なテキストに関するアクセシビリティ懸念の可能性
「連絡先アイコン」などのビューで装飾的なテキストを使用する場合、アクセシビリティの問題を引き起こす可能性があります。テキストビューを使用して目的の文字をベクターとして生成する代わりに文字を表示し、そのテキストビューをアクセシビリティにおいて重要でないと宣言した場合、アクセシビリティ違反を引き起こしているかどうかを確実に判断できません。
フォーカス可能なテキストを編集して2文字以下を無視する場合、さまざまな言語の一語だけのボタン(例:「OK」、「No」、「Sí」)を誤って無視する可能性があります。これらの問題を避けるためには、アイコンで表現したい単語から目的の文字を取得し、別個のテキストビューとしてではなく、画像の一部として文字を生成することが必要です。そうすれば、`FocusableText`はそれらのビューでは実行されません。
Flutterアプリでのスクリーンタイトルの誤検知
Flutterはネイティブのスクリーンタイトルプロパティに AppBar.title マッピングしないため、 Activity.setTitle説明的なタイトルがあっても、すべてのFlutterスクリーンでスクリーンタイドルールが失敗する原因となります。
これは既知の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ルールで結果の精度を確保するために必要です。Axe DevTools Mobileを自動EspressoやUIAutomatorテストで参照するとき、ML Kitライブラリは自動的にインポートされるべきです。ただし、いくつかの場合では自動インポートが行われず、logcatに次のエラーが表示されます。
Axe DevTools Android: mlKitテキスト検出実行中のエラー: MlKitContextが初期化されていません。
この問題を解決するために、ML Kitライブラリを手動でプロジェクトにインポートします。アプリケーションの build.gradle ファイルで、依存関係の下に次の行を追加します:
debugImplementation 'com.google.mlkit:text-recognition:16.0.1'Android Mobile SDKの入門セクションの イmplementation
タッチターゲット間隔と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レベルではローカル保存時に問題を引き起こします。
ハイブリッドアプリやクロスプラットフォームアプリでのスクロール検出
一部のハイブリッドアプリやクロスプラットフォームアプリでは、スクロールビュー内のアイテムが一部画面外にある場合に予期しない結果が返されることがあります。要素をアクセシビリティのためにテストするときは、スキャンを実行する前に完全に画面内にあることを確認してください。
Analyzerアプリ: フローティングアクションボタンが消える
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を使い続け、`Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)`や`No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?`などのエラーが発生した場合は、 Compose setTestTag APIを参照してください。
MAUI: Edit Text Nameルール
AndroidエコシステムにおけるMAUIアプリアーキテクチャの制限により、SDKバージョン5.5.0以降ではEdit Text Nameルールがダッシュボードで確認が必要として表示されることがあります。この場合、正しい動作を手動で確認してください。
ネイティブAndroid: カスタムダイアログ/モーダル
ネイティブコントロールを拡張しないカスタムダイアログやモーダルを実装している場合、モーダルの背後にあるビューの結果を取得することがあります。この場合、これらのカスタムモーダルやダイアログに対してツールを使用せず、代わりに手動で確認し、支援技術と望ましい動作が一致していることを確認することをお勧めします。
Webダッシュボード
スクリーンショットが見つかりません
スキャン詳細ページからスクリーンショットが欠落している場合、アプリがスクリーンショットの取得を妨げている可能性があります。多くの場合、これは本番アプリでのセキュリティ上の理由によります。Axe DevTools Mobile Dashboardでフル機能を利用できるように、テストビルドではこの制限を取り除くことを検討してください。
一部のAndroidスキャン名が未フォーマット
画面タイトルにデフォルト設定されている一部のAndroidスキャン名は、バンドル識別子を含むフルクラス名として表示されます。今後のリリースでは、画面タイトルがより読みやすい名前にフォーマットされるように解決される予定です。対策として、ダッシュボードやフレームワークからスキャン名を設定することができます。(#1643)
