Einführung
Jetpack Compose hat intern einen Mechanismus namens Semantics Tree. Dies ist die "UI-Bedeutungsstruktur", auf die Barrierefreiheit, UI-Tests und automatisierte KI-Operationen verweisen.
Durch eine sorgfältige Gestaltung der Semantics können KI-Agenten UI-Elemente auf dem Bildschirm nicht als "Farbe, Position, Größe" verstehen, sondern als "Was ist diese Schaltfläche, Was passiert wenn ich drücke, Welcher Status liegt vor" verstehen.
Wichtigste Semantics-Attribute
contentDescription
Erforderlich für UI-Elemente, deren Bedeutung nur visuell nicht verständlich ist, wie nur Icon-Schaltflächen.
IconButton(
onClick = onDelete,
modifier = Modifier.semantics {
contentDescription = "削除"
}
) {
Icon(Icons.Default.Delete, contentDescription = null)
}
KI und Barrierefreiheit erkennen es als "Schaltfläche zum Löschen (klickbar)".
role
Wenn Sie role auf Custom UI setzen, kann KI den UI-Typ deutlich verstehen.
Modifier.semantics {
role = Role.Button
}
Mit nur Box(clickable) ist es "etwas Klickbares", aber wenn Sie role hinzufügen, wird es als spezifische Art wie Button / Switch / Checkbox / Tab übermittelt.
stateDescription
Ein Attribut zur Vermittlung des aktuellen Status an die KI.
Modifier.semantics {
stateDescription =
if (subscribed) "購読中"
else "未購読"
}
Nicht nur TalkBack, sondern auch KI-Agenten nutzen es bei statusbasierten Entscheidungen wie "Gerade angehalten, also Wiedergabeschaltfläche drücken".
testTag
Eines der wichtigsten Attribute bei KI-Automatisierung und UI-Tests.
Modifier.testTag("login_button")
Durch die Vergabe eines eindeutigen Identifikators können Elemente stabil von Compose UI Test, Appium, UIAutomator Integration und MCP-basierten Agenten abgerufen werden.
UIAutomator-Integration — erforderliche Einstellungen
Da Compose keine View-Hierarchie direkt generiert, kann testTag möglicherweise nicht von UIAutomator referenziert werden. Dies wird durch Konfiguration des Root gelöst:
Scaffold(
modifier = Modifier.semantics {
testTagsAsResourceId = true
}
)
Dadurch wird testTag von UIAutomator als resource-id referenzierbar.
Praxis: Design, das von KI am leichtesten verstanden wird
Button(
onClick = login,
modifier = Modifier
.testTag("login_button")
.semantics {
contentDescription = "ログイン"
role = Role.Button
}
) {
Text("ログイン")
}
| Attribut | Mitteilung an KI |
|---|---|
| testTag | Eindeutige ID |
| contentDescription | Bedeutung und Zweck |
| role | UI-Typ |
| clickable | Ausführbar |
Komplexe UI in einer Bedeutung zusammenfassen
UI, die aus mehreren Elementen wie Icon, Text und Badge besteht, kann mit clearAndSetSemantics als eine Bedeutung dargestellt werden.
Modifier.clearAndSetSemantics {
contentDescription = "商品をカートに追加"
role = Role.Button
}
KI kann die visuelle Komplexität und Verschachtelungsstruktur ignorieren und nur die logische Bedeutung empfangen.
Effekte des Semantics-Designs
1. Automatisierung wird robuster gegen UI-Änderungen
Die Identifikation durch testTag hängt nicht von Koordinaten, OCR oder Textänderungen ab. Selbst wenn sich die Position oder das Aussehen der Schaltfläche ändert, funktioniert die Automatisierung weiterhin, wenn das Tag gleich ist.
2. MCP ermöglicht Bildschirm-Semantik-Analyse
Durch das Abrufen des Semantics Tree können Bildschirminformationen als leichte strukturierte Daten wie folgt verarbeitet werden:
[
{"role": "Button", "label": "ログイン", "enabled": true, "tag": "login_button"},
{"role": "TextField", "label": "メールアドレス"}
]
3. Screenshot-Abhängigkeit reduzieren und Token sparen
Bildanalyse verbraucht viele Token. Mit Semantics Tree können dieselben Informationen als leichte Textdaten an KI übergeben werden. Besonders effektiv in Szenarien, in denen Sie Kontextverbrauch sparen möchten, wie lange Automatisierung und vollständiges Bildschirmscannen.
4. KI versteht den Bildschirm als Zustandsmaschine
Aus den Informationen in stateDescription kann KI den aktuellen Status erkennen und kontextbasierte Entscheidungen wie "Gerade angehalten, also Wiedergabeschaltfläche drücken" treffen.
5. Automatische Testfall-Generierung durch KI
Aus Semantics können Übergangsinformationen wie "Login-Schaltfläche existiert → drücken → Startseite wird angezeigt" abgerufen und für die automatische Testfall-Generierung angewendet werden.
Rolle, die dem Web ARIA entspricht
Das Äquivalent von HTML / ARIA / DOM in der Web-Entwicklung ist der Compose Semantics Tree in Android. KI-Agenten verstehen Apps durch "Bedeutungs-DOM" statt "visueller UI".
Die Stärke von Compose liegt in der Trennung von "Aussehen" und "Bedeutung". Dies ist die Essenz des Semantics-Designs und die Grundlage für die KI-Zusammenarbeit.
Zusammenfassung
| Attribut | Hauptzweck |
|---|---|
| testTag | Eindeutige ID und Automatisierung |
| contentDescription | Bedeutungsvermittlung |
| role | UI-Typ-Klarheit |
| stateDescription | Aktuelle Status-Vermittlung |
| testTagsAsResourceId | UIAutomator-Integration |
| clearAndSetSemantics | Logische Strukturierung komplexer UI |
Wenn Sie MCP, UIAutomator und KI-Agenten nutzen, ist die standardmäßige Zuweisung von testTag und semantics zu jedem Komponente die Grundlage für stabile Automatisierung.