Об определениях «пользовательского интерфейса»
Занимаясь не только графическими пользовательскими интерфейсами, но и аппаратными, я регулярно сталкиваюсь с проблемой хорошего определения, что это такое — пользовательский интерфейс. А определений уйма, и все они хороши по-своему, но все же ощущается некая проблема отсутствия универсального определения. Поэтому попытаюсь подойти к определению, которое мне нравится больше всего.
Начнём с GUI.
На самом деле взаимодействую я не с нарисованной на экране кнопкой, не с формой и даже не с программой — я активно воздействую руками на мышку/трекбол или сенсорную панель, а уже результат этого воздействия проецируется на экране. То же самое касается смартфонов, планшетов, умных часов и иных компьютеризированных устройств.
То есть интерфейсом в данном случае является особым образом организованная совокупность устройств ввода и устройств вывода.
Если говорить о других, «внекомпьютерных» объектах, то там картина наблюдается аналогичная.
В автомобиле я с помощью мышц активно воздействую на руль, на педали, на рычаг АКПП или МКПП. Эти воздействия трансформируются в изменения режима работы автомобиля — например, вращение руля передается гидро- или электроусилителю, далее к рулевой рейке и, наконец, к изменению угла направления передних колёс.
Вращая рычаг машинки «газ-реверс» на катере, я управляю оборотами и направлением вращения гребного вала, либо меняю угол лопастей гребного винта. Смещая румпель, жестко соединенный с пером руля, я поворачиваю (в меру сил) это перо и спустя небольшое время лодка, катер или яхта начинают поворот в заданную сторону.
Нажимая на выключатель на стене, я замыкаю или размыкаю цепь и загорается люстра или светильник в комнате.
Во всех этих случаях обратной связью служит наблюдаемое изменение режима работы управляемого объекта, а часто и тактильный отклик (например, в случае румпеля или руля, я могу прочувствовать сопротивление среды изменению направления движения, а в случае выключателя я могу понять, что есть какая-то неисправность с лампой или в проводке — выключатель в положении «Вкл», а света нет).
Таким образом, можно предположить, что интерфейсом являются любые органы и элементы управления и обратной связи, с которыми мы взаимодействуем в предметном мире, включая и виртуальные, цифровые системы.
Однако это тоже не так. Такое определение плохо тем, что вообще всё становится интерфейсом, даже ручки ложки и вилки — что выглядит странным и нелепым.
Взаимодействуя с ложкой и вилкой, мы непосредственно манипулируем объектом, а не посылаем ему какие-либо команды. Поэтому речи об интерфейсе тут нет и быть не может. И в этом и кроется второй важный признак интерфейса — разрыв между воздействием и откликом — в пространстве или во времени. То есть между аффектором (органом управления) и эффектором (колёсами, процессором) должна быть какая-то цепь, причём скрытая из виду. Это мы часто называем скрытой логикой (hidden logic), но я бы сюда включил и невидимость любых иных элементов в цепочке «воздействие — реакция». Похоже на рефлекторную дугу, не правда ли?
Поэтому, на мой взгляд, о наличии интерфейса (и предмете его проектирования) можно говорить, когда органы управления и обратной связи, а также объект управления разделены, когда между ними есть дистанция.
Проверить этот подход можно даже на очень простых механических системах. Вращая румпель яхты, жестко соединенный посредством баллера с пером руля, мы можем говорить о румпеле как органе интерфейса тогда и только тогда, когда мы это перо руля не видим (а перо может быть смещено, изогнуто или вообще отсутствовать после удара о скалы). Если же мы непосредственно наблюдаем его (например, если используем опущенное в воду весло в качестве руля), то здесь интерфейс отсутствует, а используется непосредственное манипулировани еобъектом.
Подытожив всё это, вот моя версия определения:
Интерфейс — это совокупность органов воздействия на объект и средств получения обратной связи от него в случае разрыва (пространственного, временного или логического) между ними и объектом.
Может коряво (и вряд ли ново), но этот подход мне нравится тем, что он избавляет от разрыва между цифровыми системами и системами «предметными» — а значит, схлопывает в единый континуум современные UX, юзабилити и HCI с традиционными эргономикой, человеческими факторами и HMI, позволяя мыслить куда более системно — в частности, проектируя цифровую систему, начинаешь намного больше задумываться о выборе (и проектировании!) аппаратных средств взаимодействия, а проектируя сугубо аппаратную, из тумблеров и клавиш — использовать весь спектр опыта из цифровых систем.