Software & Компьютерная инженерия
Создание доступных программных приложений для инклюзивного пользовательского опыта
Table of Contents
Создание доступных программных приложений имеет важное значение для обеспечения того, чтобы все пользователи, независимо от их способностей, могли эффективно использовать цифровые инструменты. Инклюзивный дизайн не только расширяет вашу аудиторию, но и демонстрирует приверженность равенству и удобству использования. Доступность не является особенностью - это фундаментальный аспект качественной разработки программного обеспечения. Когда приложения создаются с учетом доступности, они становятся более удобными для всех, включая людей с временными нарушениями (например, сломанной рукой) или ситуационными ограничениями (например, яркий солнечный свет). В этой статье рассматриваются ключевые принципы, практические стратегии и подходы к тестированию, чтобы помочь вам создать программное обеспечение, которое обеспечивает действительно инклюзивный пользовательский опыт.
Понимание доступности в разработке программного обеспечения
Доступность в разработке программного обеспечения означает проектирование и создание приложений, которые могут использоваться людьми с широким спектром способностей и инвалидности. Это включает в себя пользователей с визуальными, слуховыми, двигательными, речевыми или когнитивными нарушениями. Помимо этического императива, доступность часто является юридическим требованием. Страны по всему миру приняли законы, такие как Закон об американцах с инвалидностью (ADA), Раздел 508 Закона о реабилитации и Европейский закон о доступности. Несоблюдение может привести к дорогостоящим судебным искам и репутационному ущербу.
Деловая база для доступности одинаково сильна. По данным Всемирной организации здравоохранения, более миллиарда человек во всем мире испытывают ту или иную форму инвалидности. Кроме того, доступный дизайн часто улучшает опыт для всех пользователей. Например, подписи на видео приносят пользу не только глухим пользователям, но и людям, наблюдающим в шумных средах или не носителей языка. Поисковые системы также благоприятствуют доступным веб-сайтам, улучшая эффективность SEO.
Чтобы создать действительно доступные приложения, разработчики должны с самого начала принять концепцию универсального дизайна.Обновление доступности позже часто дороже и менее эффективно, чем создание ее с самого начала.
Четыре принципа доступности (POUR)
Руководящие принципы доступности веб-контента (WCAG) определяют четыре основных принципа, которые служат основой для доступности. Эти принципы применяются ко всему цифровому контенту, включая веб-приложения и мобильные приложения.
- Представимая: Информация и компоненты пользовательского интерфейса должны быть презентуемы пользователям способами, которые они могут воспринимать. Это означает, что никакая информация не должна быть невидимой для всех органов чувств пользователя. Например, предоставлять текстовые альтернативы для нетекстового контента, такие как альтернативный текст для изображений или подписи для аудио. Убедитесь, что контент может быть представлен по-разному, не теряя смысла, например, через считыватель экрана или дисплей Брайля.
- Функциональные: Компоненты пользовательского интерфейса и навигация должны быть работоспособными. Пользователи должны иметь возможность взаимодействовать со всеми элементами управления и перемещаться по приложению с использованием различных методов ввода, включая клавиатуру, мышь, касание или голос. Это включает в себя избегание контента, который вызывает судороги (например, мигающие анимации) и предоставление достаточного времени для чтения и взаимодействия с контентом.
- Понятная: Информация и работа пользовательского интерфейса должны быть понятными. Текст должен быть читаемым и предсказуемым. Пользовательские интерфейсы должны функционировать согласованно, а ошибки должны быть четко объяснены предложениями для исправления. Например, сообщения проверки формы должны быть описательными и размещены вблизи соответствующего поля ввода.
- Работа: Контент должен быть достаточно прочным, чтобы его можно было надежно интерпретировать широким спектром пользовательских агентов, включая вспомогательные технологии. Это означает использование правильной семантической разметки, действительного кода и обеспечение совместимости с текущими и будущими браузерами, считывателями экрана и другими инструментами. Используйте стандартные веб-технологии и избегайте устаревших или проприетарных функций.
Эти принципы далее разбиты на уровни соответствия: A (минимум), AA (рекомендуется) и AAA (высший). Большинство правовых требований и отраслевых стандартов нацелены на соответствие WCAG 2.1 уровню AA.
Практические стратегии создания доступных приложений
Для обеспечения доступности требуется продуманное планирование и соблюдение передового опыта на протяжении всего процесса разработки. Следующие стратегии направлены на устранение общих барьеров доступности и применимы к большинству современных веб-приложений.
Используйте семантический HTML
Семантические HTML-теги, такие как , , , и , помогают экранным считывателям и другим вспомогательным технологиям понять структуру вашего контента, облегчая навигацию. Например, элемент сообщает считывателю экрана, что он содержит навигационные ссылки, позволяя пользователям переходить непосредственно к навигации. Аналогично, использование вместо обеспечивает встроенную доступность клавиатуры и смысловое значение без дополнительного кода.
Всегда используйте заголовки () через ) в логической иерархии. Распространенной ошибкой является пропуск уровней заголовков (например, переход от к . Это сбивает с толку пользователей считывающего экрана, которые полагаются на заголовки, чтобы понять контур документа. Используйте элементы списка (, , ) для сгруппированных элементов и формирует элементы с надлежащими ярлыками.
Избегайте использования и для интерактивных элементов.Если вы должны использовать несемантические элементы, убедитесь, что они имеют правильные роли и свойства ARIA, но всегда сначала отдавайте предпочтение нативным элементам HTML.
Предоставить текстовые альтернативы для нетекстового контента
Все нетекстовые материалы, такие как изображения, иконки, диаграммы и мультимедиа, должны иметь описательные текстовые альтернативы. Для изображений используйте атрибут . Декоративные изображения, которые не передают никакой информации, должны иметь (пустые), чтобы читатели экрана их игнорировали. Информативные изображения должны иметь краткий, значимый альтернативный текст, который описывает контент или функцию. Для сложных изображений, таких как диаграммы или графики, обеспечить более длинное описание в соседнем тексте или отдельной доступной странице.
Для значков, используемых в качестве кнопок или элементов управления, убедитесь, что они имеют доступные имена. Например, если значок увеличительного стекла используется для кнопки поиска, HTML должен включать или визуально скрытый текст, такой как .
Для аудио- и видеоконтента предоставляются подписи, транскрипты и аудиоописания. Подписи необходимы глухим и слабослышащим пользователям, в то время как транскрипты приносят пользу пользователям с когнитивными нарушениями или тем, кто предпочитает чтение. Аудиоописания помогают слепым пользователям понимать визуальные элементы в видео.
Обеспечить доступность клавиатуры
Создайте приложение так, чтобы все функции могли быть доступны только с помощью клавиатуры. Это выгодно пользователям с двигательными нарушениями, которые не могут использовать мышь, а также пользователям питания, которые предпочитают сочетания клавиш. Каждый интерактивный элемент (ссылки, кнопки, элементы управления формой, пользовательские виджеты) должен быть сфокусирован и работоспособн через клавиатуру. Используйте стандартные взаимодействия клавиатуры: Таб , чтобы двигаться вперед, Shift + Taб назад, Введите или Space для активации и клавиши стрелок для навигации в таких компонентах, как списки и меню.
Избегайте ловушек клавиатуры, где фокус застревает на элементе. Например, модальные диалоги должны удерживать фокус в диалоге, пока он открыт, но пользователь должен иметь возможность закрыть его и вернуться на главную страницу. Обеспечить видимые индикаторы фокусировки (например, контуры), чтобы пользователи клавиатуры могли видеть, какой элемент в настоящее время сосредоточен. Никогда не скрывайте контур фокуса, не предоставляя альтернативу.
Проверяйте свое приложение, отключив мышь и полностью навигируясь с клавиатурой. Если вы не можете выполнить все задачи, возникает проблема доступности клавиатуры.
Цвет и контраст
Достаточная цветовая контрастность необходима для пользователей с низким зрением или цветовой слепотой. WCAG 2.1 Level AA требует коэффициент контрастности не менее 4,5:1 для обычного текста и 3:1 для большого текста (18px жирный или 24px обычный). Используйте такие инструменты, как WebAIM Contrast Checker или встроенные инструменты разработчика браузера для проверки коэффициентов контрастности.
Не полагайтесь исключительно на цвет для передачи информации. Например, если поле формы становится красным для указания ошибки, также включайте текст или значок, который сообщает об ошибке. Текст ссылки должен быть подчеркнут или иметь другие нецветные индикаторы, чтобы отличить его от окружающего текста.
Убедитесь, что цветовые комбинации доступны для пользователей с различными типами цветовой слепоты. Используйте шаблоны, значки и метки в дополнение к цвету. Такие инструменты, как Цветной Oracle , могут имитировать различные недостатки цветового зрения.
Используйте роли и свойства ARIA мудро
Доступные богатые интернет-приложения (ARIA) предоставляют набор атрибутов, которые дополняют HTML для улучшения доступности динамического контента и сложных элементов управления пользовательским интерфейсом. Например, , , , и являются мощными инструментами. Однако первое правило ARIA заключается в том, что «Не используйте ARIA, если вы можете использовать собственный элемент HTML, который обеспечивает необходимую вам семантику и поведение».
При создании пользовательских компонентов (например, пользовательского слайдера или панели вкладок) убедитесь, что они имеют правильные роли, состояния и свойства. Используйте WAI-ARIA Authoring Practices в качестве руководства. Всегда проверяйте свои реализации ARIA с помощью считывателей экрана.
Создавать доступные формы
Формы являются одним из наиболее распространенных источников барьеров доступности. Каждый вход должен иметь связанный элемент. атрибут метки должен соответствовать ввода. Альтернативно, оберните вход внутрь метки. Связанные с группой элементы управления формой (например, радиокнопки или флажки) с использованием и предоставьте , который описывает группу.
Предоставьте четкие сообщения об ошибках, которые указывают, какое поле имеет ошибку и как ее исправить. Используйте , чтобы связать сообщение об ошибке с полем ввода. Кроме того, убедитесь, что валидация формы не зависит исключительно от JavaScript на стороне клиента; валидация на стороне сервера должна обеспечивать эквивалентную обратную связь.
Для сложных форм разбейте их на шаги с четкими индикаторами прогресса. Используйте автофокус экономно и только тогда, когда это помогает пользователям, так как перемещение фокуса неожиданно может дезориентировать пользователей считывающего экрана.
Адаптивный и масштабируемый дизайн
Доступность также означает, что контент работает в разных размерах экрана, уровнях масштабирования и предпочтениях пользователей. Пользователи с низким зрением часто увеличивают масштаб браузера до 200% или более. Разработайте приложение так, чтобы оно оставалось пригодным для использования и читаемым при 400% масштабировании без необходимости горизонтальной прокрутки (критерий успеха WCAG 1.4.10). Используйте относительные блоки, такие как или для размеров шрифтов, а не фиксированных пикселей, чтобы текст масштабировался должным образом, когда пользователи меняют настройки браузера.
Поддерживать настройки доступности операционной системы, такие как «Уменьшить движение» для пользователей с вестибулярными нарушениями. Используйте медиа-запрос , чтобы отключить ненужные анимации. Также рассмотрите и , чтобы адаптироваться к предпочтениям пользователей.
Проверяйте свое приложение на различных устройствах, включая мобильные телефоны, планшеты и различные браузеры, чтобы обеспечить постоянную доступность.
Тестирование и постоянное совершенствование
Доступность не является одноразовой задачей; она требует постоянного тестирования и уточнения на протяжении всего жизненного цикла программного обеспечения. Включите проверки доступности в каждый этап, от проектирования до разработки до QA. Существует три основных типа тестирования: автоматизированное, ручное и пользовательское тестирование.
Автоматизированные инструменты тестирования
Автоматизированные инструменты могут быстро улавливать многие распространенные проблемы доступности, такие как отсутствие альтернативного текста, низкая контрастность или недостаточная структура заголовков. Такие инструменты, как axe DevTools и WAVE, интегрируются в браузеры и конвейеры CI/CD. Хотя автоматизированные инструменты эффективны, они могут обнаруживать только около 20-30% проблем доступности. Они не могут оценить, является ли альтернативный текст значимым или правильно ли пользовательский виджет работает с экранным считывателем. Используйте автоматизированные тесты в качестве первой линии защиты, а не как полное решение.
Интегрируйте автоматизированные проверки доступности в ваш непрерывный интеграционный конвейер, чтобы уловить регрессии до того, как они достигнут производства. Многие системы тестирования, такие как Cypress и Jest, могут включать топорное ядро для автоматизированных аудитов.
Ручное тестирование с помощью вспомогательных технологий
Ручное тестирование включает в себя использование тех же вспомогательных технологий, которые используют люди с ограниченными возможностями. Наиболее распространенным является тестирование с помощью считывателя экрана. Для Windows используйте NVDA (бесплатно) или JAWS (коммерческий). На macOS используйте VoiceOver (встроенный). Для Linux используйте Orca. Изучите ярлыки считывателя экрана для навигации по вашему приложению. Проверяйте общие рабочие процессы, такие как заполнение формы, навигация по меню или чтение длинной статьи. Убедитесь, что весь контент объявлен правильно, что порядок фокусировки является логичным, и что динамические обновления (например, результаты живого поиска) сообщаются соответствующим образом.
Тщательно проверьте навигацию по клавиатуре: убедитесь, что все интерактивные элементы доступны и работают с клавиатурой, и что порядок фокусировки имеет смысл.Проверка с браузером увеличена до 200% и 400%, а также с пользовательскими шрифтами или цветами (например, с использованием режима высокой контрастности Windows).
Вовлечение пользователей с инвалидностью
Наиболее ценное тестирование исходит от реальных пользователей с ограниченными возможностями. Набор участников, которые используют различные вспомогательные технологии и имеют различные недостатки. Наблюдайте, как они взаимодействуют с вашим приложением и собирайте их отзывы. Это может выявить проблемы, которые пропускают автоматизированное и ручное тестирование. Соберите обратную связь на ранних этапах процесса проектирования, чтобы избежать переработки. Даже небольшое исследование пользователей с 3-5 участниками может выявить критические проблемы юзабилити.
Создайте культуру инклюзивного дизайна в вашей организации. Обеспечьте обучение дизайнеров, разработчиков и сотрудников QA принципам доступности и передовым практикам. Доступность должна быть общей ответственностью, а не отнесена к одному специалисту.
Заключение
Создание доступных программных приложений жизненно важно для создания инклюзивного пользовательского опыта. Применяя такие принципы, как семантический HTML, предоставляя текстовые альтернативы, обеспечивая доступность клавиатуры и поддерживая достаточную цветовую контрастность, разработчики могут сделать свои приложения пригодными для использования всеми. Доступность не является контрольным списком; это постоянная приверженность равенству и удобству использования. Непрерывное тестирование с автоматизированными инструментами, ручная оценка и реальная обратная связь с пользователем являются ключом к поддержанию и улучшению стандартов доступности.
Начните с малого: выберите одну из стратегий, изложенных выше, и реализуйте ее в своем следующем проекте. По мере повышения квалификации, расширяйте свои усилия. Помните, что доступность приносит пользу всем пользователям, и каждый шаг к инклюзивности делает цифровой мир лучше. Для дальнейшего чтения обратитесь к WCAG 2.1 Quick Reference и изучите ресурсы из W3C Web Accessibility Initiative .