실용적인 앱을 만들려면 무엇을 공부하고 고려해야 할지 고민하다가, 언젠가 봐야겠다고 생각했던 애플의 Human Interface Guidelines (HIG) 중 접근성(Accessibility) 문서를 파고들어 정리해 보았다. 단순히 문서를 읽고 이해한 대로 정리한 것이지만, 공식 가이드를 전체적으로 살펴보는 것이기에 매우 의미 있는 작업이라 생각한다.
최근 회사 새 프로젝트에 참여하면서 기획이나 디자인 단계에서 iOS 구현 가능 여부를 팀과 논의해야 할 때가 종종 있는데, 직접 구현해 보기 전까지는 나 역시 잘 모를 때가 있어 앞으로 이런 상황에서 큰 도움이 될 것이라 기대한다.
특히 이번에 정리하면서 텍스트 파트에서 많은 것을 배웠다. 개인 앱 업데이트 시 내가 놓쳤던 부분들을 다시 한번 고려해봐야겠다.
모두를 위한 개인화: 접근성
애플의 접근성 기능은 사람들이 애플 기기를 사용할 때 각자의 상황에 맞춰 개인화된 편리함을 제공한다. 접근성은 단순히 '장애'를 가진 사람만을 위한 것이 아니다. 대략 7명 중 한 명이 장애를 가졌을 뿐만 아니라, 사람들은 선천적 장애 외에도 일상에서 정도의 차이는 있지만 일시적인 장애나 불편을 겪을 수 있다. 애플의 접근성 개인화는 이러한 개인의 조건이 기기 사용에 미치는 영향을 최대한 줄이고자 한다.
접근성 디자인 모범 사례
애플은 다음과 같은 항목을 접근성 모범 사례로 명시했다.
- 접근성을 고려한 디자인: 접근성은 단순히 장애를 가진 사람만 사용할 수 있게 하는 것을 넘어, 어떤 장애나 상황과도 상관없이 '모든' 사람이 사용 가능하도록 하는 것이 애플이 지향하는 목표다. 접근성을 고려한 디자인은 간단함과 인지 가능성을 최우선으로 한다. 이는 각 요소가 장애나 개인 상황으로 인해 기기와 일반적인 방식으로 상호작용하기 어려운 사람들을 소외시키지 않음을 검증하는 디자인을 의미한다.
- 간단함: 복잡한 작업을 간단하고 직관적으로 수행할 수 있도록, 익숙하고 일관된 상호작용을 지원해야 한다.
- 인지 가능성: 시각, 청각, 촉각 등에 구애받지 않고 디자인된 모든 요소를 인지할 수 있어야 한다.
- 개인화 지원: 사람들은 이미 기기 구매 및 사용 시 취향, 화면 사이즈, 해상도, 색상 영역 등의 개인화 경험을 한다. 이러한 경험을 개인의 상황이나 기기 환경에 영향받지 않고 즐길 수 있도록 디자인해야 한다.
- 앱 감사 및 테스트 진행: 접근성 테스트를 꾸준히 진행하여 접근성을 고려한 사용자 경험을 더욱 안정적으로 개선할 수 있다.
상호작용 (인터랙션)
VoiceOver, AssistiveTouch, Pointer Control, Switch Control 같은 보조 기술은 사람들이 기기와 상호작용할 수 있는 방법을 확장시켜준다. 이러한 보조 기술들은 시스템에서 제공하는 상호작용 방식을 통합하여 사용되므로, 개발자는 올바른 방식으로 시스템 상호작용을 지원하는 것이 매우 중요하다.
제스처
- 제스처 덮어쓰기는 금지: 시스템을 작동시키는 제스처가 사용 중인 앱의 제스처와 겹쳐져 사용에 방해가 돼서는 안 된다. 예를 들어, 어떤 앱을 사용하든 아래로 스와이프하면 알림 센터가 나와야 한다.
- 최대한 간단하게: 일반적인 상호작용 시에는 간단하고 최소화된 제스처를 권장한다. 여러 손가락 터치, 오래 누르기 등 복잡한 제스처를 요구할 경우 많은 사람이 이용에 어려움을 겪을 수 있으므로 지양해야 한다.
- 제스처 대안 방안 제공: 제스처로 제공되는 기능이 있다면, 제스처를 사용하지 않고도 기능을 사용할 수 있는 대안을 제시해야 한다. 예를 들어, 리스트 항목에서 왼쪽으로 스와이프하여 삭제할 수 있다면, 스와이프 없이도 삭제할 수 있는 방법(편집 모드나 삭제 버튼)을 제공해야 한다.
- 앱의 주요 기능 접근에 한 가지 방식 이상의 물리적 상호작용 제공: 카메라 앱에서 사진을 찍을 때 화면을 탭하거나 볼륨 버튼으로 찍을 수 있는 것처럼, 한 가지 이상의 방식을 제공하여 약한 악력 등으로 사용할 수 없는 사람들도 주요 기능을 사용할 수 있도록 지원해야 한다.
- 추가적으로 VoiceOver, Dwell Control, Switch Control 또는 드래그 앤 드롭 기능에 대해 더 알아볼 필요가 있을 경우 애플 문서를 다시 확인하는 것이 좋다.
버튼과 컨트롤
- Hit Target 영역은 충분한 크기로: 터치스크린에서 필요한 최소 터치 영역(Hit Target) 크기는 44 x 44pt이다.
- 커스텀 요소의 접근성 특징화: 시스템 API를 사용하여 해당 컴포넌트가 어떻게 동작하는지 보조 기술이 사용자에게 알려줄 수 있도록 특징화해야 한다.
- 버튼의 중요도와 스타일 일관성 유지: 가장 중요한 액션을 수행하는 버튼은 시각적으로 채워진 스타일을 사용하여 강조하고, 덜 중요한 액션을 수행하는 버튼은 회색이나 일반적인 스타일을 적용하는 등, 버튼을 보는 것만으로도 해당 버튼의 액션과 중요도를 사용자가 쉽게 알 수 있도록 일관된 스타일을 유지해야 한다.
- 시스템에서 제공하는 스위치 구성 사용 권장: SwiftUI와 같이 애플 시스템에서는 이미 스위치(토글)의 상태를 손잡이(knobs)와 색 채우기 등으로 표시한다. 여기에 텍스트를 추가하면 일부 사용자의 상태 인식을 더 명확하고 쉽게 할 수 있다. 시스템 스위치를 사용하면 자동으로 'on/off' 상태가 표시되어 접근성을 높일 수 있다.
- 링크에 색상 외 시각적 요소 추가: 색상만으로 링크를 구별하려 하면 색맹과 같이 인지에 어려움이 있는 사람들이 구분하기 힘들다. 따라서 시각적 요소에 밑줄 등을 추가하는 것이 좋다.
사용자 입력
- 음성 입력 지원: 텍스트 필드에 음성 입력 버튼을 추가하여 사용자가 음성 입력을 선호하는 방식으로 사용할 수 있도록 해야 한다. 커스텀 키보드를 제공하고 있다면 음성 입력 기능을 추가했는지 확인해야 한다.
- Siri 및 단축어 지원: 음성으로 사용자 입력 시 Siri나 단축어 지원을 고려해야 한다.
- 일반 텍스트 선택 허용: 가능하다면 사용자가 번역이나 정의를 확인하기 위해 일반 텍스트 선택을 막지 않아야 한다.
- 햅틱 피드백 지원: 화면을 볼 수 없는 많은 사용자가 햅틱 기능을 활용하고 있으므로, 시스템에서 정의한 햅틱 기능을 제공할 수 있다면 지원해야 한다.
텍스트 (Text Display)
- 다이내믹 타입(Dynamic Type) 사용: 텍스트는 폰트 사이즈 조절이 가능한 다이내믹 타입을 사용해야 한다.
- 텍스트 잘림 현상 최소화: 폰트 사이즈에 따라 텍스트 잘림 현상을 최소화해야 한다. 긴 텍스트를 잘림 현상 없이 보여줘야 한다면 numberOfLines 속성을 사용해서 효율적으로 나타낼 수 있다.
- 큰 폰트 사이즈 레이아웃 조정: 큰 폰트 사이즈를 사용할 때 텍스트 레이아웃을 스택(Stack) 등을 활용해서 조정해야 한다.
- 아이콘 크기 고려: 폰트 사이즈가 커지면 의미 전달을 하는 인터페이스 아이콘의 크기도 그만큼 커져야 한다는 점을 고려해야 한다.
- 일관된 정보 전달 구조 유지: 현재 글꼴 크기와 관계없이 일관된 정보 전달 구조를 유지해야 한다. 사람들이 전달되어야 하는 주요 정보를 한눈에 알아볼 수 있게 해야 하기 때문이다.
- 볼드체 사용 확인: 앱에서 볼드체를 적용했을 때 사용자가 읽기 편한지 올바르게 사용했는지 확인해야 한다.
- 커스텀 폰트 가독성: 커스텀 폰트는 읽기 가능해야 한다. 간혹 읽기 힘든 커스텀 폰트가 존재하므로 이런 점을 고려해야 한다.
- 텍스트 정렬: 전체 정렬로 텍스트의 정렬 설정을 하면 텍스트에 집중해서 읽는 것이 힘들 수 있으므로, 언어에 따라 왼쪽 또는 오른쪽 정렬을 해야 한다.
- 강조 외 이탤릭체/대문자 지양: 긴 텍스트 구절은 강조가 필요한 부분 외에 전체 텍스트에 이탤릭체나 대문자 사용을 지양해야 한다.
- 가독성을 위한 텍스트 두께 활용: 가독성을 위해 애플이 가이드한 텍스트 두께를 활용한다.
- 추천 두께: Regular, Medium, Semibold, Bold
- 피해야 할 두께: UltraLight, Thin, Light
색상과 효과 (Color and effects)
- 색상 외 시각 요소 추가: 객체 구분 및 주요 정보를 전달할 때 색상 외에 레이블이나 모양을 추가하여 모든 사람들이 해당 의미를 전달받을 수 있도록 해야 한다.
- 시스템 색상 사용 선호: 색상 반전을 하거나 대비를 변경했을 때 올바르게 적용되기 때문에 텍스트를 사용할 때 시스템 색상 사용을 선호하는 것이 좋다.
- Smart Invert 적용 확인: Smart Invert 기능을 사용했을 때 해당 색상 적용이 되어야 하는 대상에 맞게 올바르게 되는지 확인해야 한다. (사진, 영상, 앱 아이콘 등은 색상 반전이 되어서는 안 된다.)
- 높은 색상 대비: 읽는 것이 쉬울 수 있도록 색상 대비가 강한 컬러를 사용해야 한다. 특히, 가독성 보장을 위해 작거나 얇은 텍스트에 더 강한 대비가 필요하다.
- Reduce Transparency 기능은 번역에서 생략되었다.
모션 (Motion)
- 불필요한 애니메이션 자제: 애니메이션이 꼭 필요하지 않다면 사용을 자제해야 한다. 앱 사용 시 애니메이션에 지나치게 의존하는 앱 개발은 지양한다.
- Reduce Motion 기능 대응: 애니메이션을 원하지 않는 사용자가 'Reduce Motion' 기능을 설정하면 그에 맞게 애니메이션 효과가 대응되어야 한다.
- 영상 및 모션 효과 제어 허용: 사용자가 영상 및 기타 모션 효과를 제어할 수 있게 해야 한다. 자동 재생되는 영상은 자제하고, 제어 버튼이나 원치 않는 모션을 제어할 수 있는 다른 대안 방안을 마련해야 한다.
- 움직이거나 깜빡이는 요소 주의: 움직이거나 깜빡이는 요소는 사람들에게 여러 불편을 초래할 수 있으므로, 정보 전달의 유일한 방법으로 사용해서는 안 되며 적용 시 매우 신중해야 한다.
Reference
https://developer.apple.com/design/human-interface-guidelines/accessibility
Accessibility | Apple Developer Documentation
People use Apple’s accessibility features to personalize how they interact with their devices in ways that work for them.
developer.apple.com
https://support.apple.com/en-mide/111773
Use display and text size preferences on your iPhone, iPad, and iPod touch - Apple Support
With iOS accessibility features for the display, you can enlarge your text, make it bold, increase contrast, apply color filters, use Smart Invert, control auto-brightness, and more.
support.apple.com