На прошлой неделе отгремела презентация нового iPhone 7 и Apple Watch Series 2. Кто-то смотрел ее в оригинале, кто-то в переводе того же Wylsacom с его неподражаемым юмором. Но все свелось как всегда к одному — очередному холивару между фанатами и хайперами на тему крутости/не-крутости нового яблокофона и чем еж нас порадует новая iOS 10 в финальной версии. Роясь на просторах интернета, я наткнулся на анализ новой OS опубликованный iOS разработчиком из AT&T, проведенный на основании тестирования всех beta и dev версий за последние несколько месяцев. Предлагаю вам ее к ознкомлению.
Примечание от переводчика
Уважаемые пользователи Habrahabr, данная статья приводится полностью без «купюр». Некороторые разделы переразбиты мной для простоты чтения (внесены дополнительные заголовки). Если вы заметили в данном переводе неточность или хотите поделиться своим мнением, прошу сообщить мне в комментариях в конструктивной форме. Перевод статьи — это труд, пусть и не всегда благодарный. Если вы с чем-о не согласны и думаете, что можете сделать лучше — сделайте, а не хайте попусту.
Об Авторе
Гильермо Иригоен, аналитик компьютерных iOS систем в AT&T, CTO и Co-Founder в Darc Data. У Гильермо 8 лет опыта в разработке ПО. Он начинал как мультимедиа художник, фокусируясь создании и программировании иллюстраций картин для музеев и мероприятий, используя такие языки программирования как Java, C и Python для управления серверами на Lixux, Raspberries, Arduinos и др. Месторасположение: Эл Сегундо, Калифорния
===
Как я познакомился с Apple
По счастливой случайности, я начал разрабатывать приложения для мобильных устройств, когда рынок смартфонов только начал расти. Если я правильно помню, где-то между выпуском iPhone 3G и iPhone 4, когда Apple представил iOS 2, я разрабатывал приложения с того времени и не только для этих устройств. Моим основным направлением на то время были фичерфоны (feature phone), для которых нужно было писать на С или JME. Они познакомили меня с технологиями написания кода под мобильные телефоны и упростили переход на разработку для смартфонов.
По моему мнению, у Apple лучшие инструменты для работы и их интегрированная среда для разработки не только ускоряет процесс, но и помогает разработчикам лучше очертить свои идеи, понять, как их реализовать, протестировать и оптимизировать.
Об iOS 10 со стороны пользователя
Уровень ОС очень легок и прост в использовании. Нет ничего сложного, чтобы заново изобретать велосипед. Первое, что вы можете заметить — это обновление работы экрана блокировки. Виджеты становятся более важными из-за своего внешнего вида, у вас будет немного больше контроля над уведомлениями и сообщениями. Я не уверен насчет экрана, потому что каждый, кто возьмет телефон, получит гораздо больше информации о вас без необходимости разблокировать экран. Карты покажут вам время и маршрут до вашего дома, работы и мест, которые могли бы вас заинтересовать. Это значит, что Apple собирает о вас все больше и больше информации, и я не уверен, что это хорошая идея. Но в целом, когда вы закрываете этот экран, вид и впечатление — приятные, есть новая организация настроек и опции удаления.
Некоторые приложения по умолчанию от Apple очень хороши. Приложение для сообщений — прикольное, но не включены некоторые функции ‘поделиться’ для тех, кто не использует iPhone. На картах улучшено качество маршрутов и есть интересные функции, такие как “погода прямо сейчас” и гораздо больше деталей о местах, расположенных рядом с вашим маршрутом. Фотобиблиотека лучше организована и стало проще находить фотографии. Если у вас больше 10 тысяч фотографий, как у меня, вам это точно понравится. Что касается остального, я не вижу больших изменений, кроме визуального дизайна и композиции. Но я заметил улучшение по скорости ответа системы, когда перемещаешься по приложениям.
Об iOS 10 со стороны разработчика
На уровне разработчика, не важно, используете ли вы Objective-C или Swift для разработки приложений. Вы можете положиться на серьезную базу для программирования, которая будет работать даже после нового релиза. Становится проще всего достичь, создать приложение теперь совсем просто, но не всегда проще значит лучше, потому что простота не бесплатна. Это будет работать только в определенных случаях. Разработчику придется работать с тем, что у него есть, и у Apple появится больше ограничений в технологии.
Мне не нравятся эти ограничения, потому что вы не можете использовать их аппаратное обеспечение, программное обеспечение как захотите: устройства, библиотеки, то, как работают пермиссии, профили и т.д. Иногда это меня удерживает от попыток создать что-то вне правил. Но в конце концов, Apple — компания, важная компания и мне приходится принимать их условия игры.
На мой взгляд, одна из важных функций, которая может помочь разработчикам с iOS 10 и Xcode8 — это отладка системы и возможность отслеживать утечки, потоки, интерфейсы и возможные баги в реальном времени. Это стало большим преимуществом по сравнению с другими платформами. Xcode8 позволяет вам больше контролировать процесс и анализировать ваш код в текущем времени. Намного улучшено отслеживание багов, это поможет вам точно определить, где проблема или где она может быть. Дизайнер интерфейсов на порядок лучше, чем его предыдущие версии и ограничения уже не так мешают. А если вы работаете над универсальным приложением с портретным, пейзажным или комбинированным экраном, вы столкнетесь с меньшими трудностями, когда будете их использовать.
Автоматическая подпись сертификатом — то, чего я долго ждал, больше у вас не будет проблем, если у вас много сертификатов разработчика или provisioning profile на Мас. Или если вы теряете несколько устройств. Автоматическая подпись сертификатом сделает это за вас. И, наконец, самая важная тема, на который я хотел бы остановить особое внимание, это тестирование.
Тестирование iOS 10
В целом, как разработчику ПО, мне всегда нужно знать, насколько хорошо работает мой код, независимо от того, какой язык я использую, Objective-C, Swift, Python, Java, и т.д. Мне нужно знать ответы на следующие вопросы:
- Это элегантное решение?
- Это быстро?
- Все ли условия верны?
- Не создаю ли я какие-то зомби процессы, утечки памяти, состояние гонки, бесконечные циклы?
- Как насчет памяти и сетевых соединений?
- Действительно ли я проработал все возможные сценарии, которые когда-либо могут случиться?
Конечно нет, по крайней мере, если в проекте, над которым вы работаете больше, чем одна команда, вам понадобится больше инструментов, чем Xcode и Instruments. Иногда мне требуется больше времени на размышления о том, что могло быть неправильно или не так с кодом, чем непосредственно на его написание.
На протяжении лет, я понял, что не важно, насколько прост или сложен может быть пограничный случай, ситуация может стать очень плохой за очень короткое время. И не только для вас и для компании, на которую вы работаете, но и для пользователей. У Apple действительно хороший набор улучшенных со временем инструментов, которые очень помогают вам сократить количество возможных ошибок. Юнит тестирование, UI тестирование, боты, скрипты и CI среды тестирования на OS сервере позволяют вам чувствовать себя комфортней, очень сильно сокращает количество ошибок и оптимизирует то, что вы делаете. Но не все меняется в реальном мире и не все контролируется Apple.
Вам придется иметь дело с разного рода странным поведением, возникающим непонятно откуда, пока вам не придется столкнуться с ним лицом к лицу. Иногда ваши тесты не покрывают требуемый функционал или не очень хорошо продуманы, иногда все тесты неправильные или вообще не работают, давая вам ложное ощущение надежности. В некоторых случаях вы не сможете протестировать до релиза или кто-то, кто не совсем понимает весь поток информации внутри и вне приложения, пишет тесты, не имеющие смысла или не валидные. Написание тестов — это также написание ПО, поэтому до какой степени нам следует тестировать наши тесты? Но не только ошибки в коде могут полностью поломать ваши прекрасные алгоритмы. Что вы скажете о тайм-аутах на сервере или неожиданных ответах и непредсказуемом поведении пользователя? Всегда будет что-то новое, над чем нужно работать. Не имеет значения, насколько удобными станут инструменты и методологии, иногда их все равно не хватает.
Послесловие
Я приобрел свой первый Macbook еще в далеком 2005-м году. Тогда он работал еще на OS Tiger. С тех пор утекло много воды и произошло огромное количество улучшений и изменений в системе. Говоря по правде, довольно большое количество ограничений в системе тоже. Хотя, несмотря на неоднозначные шаги, Apple развивала сбалансированный продукт, достаточно комфортный, чтобы оставаться его пользователем. Если подводить итоги. Мой общий опыт пользователя и разработчика говорит, что продукт достаточно хорош на данный момент, что же нам дадут новшества от Apple, покажет время
Послесловие от Переводчика
С оригиналом статьи вы можете ознакомиться тут. Большое спасибо за помощь с переводом Марии Гарбузовой
UPD
Тестировщикам на заметку: согласно последним новостям, которые мне удалось собрать в интернете, следующие устройства не будут обновлены до iOS 10:
- iPad 2
- iPad 3rd gen
- iPad mini
- iPhone 4S
- iPod touch 5th gen
Поделиться с друзьями
saw_tooth
«Об iOS 10 со стороны пользователя»… вместо тысячи слов:
https://www.youtube.com/watch?v=HxXbrnJ6l4A