macOS のアクセシビリティ権限の preflight は System Events の "UI elements enabled" で判定する(プロセス列挙は権限不足でも成功する)
macOS で AppleScript / System Events 経由で UI を自動操作する前に、アクセシビリティ権限(「UI 要素へのアクセスを有効にする」)が付与されているかを事前確認(preflight)したいときの正しい判定方法。
誤解しやすい条件
tell application "System Events" to get name of first process(や同種の「プロセス名を問い合わせる」だけのクエリ)は、アクセシビリティ権限がなくても例外を投げずに成功することがある。プロセスの存在列挙は情報取得の一種で UI 操作ではないため、OS の権限ゲートの対象外になっていることがあるため。このクエリを preflight に使うと、権限不足をすり抜けて後続の window 操作等で初めて生の osascript エラーになり、preflight を置いた意味がなくなる。
判断基準
代わりに tell application "System Events" to UI elements enabled を問い合わせる。これは「アシスティブアクセスを有効にする」設定そのものを反映するプロパティで、権限がなくても例外を投げずに true/false を返す。そのため preflight では単に呼び出しが例外を投げないことだけでは不十分で、戻り値文字列が "true" かどうかを必ず検査する必要がある。
検証方法
アクセシビリティ権限を付与した状態と剥奦した状態の両方で実機確認する。権限を剥奦した状態でも「プロセス名問い合わせ」クエリが例外なく成功することと、"UI elements enabled" が false を返すことの両方を確認すれば、preflight が実効性のないチェックになっていないかを検証できる。