Skip to content

デスクトップアクセシビリティ機能のサポート

Compose MultiplatformはJetpack Composeを基盤として構築されており、ほとんどのアクセシビリティ機能を全てのプラットフォームにわたる共通コードで利用可能にします。デスクトップにおけるアクセシビリティサポートの現在の状況は以下の通りです。

プラットフォームアクセシビリティのステータス
macOS完全にサポート
WindowsJava Access Bridgeを介してサポート
Linuxサポートされていません

Windowsでのアクセシビリティの有効化

Windows上のアクセシビリティはJava Access Bridgeを介して提供されますが、これはデフォルトで無効になっています。 Windowsでアクセシビリティ機能を開発するには、以下のコマンドでJava Access Bridgeを有効にします。

Console
%\JAVA_HOME%\bin\jabswitch.exe /enable

アクセシビリティ機能を含むネイティブ配布を作成するには、modules DSLメソッドを使用してjdk.accessibilityモジュールを追加します。

kotlin
compose.desktop {
    application {
        nativeDistributions {
            modules("jdk.accessibility")
        }
    }
}

例: セマンティックルールを持つカスタムボタン

カスタムボタンを持つシンプルなアプリを作成し、スクリーンリーダーツール用の説明テキストを指定してみましょう。 スクリーンリーダーが有効になっていると、ボタンの説明から「Click to increment value」というテキストが聞こえます。

kotlin
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.ui.*
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.semantics.*
import androidx.compose.ui.unit.*
import androidx.compose.ui.window.*

fun main() = singleWindowApplication(
    title = "Custom Button", state = WindowState(size = DpSize(300.dp, 200.dp))
) {
    var count by remember { mutableStateOf(0) }

    Box(modifier = Modifier.padding(50.dp)) {
        Box(modifier = Modifier
            .background(Color.LightGray)
            .fillMaxSize()
            .clickable { count += 1 }
            // Uses text from the content  
            .semantics(mergeDescendants = true) {
                // Assigns the type of UI element
                role = Role.Button
                // Adds some help text to button
                contentDescription = "Click to increment value"
            }
        ) {
            val text = when (count) {
                0 -> "Click Me!"
                1 -> "Clicked"
                else -> "Clicked $count times"
            }
            Text(text, modifier = Modifier.align(Alignment.Center), fontSize = 24.sp)
        }
    }
}

.semantics(mergeDescendants = true)"}

macOS上でアプリケーション内の要素のアクセシビリティ情報をテストするには、Accessibility Inspectorを使用できます (Xcode | 開発者ツールを開く | アクセシビリティインスペクタ)。

macOS上のアクセシビリティインスペクター

Windowsでは、JAWSスピーチ履歴の表示機能、またはNVDAスピーチビューアーを使用できます。

Windows上のアクセシビリティ

その他の例については、Jetpack Composeにおけるアクセシビリティガイドを参照してください。

次は何ですか?

その他のデスクトップコンポーネントに関するチュートリアルを探索してください。