アクセシビリティ
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")")