WWDC 2015: Apple уменьшила приложения

Если бы пользователи iOS-устройств обращали внимание на “всякую ерунду”, они были бы шокированы: начиная с осени 2015 года приложения для iOS стали вдруг худеть. Как если бы в Apple появилось подразделение магов, не иначе.

Но пользователи, как правило, до цифровой прозы не опускаются. Особенно владельцы устройств с 128 или 256 Гигабайтами флэш-памяти. Apple именно этого и добивалась, в течение многих лет. Компанию (еще во времена первых Mac’ов) критиковали за глупое потакание пользователям, утверждая что пользование Mac’ами отупляет.

Но по-настоящему серьезные проблемы у Apple начались в 1995 году, когда Microsoft создала что-то очень похожее на систему Mac’ов и назвала это Windows 95. Mac’и все еще были лучшими, но неизбалованным отупляющим Mac’овским интерфейсом пользователям PC было все-равно.

Кстати, вам не кажется что пользователи и в самом деле отупели за последние годы? Уж не Mac’и ли виноваты в этом? Сегодня не это наша тема, увы. Как-нибудь?

Операционная система (любая) – это, по сути, огромное приложение, состоящее из кода и ресурсов, в особо крупных размерах. Это миллионы строк нетривиального исходного кода, и много всякой всячины разного назначения. Мода на похудение коснулась и iOS.

iOS 8 “весила” 4,6 Гигабайта. Это была совершенная ОС, отвечающая требованиям своего времени, в чем-то даже лучшая в мире, гигантский размер объясним и понятен.

iOS 9 не уступала предшественнице по части функциональных возможностей, наоборот – она умела работать с еще большим разнообразием устройств, при этом для её установки требовалось всего от 1,3 до 1,8 Гигабайта флэш-памяти.

Магия?

Продолжение мини-серии про WWDC 2015, предыдущие части здесь:

Первая часть: WWDC 2015: Никаких сенсаций;
Вторая часть: WWDC 2015: Назад, к Mac, iPhone и iPad.

Откуда “лишний вес”?

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

Разработчики графических форматов (таких как JPEG, PNG или TIFF) вложили немало сил в разработку алгоритмов сжатия изображений, но когда их сотни (а то и десятки тысяч), места в флэш-памяти устройства они занимают много. Чем “тяжелее” приложение, тем больше времени (и трафика) требуется на его загрузку.

С появлением Retina-дисплеев графические файлы в iOS-приложениях стали занимать в разы большие пространства памяти. Совместимость с Retina-дисплеями – это добавление в ресурсы приложения графических файлов с 2-кратной высотой и шириной. Естественно они намного тяжелее 1-кратных. В зависимости от разрешения устройства на котором запускалась программа, использовались либо 1-кратные, либо 2-кратные варианты.

Размер исполняемого кода тоже рос как на дрожжах: чтобы приложение работало на всех устройствах способных работать в заявленных при отправке в App Store версиях iOS, кода требовалось в несколько раз больше, чем прежде.

Код и графика были не единственными “пожирателями памяти”, были и другие: аудио, видео, все что угодно. Код для Open GL ES, код для Metal и тому подобное.

Надо было что-то делать, и к этому что-то уже готовились. В iOS 7 появились Image Assets (Asset переводится как “актив”), для графических файлов с определенными именами (в строках) для разной кратности разрешения (в столбцах). По запросу из приложения возвращались файлы нужного разрешения,

Скорее всего, предпринимались и другие меры по подготовке решительных перемен. Тем временем, для iPhone 6 Plus потребовались графические файлы 3-кратного размера. В том же, естественно, количестве что и 1- и 2-кратных. Только еще более тяжелых.

Проблема стала нестерпимой.

Как решать эту проблему?

Я видел (примерно в то же самое время) как подобная проблема решалась в одном из Store одного из ведущих производителей телефонов и планшетов для Android. Не скажу какого, мы работали с несколькими. Store, также как и “яблочный” App Store, тщательно проверял предлагаемые ему приложения, а среди требований было ограничение на размер сборки, в разы меньшее чем размер приложения которое уже не первый год размещалось в Google Play.

В документации нашелся и ответ, по сути “делайте что хотите”. Размещайте все ресурсы на своем сервере, и загружайте их оттуда, по мере необходимости, когда приложение будет установлено на устройстве. Так и поступили.

На сервере компании место было, без нервотрепки не обошлось, но его нам выделили.

Едва ли не самая типичная реакция на инновации Apple: “это уже делали до них, много раз, ничего нового они не придумали”. Но в том-то и дело что, как правило, главный вопрос не “что?” а “как?”.

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

Путь Apple – правильно делать правильные вещи (Гай Кавасаки)

Решение Apple было частью iOS 9. Решений было несколько, большую часть трудозатрат Apple брала на себя.

Разработчик, как и прежде, отправлял на проверку и размещение в App Store программу с полным набором всех ресурсов, необходимых ей для нормальной работы на всех типах iOS-устройств.

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

Устанавливался только исполняемый код соответствующий целевому устройству, и только графические файлы требуемого размера. Из тех которые размещались в Image Assets. Все это делало программное обеспечение App Store.

К Image Assets в iOS 9 добавили Data Assets, для размещения любых ресурсов для разных типов устройств. С ними поступали точно также. Кроме разрешения экрана для выбора какие именно ресурсы устанавливать использовались самые разные критерии: объем оперативной памяти, тип графического процессора и другие.

В зависимости от технических возможностей устройства на которое устанавливалось приложение, App Store автоматически выбирал нужное.

В распоряжении разработчика было еще одно средство: установка приложения по частям, с последующей загрузкой (из App Store) других частей – по запросу приложения. А когда доступной памяти становилось слишком мало, части которые дольше не использовались удалялись (на устройстве). По запросу приложения удаленная часть возвращалась на её место.

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

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

Продолжение следует

Обсудить историю Apple вы можете в нашем Telegram-чате.

WWDC 2015: Назад, к Mac, iPhone и iPad

Когда-то давным-давно, 20 октября 2010 года, в кампусе Apple состоялось событие с почти сенсационным девизом “Back to Mac”, но вовсе не о том, о чём все подумали. В iOS к тому времени напридумывали много всего интересного, и пришло время делиться новшествами с системой-прародителем. В 2014-2015 история повторилась.

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

Но тратить время и силы на заигрывание с публикой (как 20.10.2010) никто не стал.

Часы – они и есть часы, пусть даже это часы от Apple. Пусть даже “прикольные”, со своей изюминкой, ставшие модным аксессуаром. От часов других производителей у Apple Watch было много отличий, не только положительных. Например, зависимость. От которой они, шаг за шагом, избавлялись в течение всей их недолгой жизни. На WWDC 2019 её, наконец, торжественно провозгласили.

По-моему, часы от Apple – больше чем часы, но есть и другие мнения.

Первый шаг к независимости был сделан в watchOS 2, объявленной на WWDC 2015. Но iPhone все еще был необходим, и впереди были годы побед и поражений.

Продажи Apple Watch стартовали 24 апреля 2015 года. Доброжелатели, затаив дыхание, ждали предсказанного ими же неминуемого фиаско. Которое не случилось. Но даже если бы история Apple Watch кончилась в мае-июне 2015, они оставили бы свой след в iOS и OS X.

Продолжение мини-серии про WWDC 2015, предыдущие части здесь:

Первая часть: WWDC 2015: Никаких сенсаций.

Сан-Франциско

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

Чтобы выделиться на общем фоне, Apple нужно было сделать то что она умела лучше всех: придумать что-то совершенно уникальное, необычное, красивое и многофункциональное, в форм-факторе наручных часов. Заразное как неизлечимая инфекционная болезнь.

Как здорово было бы прочитать историю этого проекта, с момента его рождения до самой последней версии watchOS, в лицах и с диалогами. Триллер на производственную тему. Но увы – 99,999% этой истории покрыто мраком.

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

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

Шрифт назвали San Francisco. В ноябре 2014 года его впервые увидели в деле сторонние разработчики – он входил в состав первой публичной версии WatchKit. Это был именно тот шрифт, который требовался самому маленькому устройству от Apple – и не только ему. В операционных системах для “больших” устройств (iPhone теперь считался “большим”!) SF тоже был востребован.

SF – это сокращенное имя нового шрифта, извините если это уточнение для вас излишне.

Вместо “просто еще одного шрифта”, замечательного и легко читаемого, появилось целой семейство шрифтов. В июне 2015 года шрифт для Apple Watch назвали SF Compact.

А имя San Francisco перешло к варианту шрифта доработанному для применения в OS X и iOS. В OS X El Capitan и iOS 9 этот шрифт стал “системным”.

Технические подробности здесь. (продолжительность 00:32:25)

Трехмерное прикосновение, с усилием

Taptic Engine, изначально разработанный для Apple Watch, приглянулся инженерам Apple других направлений.

В результате на свет появился “тактильный” трекпад. Сначала в 13-дюймовом MacBook Pro, потом в почти игрушечном и убийственно престижном MacBook, потом и в большом MacBook Pro.

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

Поддержку “дополнительного измерения” добавили в OS X Yosemite 10.10.2, в январе 2015 года. Это был “Back to Mac”.

“Back to iPhone/iPad” состоялся позже, но скорее всего не из-за технических сложностей, в Apple делаются иногда абсолютно безумные вещи, но строго по плану. По плану, новые iOS-устройства должны были выйти осенью. К этому же сроку готовили новую версию iOS.

В iOS 9, объявленной 8 июня 2015 года, способность распознавать усилие прикосновения пользователя к экрану была встроена, её тщательно протестировали, и подготовили к дню Д. Во время пресс-конференции по поводу открытия WWDC об этой способности ничего не сказали. А зачем?

По традиции, новая версия iOS выходила за 2 дня до начала продаж очередного поколения iPhone. О новых iPhone мы скоро поговорим, отмечу только что совместными усилиями iOS 9 и этих новых моделей iPhone аналог Force Touch пришел и на iOS-устройства. В iOS его окрестили “3D-Touch”.

Продолжение следует

Предлагаем подписаться на наш канал в «Яндекс.Дзен». Там вы сможете найти эксклюзивные материалы, которых нет на сайте.

WWDC 2015: Никаких сенсаций

Разрыва шаблонов и крушения стереотипов на этот раз не было. Разумно и предсказуемо, почти скучно. Прилично до неприличия. Последняя часть мероприятия удивила. Она была неуклюжей и неинтересной, наверное это был худший “One More Thing” за всю их историю. То что презентовали, на самом деле, было неплохо: доступ ко всем богатствам iTunes за 9,99 долларов в месяц, 24 часа в сутки 7 дней в неделю. Семейный доступ – за 14,99. Это называлось Apple Music. Сервис. Подобные сервисы уже существовали, Apple Music даже если он (“сервис”, значит “он”) чем-то и превосходил их, презентация обошла этот момент молчанием. То есть, ничем?

Трюк OMT (One More Thing) использовался для выделения главного и невероятного, он был чем-то вроде сигнала для утомленных слушателей: “внимание, сейчас будет интересно!”, то есть, этот сервис следовало воспринимать как что-то прорывное и революционное.

Сам сервис был намного лучше чем его представили. Инженеры, как всегда, выполнили свою часть работы на высшем уровне. Но, почему-то, он так и не “взлетел”. Если бы о нём ничего не сказали в тот день, а просто выпустили бы сухой и бесстрастный пресс-релиз, с перечислением достоинств и важных подробностей, было бы лучше.

Но OMT закрывал пресс-конференцию по случаю открытия WWDC 2015 года, предыдущие её части, как минимум, были исполнены качественно и отторжения не вызывали.

Главные темы

Если забыть про Apple Music, главных тем было три. OS X El Capitan, iOS 9 (с функциями “только для iPad”, за 4 года до iPadOS) и watchOS 2. И с дюжину тем калибром поменьше.

Например, Metal пришел в OS X. В системных фреймворках он заменил OpenGL и OpenCL. У сторонних разработчиков был выбор, никто не заставлял их немедленно уходить из этих старых и медленных технологий – время еще не пришло.

“Металлисты” (группа разработчиков Metal) приручили графические процессоры от Intel, AMD и NVIDIA, это вообще-то был настоящий прорыв, которому уделили намного меньше времени чем Apple Music. Эксперты предсказывали этот прорыв, но года через 3, не раньше. Или через 5. Но не прошло и года: невыполнимая миссия блестяще выполнена. Во что это обошлось “металлистам”, не сообщали.

Сторонние разработчики использовавшие в своём коде OpenGL и/или OpenCL не спешили бросать привычные и хорошо им знакомые “устаревшие” API. Главным препятствием было даже не нежелание изучать что-то новое (необходимость постоянно учиться – особенность профессии программиста, такая же как постоянная готовность к смерти у самураев).

OpenGL и OpenCL были кросс-платформенными технологиями. Metal – нет. Более того, в отличие от прежних эпох Apple даже не пыталась сделать Metal общедоступным, считая его своим конкурентным преимуществом. Популярность “яблочных” платформ в 2015 была беспрецедентной, но недостаточной чтобы убедить разработчиков тратить время на две версии нетривиального кода вместо одной, общей для всех платформ.

Еще одна важная тема была затронута мимоходом. В начале презентации OS X 10.11 “El Capitan” Крейг Федериги сообщил что на 55% Mac’ов установлена OS X 10.10 “Yosemite”, вышедшая всего за 8 месяцев до этого. Для сравнения, Windows 8.1, вышедшую в октябре 2013, за год до OS X 10.10 “Yosemite”, использовали только 7% пользователей Windows.

В начале презентации iOS 9, Крейг сообщил что iOS 8 установлена на 83% iOS-устройств.

То есть, 55% пользователей Mac’ов и 83% пользователей iOS имели доступ к новейшим технологиям этих систем, разработчики могли со спокойной душой концентрировать свои усилия на максимальной совместимости с последними версиями систем. Насколько важна концентрация усилий при написании программы, надеюсь, догадаются даже те кто никогда не работал в софтверной индустрии.

Почему “яблочные” платформы год за годом распространяются на порядок быстрее чем их конкуренты? Причин несколько, но самая главная из них – простота апгрейда. И его цена. И модельные ряды в которых очень просто ориентироваться (а зачем больше?), и вообще тот самый “особый путь Apple”, за который её все критиковали и продолжают критиковать,

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

О ней рассказали во второй половине первого дня WWDC.

Подозрительная забота о разработчиках

В 2014 году Apple, внезапно, перепроектировала iTunes Connect, облегчив жизнь всем кого нелегкая привела в ряды iOS-разработчиков, их менеджеров, маркетологов и всех прочих вовлеченных в создание iOS-приложений.

Это было настолько удивительно, что мы задавались вопросом “а в чём подвох?” – но его не было. Просто, наконец, сделали то что должны были сделать еще лет пять назад.

Но некоторые думали иначе. Была и такая версия: число желающих зарегистрироваться в качестве участника iOS Developer Program резко сократилось, а тех кто не продлевает подписку на эту программу (99 долларов в год, в США) наоборот стало больше. И вот вам результат: приобретение компании Burstly, наем её ключевых сотрудников, и разработка iTunesConnect “с нуля”.

Что сказал бы наш коллега, которого я назвал в предыдущем абзаце “некоторыми”, по этом поводу – могу только догадываться.

До июня 2015 года у Apple было три “программы для разработчиков”, каждая из которых обходилась в 99 долларов в год. Mac Developer Program, iOS Developer Program и Safari Developer Program. О первых двух я был неплохо осведомлен, программа разработчиков Safari, по-моему, касалась разработки расширений для Safari (могу ошибаться).

В 2015 году платформ стало больше, появилась watchOS. Связанная с iOS, но особенная. Решение которое приняли в Купертино было неожиданным. И приятным. Для всех, кроме тех кто только-что обновил свою подписку на все три Developer Program. Впрочем, о них позаботились: срок обновления подписки на единую программу был для них увеличен до двух лет.

Теперь, чтобы получить доступ к закрытым ресурсам и бета-версиям систем для всех платформ, достаточно было подписаться на Apple Developer Program, за те же 99 долларов в год.

Видео

Видеозапись пресс-конференции (продолжительность 02:20:09):

Продолжение следует

Предлагаем подписаться на наш канал в «Яндекс.Дзен». Там вы сможете найти эксклюзивные материалы, которых нет на сайте.