本文へ移動

アクセシビリティ

Electronアプリケーションにおけるアクセシビリティに関する懸念事項は、どちらも最終的にはHTMLであるため、ウェブサイトのそれと同様です。

アクセシビリティ機能を手動で有効にする

Electronアプリケーションは、支援技術(例:WindowsのJAWSまたはmacOSのVoiceOver)が存在する場合、自動的にアクセシビリティ機能を有効にします。詳細は、Chromeのアクセシビリティに関するドキュメントを参照してください。

これらの機能は、Electronアプリケーション内、またはサードパーティ製のネイティブソフトウェアでフラグを設定することで、手動で切り替えることもできます。

ElectronのAPIを使用する

app.setAccessibilitySupportEnabled(enabled) APIを使用することで、アプリケーションの設定でChromeのアクセシビリティツリーを手動でユーザーに公開できます。ただし、ユーザーのシステム支援ユーティリティはこの設定よりも優先され、上書きされます。

サードパーティソフトウェア内

macOS

macOSでは、サードパーティの支援技術は、AXManualAccessibility属性をプログラムで設定することで、Electronアプリケーション内のアクセシビリティ機能を切り替えることができます。

Objective-Cを使用する

CFStringRef kAXManualAccessibility = CFSTR("AXManualAccessibility");

+ (void)enableAccessibility:(BOOL)enable inElectronApplication:(NSRunningApplication *)app
{
AXUIElementRef appRef = AXUIElementCreateApplication(app.processIdentifier);
if (appRef == nil)
return;

CFBooleanRef value = enable ? kCFBooleanTrue : kCFBooleanFalse;
AXUIElementSetAttributeValue(appRef, kAXManualAccessibility, value);
CFRelease(appRef);
}

Swiftを使用する

import Cocoa
let name = CommandLine.arguments.count >= 2 ? CommandLine.arguments[1] : "Electron"
let pid = NSWorkspace.shared.runningApplications.first(where: {$0.localizedName == name})!.processIdentifier
let axApp = AXUIElementCreateApplication(pid)
let result = AXUIElementSetAttributeValue(axApp, "AXManualAccessibility" as CFString, true as CFTypeRef)
print("Setting 'AXManualAccessibility' \(error.rawValue == 0 ? "succeeded" : "failed")")