Мобильная ОС Apple в последние годы подвергалась справедливой критике за не вполне оправданный консерватизм. По мере того как в iOS одна за другой появлялись функции, которые пользователи Android испробовали месяцы и годы назад, список претензий сократился до минимума, но оставшиеся атавизмы Apple, казалось бы, уже не отменит никогда.
Чего именно недостает и что порой откровенно бесит сторонников зеленого робота в конкурирующей ОС? Допустим, отсутствие активных уведомлений, позволяющих выполнять быстрые действия с входящими письмами, сообщениями и пр. Еще ситуация с виджетами сторонних приложений (которых нет). В целом есть глобальная претензия насчет статуса сторонних приложений — в iOS их не пускают дальше парадного подъезда: ни тебе виджетов, ни места в контекстных меню для «расшаривания» и специфических действий над фото, документами и т.п. Многие привыкли к системам быстрого набора текста типа Swype. Тех, кто впервые прибыл в мир смартфонов, ставит в тупик отсутствие доступа к файловой системе. Концепция изолированных библиотек, ассоциированных с каждым приложением, несмотря на упорное внедрение в том числе через десктопную OS X, не встречает полного понимания в массах.
По этим направлениям Apple упиралась до последнего. И оттого тем более удивительно, что на последней конференции WWDC, где была представлена iOS 8 и OS X 10.10 Yosemite, все спорные позиции были сданы без оговорок.
Дизайн iOS практически не изменился, а вот содержимое — еще как
⇡#And APIs for all
Сосредоточимся именно на этих, во многом радикальных для iOS, нововведениях, а затем кратко пройдемся по списку наиболее заметных улучшений, которые были внесены в отдельные приложения и дизайн ОС.
Apple открыла доступ сторонним приложениям к функциям iOS, которыми ранее пользовались только встроенные программы. Во-первых, виджеты. В iOS 7 уже был некоторый ограниченный набор виджетов, которые жили на откидывающейся панельке «центра уведомлений»: обзор задач на день, погода, напоминалки и сомнительно ценная для большинства пользователей информация о котировках акций. Теперь, наконец, сторонние приложения также могут устанавливать в «центр уведомлений» свои виджеты. Кроме того, виджеты выбираются прямо из самого «центра», а не из глобального меню настроек и выстраиваются в удобном для пользователя порядке.
Во-вторых, возможность замены штатной клавиатуры чем-то более изощренным, например Swype. Теперь, к всеобщему удивлению, получено разрешение и на это. Apple всегда особо гордилась штатной клавиатурой iOS и отвергала потребность в альтернативах. Кроме того, клавиатуры стороннего происхождения несут в себе угрозу безопасности в силу того, что нажатия клавиш можно перехватить и отправить злоумышленнику. По этой причине iOS будет подменять нештатную клавиатуру встроенной при записи в защищенные поля (к примеру, поля паролей в веб-формах, заполняемые звездочками).
Фотографии, видео и все, что может быть «расшарено» через штатное контекстное меню, «расшаривается» не только посредством Facebook и немногих других сервисов, штатно поддерживаемых в iOS, но и любых прочих, если стороннее приложение предоставит так называемое расширение (App Extension). То же относится к списку действий над документами, который сторонние приложения смогут пополнить своими кнопками.
После длительной обкатки для всех желающих открыт интерфейс биометрического датчика iPhone 5S (и наверняка будущих устройств Apple) – TouchID API. Camera API даст сторонним приложениям более полный контроль над настройками фотокамеры. PhotoKit обеспечивает доступ к снимкам в памяти штатного менеджера фотографий. CloudKit – понятно, доступ к облачному хранилищу iCloud.
Более подробно стоит рассказать о HomeKit API, в основе которого лежит идея использовать iPhone или iPad как пульт управления бытовой электроникой. Существуют частные инициативы на этот счет, но Apple, конечно же, взялась за дело с большим размахом. HomeKit подразумевает участие замков, гаражных дверей, термостатов и прочего хозяйства в программе MFi (Made for iPhone/iPad/iPod) наряду с аксессуарами, которые уже сертифицируются таким образом. Устройства будут соединяться с гаджетом Apple по протоколам Wi-Fi и Bluetooth (некоторые источники сообщают о поддержке протокола ZigBee, но пока непонятно, каким образом), и затем ими можно будет управлять через единый графический интерфейс либо голосом, с помощью Siri. Допускается группировка устройств в отдельные «сцены». К примеру, стоит сказать Siri, что вы собираетесь спать, и iPhone проверит, закрыты ли двери, и выключит свет там, где он не требуется.
⇡#Новые средства разработки
Вместе с iOS 8 анонсированы инструменты, которые должны ускорить разработку и упростить жизнь стартаперам, решившим урвать свой доллар за копию приложения в App Store. В основном речь идет об играх. Среда SpriteKit предоставляет готовый движок для рендеринга 2D-графики силами GPU. SceneKit играет ту же роль для казуальных 3D-игр, содержит логику для физических расчетов и частиц.
API под названием Metal преследует прямо противоположную цель, представляя собой низкоуровневый интерфейс графического процессора – то же самое, чем является Mantle для GPU AMD. Среди достоинств Metal, как и в случае с Mantle, фигурирует ускоренная обработка Draw Calls по сравнению с OpenGL. Несмотря на колоссальную разницу в масштабе производительности между десктопными и ультрамобильными системами, в последних также существует проблема CPU как бутылочного горлышка при рендеринге сложных сцен, изобилующих отдельными моделями.
Но что, пожалуй, даже более важно, Metal впервые предоставляет сторонним приложениям полноценную возможность выполнения неграфических (GPGPU) вычислений. Ранее чуть ли не единственным обходным способом привлечь GPU к расчетам было использование вершинных шейдеров в OpenGL ES.
Демо Zen Garden на базе Unreal Engine 4
iOS 8 будет поддерживать новый язык программирования Swift, которым Apple намерена заменить Objective-C, до сих пор бывший основным языком для приложений под API Cocoa и Cocoa Touch. По сравнению с Objective-C на Swift будет легче писать код благодаря более простому синтаксису, автоматическому управлению памятью и пр. Существует такая функция, как Playgrounds, позволяющая исполнять участок кода непосредственно из редактора без необходимости компилировать весь проект. Пока, правда, Playgrounds работают без «песочницы», что вызывает понятные вопросы относительно безопасности.
В совокупности инициативы Apple на фронте разработки приложений должны стимулировать дальнейшее пополнение App Store, но одновременно они способствуют привязке разработчиков к iOS. Сомнительно, что программы, написанные на Swfit, будет легко портировать в нативный код или Java для Android. Нечего и говорить про приложения для SpriteKit и SceneKit, которые создаются на еще более высоком уровне на манер конструктора. Вероятно, последние останутся уделом совсем казуальных игр без особых амбиций.
Будущее Metal как API для графически насыщенных игр консольного уровня также видится туманным. Далеко не факт, что преимущества в производительности перевесят для разработчиков привычку к OpenGL и трудозатраты на создание дополнительного рендерера под Metal либо отказ от параллельной разработки под Android. Впрочем, интерес к Metal уже проявили Epic, Electronic Arts и Crytek – держатели прав на три наиболее известных графических движка: Unreal Engine, Frostbite и CryEngine соответственно. Не исключено, что Metal скорее будет признан как интерфейс для GPGPU, коль скоро направление это перспективное, а полноценных альтернатив iOS не предоставляет.
⇡#iCloud Drive: полноценная файловая система
Со времен первого iPhone Apple хранила верность концепции отдельных библиотек в каждом приложении iOS, которая прямо противостоит идее открытой для пользователя файловой системы как общего хранилища, независимого от приложений. Каждая программа в iOS изначально хранит все созданные в ней документы «в себе», а обмен документами осуществляется путем экспорта из приложения и импорта в следующее приложение. С появлением iCloud приложение может держать свои документы в облачной библиотеке, также доступной родственным программам в десктопной OS X. К примеру, версии текстового процессора Pages на iPhone и Mac «видят» созданные друг другом документы. Но, опять-таки, каждое приложение имеет доступ в iCloud только к своим документам, а передача документов между приложениями возможна по-прежнему только путем экспорта и импорта.
В основе концепции раздельных «библиотек» лежит, в общем-то, здравая логика, следующая за поведением не особо грамотных в компьютерном отношении пользователей. Программо-центричный подход – это то, к чему немедленно приходит человек, недавно освоивший компьютер, например ваша бабушка. Новичок мыслит предельно инструментально: «Вот значок «для Интернета», вот значок Word, и в нем, в «Ворде», я сохраняю документы». Концепция файловой системы не то чтобы слишком сложна для понимания, но человек, использующий компьютер сугубо для казуальных задач или пусть рабочей, но предсказуемой и повторяющейся активности, по-своему совершенно прав, если не желает ничего знать о каких-то файлах. Ему достаточно последовательности действий для получения нужного результата – точно так же, как для того, чтобы постирать белье в стиральной машине или разогреть еду в микроволновке.
Бесфайловый подход вполне оправдал себя в простейших ситуациях, когда документ создается в одном приложении на одном устройстве и остается там же. Скажем, приложение фотокамеры на смартфоне и клиент Facebook – это все, что вам нужно, чтобы делать казуальные фотографии и поступать с ними по назначению. Или Instagram, который делает и то и другое вместе.
Покуда мобильные гаджеты были в основном развлекательными устройствами – как в силу позиционирования, так и просто-напросто аппаратных ограничений, проблема стояла не столь остро. Закрытая файловая система iOS досаждала в основном пользователям Windows, которые были вынуждены мириться с iTunes как единственным средством синхронизации с ПК. Будучи хорошим плеером в OS X, «Тунец» в Windows – программа и явно чужеродная, и неизменно тормозная.
Ограничения подхода Apple встают во весь рост, когда планшет или смартфон вовлекаются в мало-мальски серьезную рабочую среду. Можно сколь угодно сомневаться в том, действительно ли велика необходимость производить не совсем уж казуальный контент на устройствах с touch-интерфейсом. Но даже когда требуется просто-напросто обменяться с кем-либо документами, пользователь iOS с размаху расшибает лоб о грабли, подставленные Apple.
Доступ к файлам iCloud из OS X в текущем виде
Изолированные библиотеки весьма неудобны сразу по нескольким причинам. Во-первых, пресловутый экспорт-импорт, плодящий ненужные копии документа (подчас на разных стадиях работы) и затрудняющий работу над одним проектом в нескольких приложениях. Во-вторых, коммуникация с десктопным компьютером, на котором, как ни крути, подавляющее большинство выполняет основную работу и хранит личные данные. А на десктопе по-прежнему царит традиционный, пусть и несущий застарелые травмы «компьютера для программистов», подход к файловой системе. В работе люди неизбежно обмениваются файлами, а импорт и экспорт из библиотек или соответствующих загончиков приложений в iCloud мало того что неудобен, но еще и ограничен немногим числом поддерживаемых типов. Можно ли сохранить на iOS файл, прибывший письмом в виде вложения, если нет программы, способной открыть его прямо сейчас?.. Увы-увы. Добавим к этому отсутствие полноценной иерархии документов в iCloud – нет возможности создавать папки глубже первого уровня вложения.
В итоге крестовый поход Apple против файловой системы вступил в явный конфликт со здравым смыслом. Неспроста в iOS широко используется Dropbox и подобные сервисы если не в качестве полной замены доступной файловой системы, то для импорта в приложения документов, синхронизированных с десктопом.
Хорошо, что у Apple нашлись силы трезво оценить ситуацию и вернуться на правильный путь. В iOS 8 вместо отдельных библиотек, синхронизируемых через iCloud, представлен единый iCloud Drive – самое обычное файлохранилище с папками, в котором различные приложения могут иметь доступ к одним и тем же документам (и, кстати, в некоторых пределах влиять на настройки друг друга, если между приложениями заранее есть такая «договоренность»). Честное слово, ситуация напоминает анекдот про раввина и еврея, хотевшего наложить на себя руки от невыносимой жизни. Ребе последовательно советовал человеку ввести в дом козла, овцу и прочую скотину, а затем разрешил всех вывести обратно. Тут-то и наступило счастье. Спасибо Apple, что наконец разрешила вывести козла.
В грядущей версии OS X Yosemite iCloud Drive выглядит как папка наподобие Dropbox, содержимое которой автоматически синхронизируется с облаком (даже не верится – настолько простое и прозрачное решение после бега в мешке все эти годы). Нечто подобное, хотя исключительно для OS X, существовало в виде ныне почившего сервиса iDrive. Будет и поддержка Windows. В доступной для тестирования бета-версии iOS 8 нет какого-либо файлового менеджера как отдельного приложения, хотя он может появиться на момент релиза или быть написан сторонними разработчиками.
iCloud как обычная папка в OS X Yosemite
В порядке абстрактного отступления заметим, что iCloud Drive, да и Dropbox и прочие облачные хранилища, работающие по принципу непрерывно синхронизируемого каталога на диске, с точки зрения usability представляют не возвращение доступа к файловой системе, а скорее старт идеи с чистого листа. Иерархическая файловая система – удобная концепция, ничуть не более сложная для понимания, чем библиотечная картотека или ящик для инструментов (да просто-напросто бумажные папки с файлами-пакетиками). Сложность происходит от того, что пользователю десктопной ОС, будь то Windows или OS X, в общем-то, не вполне понятно, а где его личный угол для хранения файлов, зачем нужен корень диска, что вокруг делают папки и файлы, которые компьютер создает для собственных нужд. Вот флешка с чистым корнем – это очень понятно! Как и папка iCloud Drive, которой, по логике, следует вообще заменить домашний каталог пользователя, и пусть он организует содержимое, как вздумается.
⇡#Интеграция с OS X: унифицированные коммуникации, перенос контекста
В iOS 8 появилась давно ожидаемая возможность обмениваться файлами с «Маком» посредством AirDrop, для чего, правда, требуется проапгрейдить OS X до версии Yosemite. Есть и более интересные функции. Например, если iPhone находится в той же сети Wi-Fi, то входящий звонок можно принять на iPad или на «Маке» (а еще и, кстати, отправлять с него SMS и MMS). Можно звонить по телефонному номеру через Wi-Fi в условиях плохого приема сотовой сети, если это позволяет оператор.
А вот вклад в другое большое и важное дело – перенос контекста между приложениями на разных устройствах. Ранее задел был создан в виде синхронизации закладок в Safari (iCloud Tabs). В iOS 8 и OS X Yosemite подобный принцип распространяется на почтовый клиент и прочие встроенные программы OS X, а также пакет iWork. К примеру, можно начать письмо или открыть документ на «Маке», а затем продолжить с того же места в iOS. Передача эстафеты происходит через иконку, которая возникает на рабочем столе iOS или в доке OS X. API для этой функции (Handoff) предоставляется и сторонним приложениям.