About: MSAA, Microsoft Active Accessibility
2024.09.05 14:29
Windows의 MSAA(Microsoft Active Accessibility)는 장애가 있는 사용자를 돕기 위해 개발된 기술로, 사용자 인터페이스(UI) 요소에 접근하고 상호작용할 수 있는 표준화된 방법을 제공합니다. MSAA는 Windows 애플리케이션이 보조 기술(AT, Assistive Technology)과 통신할 수 있도록 도와줍니다. 이를 통해 시각, 청각, 신체적 장애를 가진 사용자가 더 쉽게 애플리케이션을 사용하도록 지원하는 역할을 합니다. 아래는 MSAA에 대한 세부 정보와 주요 기능들입니다.
### MSAA 개요
MSAA는 1997년 Windows 95 및 Windows NT 4.0부터 Microsoft에서 지원한 기술입니다. 이 기술은 **애플리케이션과 보조 기술 간의 상호 작용을 표준화**하고, 애플리케이션에서 UI 요소를 쉽게 접근할 수 있도록 합니다. MSAA는 주로 시각장애인, 청각장애인 또는 기타 장애를 가진 사용자를 위해 설계되었으며, 화면 읽기 프로그램, 화면 돋보기 및 음성 인식 소프트웨어 같은 다양한 보조 기술이 MSAA를 사용합니다.
#### 주요 기능
1. **접근성 인터페이스**:
- MSAA는 UI 요소(윈도우, 버튼, 체크박스, 리스트 등)에 접근할 수 있는 표준 인터페이스를 제공합니다. 보조 기술은 MSAA 인터페이스를 통해 UI 요소의 속성, 위치, 상태 등에 대한 정보를 얻고 상호작용할 수 있습니다.
2. **접근성 이벤트**:
- MSAA는 애플리케이션 내에서 발생하는 **이벤트**(예: 버튼 클릭, 창 열림 등)를 트래킹할 수 있습니다. 이를 통해 사용자가 프로그램의 변화를 감지하고 적절한 반응을 할 수 있도록 합니다.
3. **Active Accessibility 오브젝트**:
- MSAA는 각 UI 요소를 **Active Accessibility 오브젝트**로 표현하며, 이 오브젝트는 사용자 인터페이스의 다양한 정보(이름, 역할, 상태, 설명 등)를 포함합니다.
4. **IAccessible 인터페이스**:
- MSAA의 핵심 구성 요소는 `IAccessible` 인터페이스입니다. 이 인터페이스는 보조 기술이 UI 요소와 상호작용할 수 있는 메서드를 제공합니다. `IAccessible::get_accName`과 같은 메서드를 통해 UI 요소의 이름을 가져올 수 있으며, `IAccessible::accDoDefaultAction`을 통해 기본 동작을 수행할 수 있습니다. IAccessible 인터페이스는 다음과 같은 중요한 메서드와 속성을 제공합니다:
- **get_accName**: UI 요소의 이름을 반환합니다.
- **get_accRole**: UI 요소의 역할(예: 버튼, 텍스트 상자 등)을 반환합니다.
- **get_accState**: UI 요소의 현재 상태(예: 활성화, 비활성화)를 반환합니다.
- **get_accDescription**: UI 요소에 대한 설명을 반환합니다.
### MSAA의 동작 방식
1. **UI 요소의 노출**:
- MSAA는 애플리케이션의 UI 요소들을 추상화하여, 보조 기술에서 그 정보를 획득할 수 있도록 합니다. 예를 들어, 버튼은 "이름", "역할", "상태" 같은 속성을 가지고 있습니다.
2. **보조 기술의 상호작용**:
- 보조 기술은 `IAccessible` 인터페이스를 호출하여 애플리케이션의 UI 요소에 접근하고, 이를 사용자가 이해할 수 있도록 변환합니다. 예를 들어, 화면 읽기 프로그램은 MSAA를 통해 버튼의 이름을 얻고, 이를 음성으로 읽어줍니다.
3. **접근성 이벤트 핸들링**:
- 사용자가 특정 액션을 수행할 때, MSAA는 이벤트를 발생시켜 보조 기술이 해당 변화를 감지하고 반응할 수 있도록 합니다.
### MSAA의 활용 사례
- **스크린 리더**: MSAA를 사용하여 애플리케이션 내의 텍스트 및 UI 요소를 읽어 사용자에게 전달합니다.
- **화면 확대기**: MSAA를 통해 특정 UI 요소의 위치를 파악하고, 해당 요소를 확대하여 사용자에게 보여줍니다.
- **음성 인식**: MSAA를 통해 UI 요소에 접근하여 음성 명령으로 사용자 인터페이스를 제어합니다.
### MSAA의 한계
- **제한된 접근성 정보**: MSAA는 UI 요소의 제한된 정보만 제공할 수 있으며, 복잡한 사용자 인터페이스의 경우 모든 필요한 정보를 제공하지 못할 수 있습니다.
- **최신 기술의 도입**: MSAA는 최신 Windows UI 기술(UWP, XAML 등)에서 완벽하게 지원되지 않으며, 대신 **UI Automation**과 같은 새로운 기술로 대체되고 있습니다.
### MSAA와 UI Automation의 차이점
- **MSAA**는 레거시 애플리케이션에 주로 사용되며, 기본적인 접근성 기능을 제공합니다. 반면, **UI Automation**은 더 발전된 기능과 유연성을 제공하며, 더 많은 UI 요소와의 상호작용을 지원합니다. UI Automation은 MSAA를 기반으로 하여 더 복잡한 사용자 인터페이스에도 접근할 수 있도록 확장된 기술입니다.
### 결론
Windows의 MSAA는 보조 기술과 애플리케이션 간의 상호작용을 위한 중요한 접근성 기술로, 사용자가 더 쉽게 소프트웨어를 사용할 수 있도록 도와줍니다. 비록 UI Automation이라는 새로운 기술이 도입되었지만, MSAA는 여전히 많은 레거시 애플리케이션에서 사용되고 있으며, 접근성 개선을 위한 기본적인 표준으로 자리잡고 있습니다.