Будущее нативных и веб-приложений

Эпл любит нативные приложения: они быстрее, работают без интернета, лучше взаимодействуют с системой и ощущаются «настоящими». Гугль любит веб-приложения: они не требуют установки, работают на любой ОС и получают бесплатно все фичи браузера.

Но в будущем не будет разницы между нативными и веб-приложениями. Лучшее из обоих миров соединится.

Гугль куда быстрее движется в это светлое будущее, чем Эпл. Такое ощущение, что Эпл даже не врубается, почему нативные приложения — говно. А Гугль врубается в то, что не так с вебом, и помаленьку всё это исправляет. Скорее всего, веб дорастёт до универсальной платформы будущего, а натив постепенно сойдёт на нет.

Производительность и доступ к системе

Нативные приложения быстрее, потому что написаны на низкоуровневом языке и работают с железом более напрямую. А веб — виртуальная машина, в которой всё тормозит (особенно если настал рефлоу).

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

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

Урлы

Урлы — сила веба. Адресная строка в браузере, конечно, умрёт, но урлы намного важнее, чем адресная строка: они уникально идентифицируют (ну лоцируют, ок) ресурс. Это делает возможным ссылки — главный инструмент навигации. Ссылки можно открывать в табах, сохранять в избранное, находить роботами, передавать другу. Нативные приложение ничего такого не умеют, что делает их тупыми как полено.

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

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

Табы

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

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

Эпл добавил табы в Файндере, но работают они ужасно. Я не могу даже спокойно открыть папку в новом табе. И это бред, что Файндер должен специально уметь «поддерживать табы». Фейсбук и Википедия вон тоже поддерживают табы, подумаешь, великое дело. Только для тупых нативных приложений табы — это событие. Веб просто поддерживает урлы и получает табы от браузера в подарок.

Мне жутко недостаёт табов в Лайтруме, в Айтюнсе, в почте, в Эверноуте. Конечно, может, эти приложения и научатся всё это поддерживать, но если они это будут делать сами, то у каждого будет свой набор ненужных ограничений. Это должна быть забота операционной системы. Кроме того, если Айтюнс и Эверноут поддержат табы, я всё равно не смогу открыть их табами одного окна. А Фейсбук и Википедию могу, и им ничего для этого делать не надо.

Букмарки и история

Букмарки, как и табы — просто следствие наличия урлов. Каждое окно интерфейса идентифицируемо, а значит можно сохранить этот идентификатор для быстрого доступа. Я не понимаю, почему я могу тупо сохранить документ в Гугль-доке на панель букмарок, а результаты поиска в Айтюнсе — не могу. Точнее, прекрасно понимаю: потому что Айтюнс — тупое нативное приложение, у результатов поиска которого нет урла.

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

Установка

Установка — это типичный пример интерфейса-зла, как регистрация на сайте. Если я просто хочу купить книгу, зачем мне регистрироваться? А если я просто хочу отредактировать картинку, зачем мне ставить Фотошоп? Сегодня этот вопрос может звучать странно, но через сколько-то лет люди правда перестанут понимать смысл этого ритуала «установки программы», это просто пустая трата времени жизни.

На Айфоне вот бесит необходимость держать сотни иконок приложений в папках. Нафига мне приложение Аэроэкспресса, почему я просто не могу купить на него билет, когда мне понадобится, вписав в поиск «Аэро»? Да потому что это тупой натив, работающий на перфокартах, вот почему.

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

Доступность

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

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

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

Работа в офлайне

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

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

Но веб-приложения уже почти научились работать без интернета на уровне нативных — посмотрите доклад Джейка Аркибальда про Сервис-воркер (оно и пуш-уведомления умеет!). Гугль уже поддерживает это в Хроме.

Браузеры

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

Тут производители браузеров ужасно, ужасно тупят. Реально, все браузеры — говно. Сколько бы Яндекс ни старался сделать браузер без рамок, он даже «белый экран ожидания» победить не может. А этот белый экран громче любых рамок кричит: «Я голимый веб! Если у тебя сейчас затупит интернет, хрен ты чё получишь!».

Я хочу, чтобы у любого приложения была иконка в доке, чтобы в условный «Фейсбук» можно было переключиться как в «Фотошоп».

Операционные системы будущего

В будущем в операционных системах будут просто окна, которые умеют отображать в себе веб-контент и собираться в кучки с табами. Как никто не думает про WindowServer на Маке сейчас, так никто не будет думать, что есть какой-то «браузер». Если ты производитель браузера, то идеальный браузер ты не сделаешь никогда. Надо быть производителем ОС.

Хром под Виндоусом вроде умеет сохранять сайт как приложение, но эта фича не очень прижилась, потому что веб-приложения спроектированы без её учёта. Они думают, что вокруг них есть все инструменты навигации браузера, а их и нет. Непонятно, что должно делать «отдельное приложение» Гмейла, когда я перехожу по ссылке из письма. Плюс, такие оболочки вокруг веб-приложений часто отбирают у веба его главную силу — урлы. Не получается уже скопировать адрес, чтобы передать кому-то.

По мере того, как понятие «браузер» будет умирать, кнопки «назад» и «вперёд» станут неотъемлемой частью любого окна в ОС, как кнопки «свернуть» и «закрыть». Все окна научатся группироваться в табы. Адресной строки постоянно на экране не будет, но будет какая-нибудь выпадаечка, откуда адрес можно будет достать.

Вот тогда заживём.

Дальше
Мои книги