3.4 Как устроены интерфейсы

Интерфейсы, UI, UI/UX — обычно под этими терминами понимают кнопочки и менюшки в программе или на странице сайта. На интуитивном уровне всем понятно, что, если нажать в меню пункт «Открыть файл», появляется «диалог» выбора файла, или если нажать «Войти» на сайте, тебя перекидывает на страницу ввода логина.

В этом параграфе разберёмся, что там происходит на самом деле и как это всё работает.

Что такое интерфейс

Сразу оговоримся, что в сухой академической среде под «интерфейсом пользователя» подразумевается любой вариант взаимодействия с техникой: голосовой, рукописный, даже нейроинтерфейсы для управления компьютером напрямую. В этом смысле общение с Алисой — это передача команд компьютеру через голосовой интерфейс.

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

Какие интерфейсы бывают

Основная концепция организации интерфейсов на обычных компьютерах — это WIMP, акроним, который расшифровывается так: Windows, Icons, Menus, Pointers (окна, иконки, меню, указатели). Эта концепция подразумевает, что в интерфейсе должны быть все перечисленные элементы.

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

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

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

Самый новый класс пользовательских интерфейсов — это интерфейсы для носимой электроники, в основном для смартфонов и планшетов. Они адаптированы под взаимодействие касанием, что позволило упразднить окна.

Разве?

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

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

Как работают интерфейсы

Про какой бы интерфейс мы ни говорили, механизм их работы очень схож. Напрашивается сравнение с пультом от телевизора: каждая из множества кнопок делает что-то своё, могут быть какие-то рамки или иконки, чтобы было понятно, какие кнопки за что отвечают. Когда вы нажимаете кнопку, пульт посылает команду телевизору и что-то происходит: переключается канал или убавляется громкость.

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

Если это раздел меню, то, скорее всего, откроется меню. Если это кнопка, у неё может быть своя логика: показать диалог открытия файла или сохранить данные в окне и отправить их на сервер.

Как создаются интерфейсы

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

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

Можно создать интерфейс для приложения почти в любой операционной системе, и даже есть специальные библиотеки интерфейсов (например, Qt или Tk), цель которых — дать возможность программе выглядеть одинаково на разных операционных системах.

Вот так создаются интерфейсы в обычной для Windows-программ среде .net

В веб-приложениях используется тот же принцип, но всё немного сложнее. Сама веб-страница — это структура-скелет плюс правила её «украшения» и немного JavaScript-кода для оживления и интерактивности. Всё это загружает браузер, когда вы отправляете запрос на веб-сервер.

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

Разработка интерфейса происходит так:

  • Описывается структура — что должно быть на странице — с помощью языка разметки HTML.
  • Описывается, как должны выглядеть элементы структуры, — с помощью языка стилизации CSS.
  • Описывается, что должно происходить при взаимодействии пользователя со страницей, — с помощью языка программирования JavaScript.

Затем .html-, .css- и .js-файлы размещаются на веб-сервере, и, когда вы переходите по URL (например: https://education.yandex.ru/handbook), веб-сервер отвечает на ваш запрос и передаёт эти файлы браузеру. А уже браузер читает их и решает, как разместить всю эту красоту на экране.

У веб-разработчиков тоже есть библиотеки интерфейсов — например, MUI, которая имплементирует дизайн-систему Google Material UI. Или библиотека компонентов от Яндекса Gravity UI.

Пример отображения элементов интерфейса — кнопок для пагинации (смены страниц)

То есть программисты описывают, что именно произойдёт, когда пользователь откроет страницу, нажмёт кнопку, наведёт курсор на элемент.

Например, у нас есть форма отправки файла, она уже загружена, и мы нажимаем кнопку «Прикрепить файл». Или мы листаем каталог магазина, доходим до кнопки «Загрузить ещё», нажимаем её, и нам прилетает с сервера ещё набор товаров на страницу.

Но в конечном итоге логика остаётся той же: вы работаете с интерактивными элементами и привязанным к ним кодом, который срабатывает при каких-то событиях, по клику или наведению курсора на элемент.

Эволюция интерфейсов ОС

Неожиданно, но, если мы захотим окунуться в историю пользовательских интерфейсов, мы окажемся не в командной строке без каких-либо окон, а перед машиной с двумя экранами, клавиатурой и сканером, в 1930 году, когда Вэнивар Буш придумал концепцию Memex.

Проект устройства на основе Memex. Источник

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

Этим эссе очень вдохновился Дуглас Энгельбарт, который в 1968 году представил свой проект The Mother of All Demos, где показал прототип системы, в которой можно было перемещаться по разным частям интерфейса, выделять текст и менять его размер.

Дуглас Энгельбарт в 2008 году. Источник

Всё это он делал странным устройством с колёсиками, указателем, который он назвал «клоп» (его впоследствии назовут «компьютерная мышь»). А потом он включил вместе с коллегой камеры и, общаясь по видео, они вместе редактировали один документ. Да, это был всё ещё 1968 год, все были в восхищении, но разработчик опередил своё время на десятилетия, и его работа так и осталась прототипом.

Первая компьютерная мышь. Источник

Восхитились демонстрацией и в компании Xerox, которая в 1973 году представила свой компьютер с графическим интерфейсом и своим вариантом мышки. Компьютер предполагался для работы с текстом, поэтому у него был вертикальный экран с пропорциями листа А4, чтобы набирать текст и сразу видеть, как он будет выглядеть при печати.
С того момента все поняли, что компьютеры не продать без красивого интерфейса, и стали его разрабатывать. Вот пример интерфейса от Apple Lisa, выпущенного в 1979 году:

Источник

Ближе к концу 1980-х годов из-за MS-DOS и необходимости выпускать недорогие компьютеры, у которых не было ресурсов, чтобы рисовать красивые интерфейсы, произошёл откат до текстовых интерфейсов.
Впрочем, далее по мере развития компьютеров становилось всё больше ресурсов. И уже сейчас наши смартфоны способны отрисовывать такой интерфейс, какой и не снился стационарным в восьмидесятых.
Но — меньше слов. Взгляните сами, как развивались интерфейсы ОС:

2.5

Norton Commander (1986)

Windows 3.11 (1992)

Windows 95 (1995)

BeOS DR6 (1996)

Mac OS 8 (1997)

Windows XP (2001)

KDE 3 (2002)

Iphone OS (2007)

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

А ещё мы коротко затронули вопрос, как браузер получает документы с веб-сервера. В следующем параграфе углубимся в эту тему: поговорим о том, как работает интернет.



Чтобы добавить в заметки выделенный текст, нажмите Ctrl + E
Предыдущий параграф3.3. Как появились языки программирования
Следующий параграф3.5. Что такое интернет