Дизайн Sergio A-Rzhevskiy
2 796

Как мы контролируем общедоступность BlaBlaCar

Специально для vc.ru BlaBlaCar перевёл колонку своего фронтенд-инженера, ответственного за общедоступность сайта и приложения. Внутри много полезных ссылок и советов, как привести интерфейс сервиса в соответствие международным стандартам качества.

В закладки

Вступление

BlaBlaCar — онлайн-приложение для совершения поездок. Наша главная цель — сделать сервис доступным для как можно большего числа пользователей, избегая при этом его усложнения. Но есть и другие сервисы, облегчающие жизнь людей, которые используются повсеместно. Они установлены на наших смартфонах и ОС наших компьютеров. Но для всех ли они доступны?

Показатели и масштабы использования

Согласно Всемирному докладу об инвалидности, опубликованному Всемирной организаций здравоохранения, 15% населения Земли имеют ту или иную форму инвалидности, 253 млн из них имеют проблемы со зрением.

Существуют следующие виды инвалидности, которые оказывают влияние на использование интерфейса: глухота, когнитивные, физические и речевые нарушения, дислексия, проблемы со зрением.

У людей разные способности, навыки, предпочтения и ожидания, влияющие на то, как они пользуются сервисами. В отчёте о разнообразии интернет-пользователей, который подготовил Консорциум всемирной паутины (World Wide Web Consortium, далее — W3C), можно подробнее почитать об этом.

Иногда пользователям, чтобы воспользоваться сервисом, необходимо изменить цвет интерфейса, масштаб, иметь возможность навигации с помощью клавиатуры или включить функцию скринридера.

Глава 1. Философия рыцаря

Чаще всего главным врагом общедоступности (стандарт называется a11y) является недостаточная осведомлённость: мы просто не задумываемся об этом, а если и задумываемся, то не знаем, как правильно это реализовать, или намеренно опускаем этот пункт, думая: «Большинству людей это не нужно», «Это не для нашей бизнес-модели», «У нас нет на это времени», «Слепые люди в любом случае не будут пользоваться нашей платформой» и так далее.

Это неправильно. Соблюдение стандартов общедоступности a11y имеет ряд преимуществ для сервиса: легкая читаемость, повышение лояльности, увеличение аудитории.

Много маленьких шагов может быть сделано ценой минимальных усилий. Например, выбрать правильный цветовой тон, добавить альтернативное наполнение, соответствующее стандартам общедоступности a11y. Легче внедрять такие новшества на раннем этапе развития проекта.

Задача фронтенд-разработчика — убедить каждого, что дизайн «для всех» — это преимущество, а не ограничение. Мы должны просвещать людей, особенно тех, кто стремится не замечать, что соответствие стандартам общедоступности a11y поможет охватить, в конце концов, большую аудиторию, особенно, когда вы запускаете свой продукт в нескольких странах.

В BlaBlaCar мы рассматриваем стандарт общедоступности a11y не как отдельный проект, но как часть глобального стандарта качества нашего сервиса. Мы стараемся его приоритизировать, перенимаем передовой опыт в процессе разработки и используем различные ручные и автоматизированные инструменты на этапах разработки.

В ином случае мы будем всегда на шаг позади и будем тратить время на залатывание дыр, поскольку обогнать локомотив разработки при таком подходе невозможно.

Глава 2. Свет волшебника

Немного контекста

Фронтенд-команда BlaBlaCar сейчас активно меняет вёрстку мобильного приложения и десктопной версии сервиса с учётом принципов одностраничного приложения (Single Page App).

Это включает в себя техническую миграцию в React и улучшение user-experience. Вы, наверное, знаете, что мы недавно провели ребрендинг, в том числе обновили логотип, изменили цвета, шрифты и визуальные компоненты.

UX-аспекты

В процессе ребрендинга приходится идти на ряд компромиссов между читабельностью и тем чувством, которое вы хотите вызвать в пользователе новым дизайном.

Более читаемый, более комфортный

Вот почему у нас два разных цветовых тона: один — для брендинга и для печати; второй — для использования в интернете.

Для интерфейса мы используем более тёмные варианты брендовых цветов:

Чтобы проверить читаемость текста и определить оптимальные комбинации между текстом и фоновыми цветами, мы используем специализированные онлайн-инструменты, такие как Tanaguru.

Это помогает найти подходящие цветовые комбинации и гайдлайны. Например, если контраст недостаточен, применяем другие визуальные инструменты, такие как минимальный размер шрифта или полужирный текст.

При выборе цвета мы стремимся соответствовать уровню А стандарта общедоступности WCAG-2.0, а при выборе контраста — уровню АА. Это соответствует критериям W3C. Нам всё больше удаётся соответствовать этим требованиям, поскольку мы постоянно совершенствуемся.

В дополнение к повышению читабельности, во время ребрендинга мы сильно упростили наши UX-шаблоны: уменьшили количество элементов на каждой странице, увеличили размеры шрифтов, размеры интерактивных кнопок («Вход», «Регистрация»).

В помощь дальтоникам

Чтобы увидеть наш дизайн глазами дальтоников, мы использовали Skala Preview, которая поддерживает основные типы дальтонизма, включая протанопию, дейтеранопию, тританопию и монохромазию.

Пляшущие тексты

А вот так ваш текст могут видеть люди с дислексией — избирательным нарушением способности к чтению (GitHum source):

Чтобы не допустить этого, мы стараемся избегать нечёткости, упрощаем и добавляем больше «воздуха» в тексты. Чисто чёрный текст на чисто белом фоне и длинные параграфы также могут вызывать сложности для людей с дислексией. О других примерах плохих UX-решений, от которых страдают дислексики, можно почитать в статье "6 Surprising Bad Practices".

Глава 3. Защитники крепости

Технический аспект

Как я уже сказал, мы недавно стали начисто переверстывать веб-версию сервиса в формат одностраничного приложения. Для этого мы используем библиотеку системы проектирования под названием Kirk (обратите внимание на статью моего коллеги об этом), на которую мы опираемся при соблюдении всех параметров общедоступности стандарта а11y.

Наличие составных элементов, соответствующих этому стандарту, является первым шагом для эффективного внедрения передовых методов доступности в остальной части приложения.

Инструменты разработки и построение процессов

Создавая новые компоненты сервиса, мы внимательно изучаем рекомендации используемого стандарта: контролируем, чтобы использовалась правильная семантическая разметка содержания (пространство, блоки, альтернативное содержание), думаем, как адаптировать сложные компоненты на JavaScript (выпадающие меню и прочее).

Чтобы избежать типичных ошибок при внедрении критериев a11y, мы применяем правила ESLint, которые использует Airbnb. Проводим модульные тесты по контролю за содержанием страницы и состояниям атрибутов. Благодаря этому, фронтенд-разработчик не сможет случайно забыть или пропустить требуемый элемент.

Соблюдение правил W3C не гарантирует на 100%, что интерфейс будут удобен для пользователей. Поэтому, чтобы проверить эффективность встроенных компонентов, мы проводим ручные тесты по навигации с помощью клавиатуры и скринридеров (обычно используем VoiceOver).

При сквозных тестах мы отрабатываем общие сценарии использования сервиса, чтобы также быть уверенными, что у нас нет проблем с общедоступностью.

Контроль соблюдения требований a11y (еще не введен)

После общения с Kaelig Deloumeau-Prigent (Shopify) мы решили обновить наши инструменты проверки общедоступности, используя Pa11y Webservice. Это позволит нам постоянно мониторить наше соответствие требованиям a11y и видеть эволюцию разработки.

Заключение

В этой статье мы стремились показать, как улучшаем и поддерживаем уровень общедоступности на BlaBlaCar. Мы остаёмся прагматиками, поэтому будем рады вашим отзывам и комментариям. И надеемся, что статья поможет пробудить в вас рыцаря общедоступности и побудит к свершению вашей собственной миссии.

#дизайн

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Sergio A-Rzhevskiy", "author_type": "self", "tags": ["\u0434\u0438\u0437\u0430\u0439\u043d"], "comments": 8, "likes": 27, "favorites": 1, "is_advertisement": false, "subsite_label": "design", "id": 35669, "is_wide": false, "is_ugc": true, "date": "Mon, 02 Apr 2018 17:04:27 +0300" }
{ "id": 35669, "author_id": 14086, "diff_limit": 1000, "urls": {"diff":"\/comments\/35669\/get","add":"\/comments\/35669\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/35669"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199114 }

8 комментариев 8 комм.

Популярные

По порядку

Написать комментарий...
2

Текст дислексика завораживает)) смотрел бы и смотрел

Ответить
0

А мне, как сотруднику компании, приятно было знать, что при разработке интерфейса наши специалисты не забывают про людей с разными типами дальтонизма: протанопией, дейтеранопией, тританопией, монохромазией... Слов-то таких раньше не знал.

Ответить
0

Это все прекрасно. Спасибо за статью, напомнили, что хотел сделать пост в фб. О том, как я никуда не уехал из-за того, что компания, которая пряталась под аккаунтом человека кинула.

Ответить
1

Оо, оказывается за 3 года ББК так и не удосужился решить проблему с бомбилами

Ответить
0

Критичные минусы блаблакар:
1. Маршрутки. На пикабу много постов было по этой теме.
2. Тормазнутость веб-интерфейса.

Ответить
0

Это все по стандарту а11у, недаром про него упоминают раз 10 в тексте. Мантра как будто.

Ответить
0

Когда увидел тему про контроль общедоступности - сначала подумал что это издевка, т.к. изначально в голову пришла мысль о недоступности сайта blablacar.com в течении уже месяца. Оказывается речь-то про людей с ограниченными возможностями... ну ладно...

Ответить
0

«Чтобы избежать типичных ошибок при внедрении критериев a11y, мы применяем правила ESLint, которые использует Airbnb.»

После это фразы любой фронтенд разработчик начинает смеяться и закрывает текст, так как писал явно не разраб. Какое отношение имеет линтер, который проверяет код на синтаксические ошибки и стилистику его написания к интерфейсу???

Ответить

Комментарий удален

0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Хакеры смогли обойти двухфакторную
авторизацию с помощью уговоров
Подписаться на push-уведомления