접근성 콘텐츠 제작 기법은 모든 사용자, 특히 장애가 있는 사용자가 웹과 모바일 콘텐츠에 접근하고 사용할 수 있도록 보장하는 방법입니다. 이 기법은 웹 접근성 지침(WCAG: Web Content Accessibility Guidelines)과 모바일 접근성 표준을 따르는 것이 중요합니다. 각각의 영역에 대해 접근성 작업 시 도움이 될 수 있도록 작업되었습니다. 접근성은 법적 요구사항일 뿐만 아니라 사용자를 위한 기본적인 배려이기도 합니다.
모바일 앱 접근성 콘텐츠 제작 기법
사용자가 장애를 가지고 있거나 특정 기능적 제한을 겪는 경우에도 원활하게 모바일 앱을 이용할 수 있도록 하는 방법을 의미합니다. 이러한 접근성을 고려한 콘텐츠 제작은 다양한 사용자들의 요구를 충족시키며, 앱의 사용성을 크게 향상시킵니다.
명도 대비
관련 지침 : 화면에 표시되는 모든 사용자 인터페이스 컴포넌트와 텍스트는 전경색과 배경색이 구분될 수 있도록 제공되어야 한다.
명도 대비는 텍스트와 배경 또는 인터페이스 컴포넌트 간의 색상 차이를 의미하며, 이를 통해 콘텐츠가 보다 쉽게 인식될 수 있도록 해야 합니다. WCAG 가이드라인에서는 명도 대비 비율을 최소한 4.5:1 이상 유지할 것을 권장하며, 큰 텍스트(18pt 이상) 또는 굵은 텍스트(14pt 이상)는 3:1의 비율을 유지하도록 규정하고 있습니다. 명도 대비가 부족하면 저시력 사용자나 시각 장애인은 콘텐츠를 인식하는 데 어려움을 겪게 됩니다. WCAG 2.2 Quick Reference - Contrast (Minimum)
명도 대비는 저시력 사용자, 고령자, 시각 장애인이 앱을 사용할 때 중요한 정보를 놓치지 않도록 보장하는 핵심 요소입니다. 명확한 대비가 없으면 텍스트와 UI 컴포넌트가 배경과 혼동될 수 있어 사용자의 접근성이 떨어집니다. 명도 대비가 유지되면 더 많은 사용자들이 콘텐츠를 쉽게 이해하고 접근할 수 있습니다.
2. 대상
저시력 사용자: 명도 대비가 낮은 텍스트와 UI 컴포넌트를 인식하는 데 어려움을 겪는 사용자.
고령자: 시력 저하로 인해 명도 대비가 중요한 사용자.
시각 장애인: 색상 인식이 어렵거나 제한적인 사용자.
비장애인 포함 전체 사용자:: 햇빛이나 어두운 환경에서 명도 대비가 적절치 않을 경우 콘텐츠를 인식하는 데 어려움을 겪는 사용자.
Color Contrast Checker 사이트에서 체크
배경색과 텍스트 색상을 지정하여 작은 텍스트와 큰 텍스트의 명암비를 파악할 수 있다. 값의 상태에 따라 Poor, Good, Super와 같은 상태 표시로 적절한 대비 상태를 직관적으로 인지할 수 있다. Color Contrast CheckerColor Contrast Checker 사이트
WCAG Color Contrast Checker 사이트에서 체크
위 사이트는 WCAG(Web Content Accessibility Guidelines)의 AA, AAA 기준으로 Small text, Large text, UI components에 따라서 Pass 또는 Fail을 표시해준다. WCAG Color Contrast CheckerWCAG Color Contrast Checker 사이트
Leonardo 사이트에서 체크
한 번에 여러 개의 색상을 체크하거나 색상 팔레트의 명암비를 체크하고 싶을 때 유용하다. 여러 가지 색상을 추가할 수 있으며 색상 대비를 조정하거나 밝기를 조정해서 팔레트를 구성할 수 있다. 우측에 표시되는 팔레트에는 배경 색상 대비 명암비가 자동으로 표시된다. 배경 색상을 변경하면 명암비도 자동으로 변경된다. LeonardoLeonardo 사이트
WCAG Color contrast checker 확장 프로그램
현재 운영 중인 사이트의 명암비를 체크할 수 있는 플러그인이다. 플러그인을 설치하고 실행하면 좌측 패널에서 현재 보고 있는 페이지의 각 콘텐츠 명암비를 체크해준다. 사이즈도 Small, Large로 자동으로 보여주며 요소를 클릭하면 해당 위치로 자동 스크롤 되어 확인할 수 있다. WCAG Color contrast checkerWCAG Color contrast checker 확장 프로그램
피그마 플러그인
해당 플러그인을 사용하면 피그마 내에서 선택한 디자인의 명암비를 바로 확인할 수 있다. 웹접근성 지침(AA, AAA)의 기준에 따라 표시도 해주며, 제안 색상을 선택하면 일괄적으로 별경할 수도 있다. 변경은 Pro 버전이라서 그냥 확인하는 용도로도 충분히 사용성이 좋은 것 같다. Figma : Stark - Contrast & Accessibility Checker피그마 플러그인 Contrast & Accessibility Checker
Lighthouse
Lighthouse is an open-source, automated tool for improving the quality of web pages.
Lighthouse는 구글에서 제공하는 웹 페이지 품질 개선을 위한 오픈 소스로 자동화 도구입니다. Lighthouse는 사이트의 성능, 접근성, SEO 등에 대한 전반적인 진단을 해줍니다.
상세 설명 Lighthouse Overview 공식 문서 참조
참고
Lighthouse 모바일의 경우 네트워크 속도를 최대 4배정도 느리게 측정하기 때문에 모바일 Performance가 비교적 낮게 나옵니다.
Metric 별로 어떤 성능 점수가 나는지 Lighthouse 계산기를 통해서 자세히 확인할 수 있습니다.
카테고리가 측정하는 내용
Performance : 웹 페이지의 로딩 속도 등 실제 성능을 측정. 성능의 측정항목은 6가지 Metric으로 정의되며, 각 Metric들은 페이지가 로드되는 속도를 다양한 측면에서 측정합니다. 자세한 설명은 Lighthouse Performance Audits 문서에서 확인.
Best practices : Best practices를 따라 개발되었는지 확인
Accessibility : 접근성 확인. 폰트 사이즈, 메뉴간 간격 등을 측정
Progressive Web App (PWA) : 웹과 네이티브 앱의 기능 모두의 이점을 가지도록 만들어진 서비스인지 체크
SEO : Search Engine Optimization의 약자로 검색 엔진 수집 최적화 측정
사용법
Google Chrome에서 웹 페이지를 엽니다.
DevTools (F12)를 열고 ‘Lighthouse’ 탭을 선택합니다. (단축키 맥:Cmd⌘+Option⌥+I / 윈도우:Ctrl+Shift+I)
‘Accessibility’ 항목을 선택하고 우측 상단의 ‘Analyze page load’를 클릭하여 보고서를 생성합니다.
Lighthouse를 활용한 검사
Lighthouse는 접근성 점수와 함께 개선이 필요한 부분을 제시합니다.
Lighthouse를 활용한 검사
WAVE
WAVE는 WebAIM에서 만든 확장 프로그램으로 현재 화면의 각 요소가 접근성을 준수하는지 평가합니다. 각 요소가 위반한 내용에 대한 이유와 해결 방법을 제시하여 접근성을 준수하는 개발을 쉽게 할 수 있도록 돕습니다.
사용법
Chrome 브라우저에서 WAVE 확장 프로그램을 설치합니다.
WAVE를 활용한 검사
페이지를 열고 WAVE 확장 프로그램을 실행하여 분석을 시작합니다.
WAVE를 활용한 검사
WAVE 페이지에서 발견된 접근성 문제를 제시합니다.
WAVE를 활용한 검사
Accessibility Scanner (Android)
Accessibility Scanner는 Android 기기에서 접근성 문제를 탐지하는 Google Play의 앱입니다.
사용법
Android 기기에 Accessibility Scanner 앱을 설치합니다.
Accessibility Tree 활용한 검사
앱을 실행하고 분석하려는 화면에서 스캔을 시작합니다.
앱은 화면에서 발견된 접근성 문제를 보고하고 개선 방법을 제시합니다.
접근성 트리 뷰(Accessibility Tree)
스크린 리더와 같은 보조 기술은 크로미움의 접근성 API를 사용해 웹콘텐츠와 상호 작용합니다. 접근성 API의 기본 모델은 접근성 트리입니다. 접근성 객체의 트리를 통해 보조 기술은 각 속성과 실제 속성값을 탐색하고 필요한 작업을 수행할 수 있습니다. 웹 개발자는 주로 HTML에서 ARIA 속성과 같은 DOM 속성값을 통해 접근성 트리를 만들고 이를 다룹니다.
크롬 개발자 도구에서는 개발자에게 콘텐츠가 보조 기술에 어떤 식으로 전달되는지 이해할 수 있게 접근성 창을 제공하고 있습니다. DOM 트리 뷰어에서 노드를 선택하면 해당하는 접근성 노드의 속성 정보가 상위 노드, 직계 자식 노드와 함께 창에 표시됩니다.
Accessibility Tree 활용한 검사
사용법
개발자 도구에서 Elements 항목을 선택하고 오른쪽 창에서 Accessibility를 선택하면 “Enable full-page accessibility tree” 항목을 체크
Accessibility Tree 활용한 검사
해당 노드 선택 후 검사
Accessibility Tree 활용한 검사
Accessibility Scanner (Android)
Accessibility Scanner는 Android 기기에서 접근성 문제를 탐지하는 Google Play의 앱입니다.
사용법
Android 기기에 Accessibility Scanner 앱을 설치합니다.
Accessibility Tree 활용한 검사
앱을 실행하고 분석하려는 화면에서 스캔을 시작합니다.
Accessibility Tree 활용한 검사
앱은 화면에서 발견된 접근성 문제를 보고하고 개선 방법을 제시합니다.
Accessibility Tree 활용한 검사
VSCode 확장 접근성 검사(axe Accessibility Linter)
VSCode 사용 시 별도 확장 설치 후 소스 코드에서 잘못 작성된 부분을 사전에 감지하여 수정할 수 있습니다.
VS Code extensions axe Accessibility Linter
eslint-plugin-jsx-a11y(ReactJS + ESLint)
접근성 오류 부분이 있는지 분석해 주는 플러그인이며 서비스 개발 환경이 React라면 실시간으로 JSX 요소에 대한 접근성 규칙을 확인하고 준수할 수 있도록 돕는 패키지를 설치해 개발할 수 있습니다. 기본적으로 추천되는 규칙 외에 예외로 사용하고 싶은 부분이 있다면 같이 서비스를 개발하는 개발자들과 협의하면서 lint 규칙을 만들어가다 보면 접근성을 준수하는 서비스 개발에 도움이 될 것입니다. 규칙 상세 설명 : jsx-eslint/eslint-plugin-jsx-a11y
사용법
eslint를 전역 설치했다면, eslint-plugin-jsx-a11y 플러그인도 전역으로 설치.
npm install eslint-plugin-jsx-a11y
// 또는
yarn add eslint-plugin-jsx-a11y
테스트할 장치를 선택합니다. 저는 진단하고 싶은 앱을 실행 후 아이폰을 노트북에 연결하여 장치 선택을 했어요. 개발 중인 앱을 Simulator로 빌드 하셨다면 Simulator를 선택하여 진단하실 수 있습니다.
출처 : NULI
Accessibility Inspector 툴 오른쪽 상단에서 audit 버튼을 선택합니다. Run Audit 버튼을 선택합니다.
출처 : NULI
결과 이슈 목록을 선택하거나 눈 버튼을 선택하시면 해당 항목을 보여줍니다. 장치를 보시면 노란색으로 표시되고, 물음표 버튼를 선택하시면 해당 이슈를 해결할 수 있는 방법을 알려줍니다.
출처 : NULI
물음표 버튼를 선택하시면 해당 이슈를 해결할 수 있는 방법을 알려줍니다.
출처 : NULI
목록에서 주의 깊게 봐야 할 이슈는 바로 description에 대한 이슈입니다. 대체 텍스트 이슈는 접근성 사용자에게 매우 크리티컬한 이슈이면서 해결 방법이 매우 수월한 이슈입니다.
출처 : NULI
Xcode의 Identity Inspector 탭의 Accessibility 패널에 대체 텍스트를 넣어주세요.
대체 텍스트 외에도 명도대비, 작은 터치영역등 다양한 접근성 이슈를 체크해주고 있습니다.
출처 : NULI
Inspection
각 요소별 접근성 항목을 확인할 수 있고, iOS 스크린리더인 VoiceOver 음성으로 들어볼 수 있습니다.
출처 : NULI
스피커
현재 초점이 위치한 요소의 정보를 VoiceOver 음성으로 들려줍니다.
이전 요소 탐색
현재 초점이 위치한 곳에서 이전 요소의 정보를 VoiceOver 음성으로 들려줍니다.
자동 탐색
현재 초점이 위치한 곳에서 모든 요소를 자동으로 탐색하며 요소의 정보를 VoiceOver 음성으로 들려줍니다.
다음 요소 탐색
현재 초점이 위치한 곳에서 다음 요소의 정보를 VoiceOver 음성으로 들려줍니다.
직접 탐색
마우스로 요소를 직접 선택하여 탐색합니다.
현재 초점이 위치한 요소의 접근성 항목을 나타냅니다.
항목은 Label(대체 텍스트), Value(값), Traits(유형 정보), Identifier(식별자), Hint(힌트 정보), User Input Labels(사용자 입력 텍스트 정보)입니다.
Android : Lint
Android 앱 개발도구인 Android Studio 의 Lint를 통해 개발과정에서 접근성을 수동 검사할 수 있습니다.
Analyze > Inspect Code를 실행합니다.
출처 : NULI
Android Studio 4.1.1. 버전을 사용. Android Studio Electric Eel 2022.1.1 Patch 2버전이면 Code 메뉴에 inspect Code가 보임.
출처 : NULI
Inspection profile에서 더보기 버튼을 실행합니다.
출처 : NULI
Inspections 창에서 Lint > Accessibility 항목 중 “Image without contentDescription” 항목과 “Missing accessibility label”을 체크합니다.
Android에서 Accessibility 항목 중 주의 깊게 봐야 할 이슈는 바로 이미지 대체 텍스트와 입력 서식 라벨에 대한 이슈입니다.
Severity를 Error로 체크해 주세요. Error 이슈를 해결하기 전까지는 빌드 성공을 할 수 없음.
출처 : NULI
진단 범위도 설정. 모든 범위 In All Sccopes
출처 : NULI
OK를 누르고 코드를 확인. contentDescription 이 없는 ImageView 또는 ImageButton에 빨간색으로 표시된 것을 확인할 수가 있습니다. labelFor 또는 hint가 없는 EditText 역시 빨간색으로 표시된 것을 볼 수 있습니다.
출처 : NULI
이슈 해결 : EditText 역시 hint 코드를 추가. 빨간색으로 표시되었던 코드가 노란색 코드로 변경.
출처 : NULI
결론
접근성은 시작은 있지만 끝이 없는 작업입니다.
오류 항목을 정기적으로 점검하여 접근성 개선을 한다면 점차 검사를 할 항목이 줄어들게 될 것입니다. 모두가 차별 없이 서비스를 이용할 수 있도록 접근성 유지를 위한 모두의 노력이 필요합니다. 무엇보다 접근성 작업은 서비스를 제공한다면 선택이 아닌 필수로 지켜야하는 항목임을 잊지 말아야 합니다.
접근성 작업 시 점검 필수사항
접근성 가이드(WCAG, KWCAG, WAI-ARIA) 내용 숙지
접근성 체크리스트 작성
접근성 자동 및 수동 검사(스크린리더) 진행
접근성 검사 툴(Lighthouse Accessibility 등) 활용 오류 항목 개선 및 내용 정리
접근성 사용자 테스트
접근성 정기적인 모니터링
자막, 수화 등의 제공
영상이나 음성 콘텐츠에는 동등한 내용의 자막, 원고 또는 수화가 제공되어야 한다.
색에 무관한 인식
화면에 표시되는 모든 정보는 색에 관계없이 인식될 수 있어야 한다.
명확한 지시 사항
지시 사항은 모양, 크기, 위치, 방향, 색, 소리 등에 관계없이 인식될 수 있어야 한다.
알림 기능
알림 정보는 화면 표시, 소리, 진동 등 다양한 방법으로 제공되어야 한다.
초점
의미나 기능을 갖는 모든 사용자 인터페이스 컴포넌트에는 초점(focus)이 적용되고, 초점은 논리적인 순서로 이동되어야 한다.
누르기 동작 지원
터치(touch) 기반 모바일 기기의 모든 컨트롤은 누르기 동작으로 제어할 수 있어야 한다.
응답 시간 조절
- 시간 제한이 있는 콘텐츠는 응답 시간을 조절할 수 있어야 한다.
정지 기능 제공
- 자동으로 변경되는 콘텐츠는 움직임을 제어할 수 있어야 한다.
컨트롤의 크기와 간격
- 컨트롤은 충분한 크기와 간격으로 제공되어야 한다.
입력 도움
- 입력 서식 이용 시, 입력 오류를 방지하거나 정정할 수 있는 방법을 제공해야 한다.
사용자 인터페이스의 일관성
- 사용자 인터페이스 컴포넌트들은 일관성 있게 배치되어야 한다.
깜박거림의 사용 제한
- 깜빡이거나 번쩍이는 콘텐츠를 제공하지 않아야 한다.
자동재생 금지
- 자동으로 재생되는 배경음을 사용하지 않아야 한다.
예측가능성
- 사용자가 의도하지 않는 화면 전환이나 이벤트 등이 실행되는 경우 사용자가 이해할 수 있는 방법으로 제공되어야 한다.
폰트 관련 기능의 활용
- 텍스트 콘텐츠는 운영체제에서 제공하는 폰트 관련 기능을 활용할 수 있는 방법을 제공해야 한다.
보조 기술과의 호환성
- 사용자 인터페이스 컴포넌트는 보조 기술을 이용하여 사용할 수 있도록 해야 한다.