Axe DevTools Mobile 2026年9月16日リリースノート
2026年9月16日
コンポーネントのバージョン
Appium
iOS
- iOS Appium 2 ドライバー (axe-appium2-xcuitest-driver v2.7.0)
- (XCUITest v9.10.4からフォーク)
- iOS Appium 3 ドライバー (axe-appium3-xcuitest-driver v1.6.0 )
- (XCUITest v12.11.0からフォーク)
更新方法: iOS Appium ドライバー
Android
- Android Appium 2 ドライバー (axe-appium2-uiautomator2-driver v2.7.0)
- (UiAutomator2 v4.2.8からフォーク)
- Android Appium 3 ドライバー (axe-appium3-uiautomator2-driver v1.6.0 )
- (UiAutomator2 v8.6.1からフォーク)
更新方法: Android Appium ドライバー
Maestro
- Axe DevTools Mobile for Maestro (axe-devtools-mobile-maestro v1.2.0)
- (Maestro v2.10.0からフォーク)
新機能
Appium
テストセッションを開始するとき、mobile: axeStartSessionは新しいaxeUploadResultsオプションを受け入れます。デフォルト値はtrueで、あなたのアクセシビリティ結果はAxe Developer Hubに送信されます。APIキーで認証し、スキャン結果をローカルに保つためにaxeUploadResultsをfalseに設定できます。この値がfalseの場合、projectIdは任意です。
Maestro
axeGenerateHtmlReportAndSummaryを使用して、スキャンの集約されたHTMLレポートとサマリーを生成します。axeScanコマンドを1回以上実行した後に、このAPI呼び出しに先行するすべてのスキャンのレポートを生成するために使用します。詳細はMaestroのはじめにをご覧ください。
修正
ドライバーのセキュリティ改善を行い、ログ出力でアカウントの資格情報が完全にマスクされるようにしました。
更新
今後は、mobile: axeStartSessionに1回だけ資格情報と構成を渡し、その後、引数なしでmobile: axeScanを呼び出すことをお勧めします。Deque APIキー、Axe Developer HubプロジェクトID、アップロードのためのアカウントURL、またはオフラインライセンスキーなどの設定パラメータを定義し、axeStartSession呼び出しにこれらを渡します。テストスイート内の各スキャン呼び出しにこれらを渡す必要はもうありません。
廃止と削除
Appium
mobile: axeScan上のすべてのパラメーターは現在非推奨です。すべてまだ動作し同じ方法で機能しますが、セッションで初めて使用された際に、各パラメータがAppiumサーバーログに非推奨警告を書き込みます。今日は何もする必要はありませんが、次の情報により、変更を開始したい場合に備えることができます。
モバイルダッシュボードから移行する際に、axeServiceUrlがaxeAccountUrlに置き換えられ、uploadToDashboardがaxeUploadResultsに置き換えられることに注意してください。どちらもmobile:axeStartSessionで使用されます。
axeServiceUrl— 代わりにmobile: axeStartSessionでaxeAccountURLと一度だけ認証uploadToDashboard— 代わりにmobile: axeStartSessionでaxeUploadResultsを使用
mobile: axeScan上の次のパラメーターは現在非推奨です。認証とアップロード選択のための設定パラメーターを、mobile: axeStartSessionにテストスイートの設定時に一度だけ渡します。
apiKey— 代わりにmobile: axeStartSessionで一度だけ認証licenseKey— 代わりにmobile: axeStartSessionで一度だけ認証axeAccountURL— 代わりにmobile: axeStartSessionに提供projectId— 代わりにmobile: axeStartSessionに提供
次のパラメーターはmobile: axeScanで依然として動作しますが、あなたのテストのscanNameとtagsを削除できます。これらはモバイルダッシュボードのアップロードをラベル付けするだけで、ローカル結果には影響しません。
ignoreRules- 新たな通知があるまでmobile: axeScanで続けて使用ignoreExperimental- 新たな通知があるまでmobile: axeScanで続けて使用scanName-mobile: axeScanと一緒に使われ、テストから削除tags-mobile: axeScanと一緒に使われ、テストから削除
既知の問題
以下の問題のいずれかが発生している場合は、helpdesk@deque.comまたはsupport.deque.comにご連絡ください。それが解決されたとき、または一覧にない回避策が特定された場合、通知いたします。
- Axe DevTools Mobileの自動テストは、ネイティブiOS、ネイティブAndroid、そしてReact Nativeアプリケーションで実行されます。お使いのテクノロジースタックのアクセシビリティテストソリューションについては、Dequeの担当者にお問い合わせください。
- Webビューや表示されたPDFから一部の結果を得ることができるかもしれませんが、最も包括的なWebアクセシビリティテストのためには、Axe DevTools for Web や Axe Monitorを使用することを強くお勧めします。
iOS
デスクトップアナライザーシミュレーターの起動失敗
Xcode 27を使用していて、Mobile Analyzer Desktopアプリが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は、いくつかのアクセシビリティルール(例:カラーコントラスト、ビューの衝突、Vision検出テキストに依存するルール)に対して、AppleのVisionフレームワークを使用して画面からテキストを読み取ります。
Visionは同じ画面の複数回の実行間で同じ検出テキストを常に返すわけではありません。Visionがコントロールのテキストを逃すと、そのテキストに依存するルールはその要素に対してそのスキャンで実行されません。同じ画面の2回のスキャン間で結果が不一致に見える場合があり、あるスキャンで失敗した問題が次のスキャンでは存在しないことがあります。
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/flutter#185894で追跡されている。
小さな画面でのグラデーション背景によるカラーコントラストルールの誤検出
小さな画面サイズや小さなフォントサイズでアクセシビリティチェックを実行する際、カラーコントラストルールはグラデーション背景に対して誤検出を報告することがあります。このような場合、前景色を決定できず、代わりに背景色が互いに比較され、失敗として報告されます。
この問題を回避するために、より大きなデバイスでアクセシビリティチェックを試みるか、ルールをテストで無視して、これらのビューのカラーコントラストを手動で確認することを選択できます。
不正確な isVisible プロパティがXCTestから
AppleのアクセシビリティAPIは、WKWebView内のWebコンテンツを誤って「isVisible」と報告することがあります。これは、アクセシビリティシステムがWKWebViewコンテナ自体が表示されているかどうかをチェックするためであり、そのWebコンテンツが実際に妨げられず、ユーザーに知覚可能かどうかを確認していないからです。
ステッパーに関する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が不正確なassociatedTextプロパティが見つかったために誤検出を報告することがあります。(#1622)
ネストされたコントロールに対するルール
我々のルールの改善を検討しているときに、XCTestではネストされたコントロールがアクセシビリティツリーに返されないことを発見しました。Appleにバグが報告されています。(#1110)
UIKitアプリにおけるImageView Name Ruleのレビュー結果が必要
UIKitアプリでは、`accessibilityLabel`がない画像は通常、支援技術ではフォーカスできません。
Appleから焦点可能性を確認するために使用するプロパティは、画像に`accessibilityIdentifier`が設定されている場合、正確でないことがあります。この予期しない動作のため、UIKitアプリでのImageView Nameの問題の結果はレビューが必要と報告されます。Appleにバグ報告が登録されています。(#1633)
スクロールビュー、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でフォーカスできない場合、かつその中にフォーカス可能なコントロールがネストされている場合、Active Control NameがUIImageViewに対して誤検出を報告する可能性があります。 accessibilityIdentifier で問題が解決されます。Appleにバグレポートが提出されています。(#1633)
Label In Name and Label At Front
これらの2つのルールは、コントロールの可視ラベルを近くの要素の中から探して、ルールの状況を判断するのを助けます。一部のビュー階層では、近くのテキストが誤って検出され、これらのルールが失敗することがあります。(#1622)
Android
前面ラベルの誤検出と見えにくいテキスト
前面ラベルルールは、要素の可視ラベルがそのアナウンスされたテキストの冒頭に来ることをチェックします。インタラクティブな要素の可視テキストに省略形(例:「GB」「km」)または隠れた/切り詰められた識別子が含まれる場合、推奨される形で省略されたり切り詰められたりしたコンテンツを画面読み取り機に対応しやすくするために、アクセシビリティアナウンスにはそれに対応した言葉(例:「ギガバイト」「キロメートル」)が含まれるとしても、ルールの失敗が発生する可能性があります。
インタラクティブな要素の可視ラベルの最初の部分が画面読み取り機のアナウンスの冒頭に一致し、省略または見えにくい部分のみが異なる場合、フラグされた結果を安全に無視できます。アナウンスが意図通りに読まれることを画面読み取り機で確認してください。
フォーカス可能なテキストに関する潜在的なアクセシビリティの懸念
「連絡先アイコン」などのビューで装飾的なテキストを使用する場合、アクセシビリティの問題を引き起こす可能性があります。必要な文字をベクターとして持つ画像を生成する代わりに、文字を表示するためにテキストビューを使用し、さらにそのテキストビューをアクセシビリティの重要性がないと宣言した場合、アクセシビリティ違反を引き起こしたかどうかを確実に判断できなくなります。
フォーカス可能なテキストを編集して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 モバイルはそれらを問題として報告します。
この複雑な問題の修正に取り組んでいます。現在のところ、TalkBackがこれらのビューに到達できない場合、対応する問題を無視することができます。アクセシビリティを確保するために修正は不要です。
ML Kit テキスト検出の実行中にエラー
ML Kitのテキスト検出は、Axe DevToolsモバイルのルールの多くにおいて結果の正確性を確保するために必要です。自動化されたEspressoまたはUIAutomatorテストでAxe DevToolsモバイルを参照するとき、ML Kitライブラリは自動的にインポートされるはずです。しかし、場合によっては自動インポートが発生せず、次のエラーがlogcatに表示されます:
Axe DevTools Android: mlKit テキスト検出の実行中にエラーが発生しました。MlKitContextが初期化されていません。
この問題を解決するには、ML Kitライブラリを手動でプロジェクトにインポートする必要があります。アプリケーションの build.gradle ファイルに、dependenciesの下に次の行を追加してください:
debugImplementation 'com.google.mlkit:text-recognition:16.0.1'ML Kitライブラリをインポートしている完全な動作例は、Android Mobile SDKの入門セクションの 実装
タッチターゲット間隔とJetpack Compose
タッチターゲット間隔ルールは、現在Jetpack Composeで書かれたスライダーコンポーネントで実行されていません。この時点では何の対応もできません。ただし、修正は間もなく公開されます!
API 30での結果をローカルに保存中のエラー
Android API 30では、結果をローカルに保存しようとする場所の一つに権限エラーがあります。このエラーが表示されても、結果は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アナライザーアプリを使用するには、この設定がオンになっていないことを確認してください。この機能をセキュリティの向上のために活用しようと決めた場合は、テストデータを安全に使用できる内部テストビルド用に、それをオフにしておくことをお勧めします。それにより、セキュリティの懸念を削減することができます。 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)
このエラーを解決するには、ProGuardファイルに次の行を追加してaxeDevToolsクラスを維持してください:
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 ルール
MAUIアプリアーキテクチャの制約により、Androidエコシステムでレンダリングされる際、SDKバージョン5.5.0以上では失敗が疑われる場合にダッシュボードでEdit Text Nameルールが「要確認」として表示されます。このケースでは正しい動作を手動で確認してください。
ネイティブAndroid: カスタムダイアログ/モーダル
ネイティブコントロールを拡張しないカスタムダイアログまたはモーダルを実装している場合、モーダルの背後にあるビューの結果を取得することがあります。この場合、これらのカスタムモーダルまたはダイアログに対してツールを実行するのではなく、手動でチェックして補助技術と望ましい動作を確認することをお勧めします。
Webダッシュボード
スクリーンショットが欠落している
スキャン詳細ページからスクリーンショットが欠落している場合、アプリがスクリーンショットの撮影を阻止している可能性があります。これは一般的に、製品版アプリケーションのセキュリティ理由によるものです。この要件をテスト用ビルドで解除し、Axe DevToolsモバイルダッシュボードでの完全な機能を確保することを検討してください。
いくつかのAndroidスキャン名が未フォーマット
スクリーンタイトルにデフォルトで設定されている一部のAndroidスキャン名は、バンドル識別子を含む完全なクラス名として表示されます。将来のリリースでは、スクリーンタイトルがより読みやすい名前にフォーマットされることが解決される予定です。当面の対処法として、ダッシュボードまたはフレームワークからスキャン名を設定することができます。(#1643)
