Разработка
Как все начиналось: десять лет iPhone SDK
Один из первых разработчиков приложений для iPhone Крейг Хоккенберри вспомнил первые дни разработки приложений для нового устройства до выхода официального SDK от Apple.
6 марта — очень важный день как для мобильных разработчиков, так и для миллионов людей, пользующихся приложениями. Это десятая годовщина выхода оригинального SDK для iPhone. Я думаю, что не будет преуменьшением сказать, что этот релиз изменил жизнь многих людей. Он точно изменил мою, поэтому давайте остановимся и посмотрим на то, что случилось десять лет назад.
В этой статье будет множество ссылок, многие из которых было сложно найти в сегодняшнем вебе, поэтому советую их изучить. Я пытался избежать технического сленга, поэтому даже если вы не знакомы с программированием, вам будет все равно интересно прочитать мой текст.
Прикосновение к будущему
Для многих из нас прикосновение к первому iPhone в июне 2007 было взглядом в будущее. Мы все хотели знать, какие возможности находятся внутри стекла и металла в наших карманах.
Apple сказала нам, что может делать устройство, но почти ничего не рассказала о том, как это было сделано. Мы не знали ничего о процессоре или его скорости, количестве доступной памяти или создании приложений. Во многих отношениях это устройство было просто черно-серебряной коробкой.
Как разработчики мы хотели знать о возможностях устройства. Мы хотели понять, как изменится дизайн наших программ. Нам было любопытно и многому ещё нужно было учиться. И мы научились. Мы назвали это джейлбрекингом.
Выход из тюрьмы
Открытия случились быстро. Всего через несколько недель была открыта файловая система. Спустя пару месяцев был разблокирован весь опыт нативных приложений. Стали доступны инструменты для разработчиков и люди начали писать инсталляторы для нативных приложений.
Этот быстрый прогресс стал возможен благодаря инструментам, которые использовались для создания оригинального iPhone. Apple полагалась на ту же инфраструктуру, что и с Mac OS. Они выбрали знакомую среду для ускорения разработки, но это помогло людям и за пределами Купертино быстро во всем разобраться.
Например, большая часть программ на iPhone была создана при помощи Objective-C. Mac-разработчики долгое время использовали инструмент под названием class-dump, чтобы увидеть разные части приложения и узнать, как они общаются друг с другом. После получения доступа к первым фреймворкам и приложениям Apple эта программа дала много информации о том, что написала Apple.
Самой важной частью была новая вещь под названием UIKit. Она содержала все компоненты интерфейса, например, кнопки или таблицы. Хотя они и были похожи на элементы для Mac, приходилось учитывать объекты для тапов и скроллинга.
Другой важной деталью пазла была операционная система Unix. Этот выбор Apple означал, что для наших iPhone уже было доступно множество программ с открытым исходным кодом. Мы могли использовать их для создания приложений, копирования их на телефон или для просмотра контента LatestCrash.plist в /var/logs/CrashReporter.
Я отчетливо помню первый раз, когда попытался посмотреть оболочку iPhone и использовал uname, чтобы посмотреть информацию о системе. Я был дома.
Ранняя разработка приложений
Я был не один. Тысячи других разработчиков обнаружили, что это новое устройство было таким же волшебным внутри, как и снаружи. Неудивительно, что разработка приложений для iPhone начала быстро развиваться.
Одним из поворотных моментов для сообщества стала независимая конференция разработчиков под названием С4. В августе 2007 у многих из участников уже было новое устройство, но они только открывали его возможности. Многие из нас были опытными Mac-разработчиками. Мы были на WWDC и слышали питч Apple. В это же время было объявлен конкурс Iron Coder для «iPhone API». Организатор конференции Джонатан Ренч попросил нас быть креативными. Мы были.
Но моим предложением было веб-приложение с графическим калькулятором на JavaScript. Оно олицетворяло все, что не нравилось нам в предложении Apple — неуклюжий интерфейс, работающий к тому же медленно. Это не то, на что мы все надеялись.
В то же время нативные приложения нас просто убили. Победителем конкурса стало приложение для видеоконференций от Глена и Кена Аспеслагов. Они создали свою камеру и написали нечто похожее на FaceTime за три года до Apple. Удивительное достижение, особенно в контексте того, что у первого iPhone не было видеокамеры.
Для меня же приложение, занявшее второе место, было блестящим примером того, что будет дальше. Это была игра, которая довольно хорошо работала на телефоне. Более того, она показывала, как хороший дизайн и программирование могут взять что-то из реального мира, заставить это работать на тачскрине и улучшить весь опыт.
Лукас Ньюман и Адам Беттс создали приложение Lights Off за несколько дней до C4. После этого Лукас помог мне начать работать с инструментами для джейлбрейка, а также дал мне исходный код, чтобы увидеть, как это работает. К счастью, я хорош в поддержке программ — ваш iPhone X может запустить тот же код, которым мы все восхищались десять лет назад.
Если вы используете Xcode, можете скачать этот проект с GitHub. Папка Jailbreak содержит все, что мне прислал Лукас. Проект Xcode адаптирует этот код, поэтому его можно запустить. Его запустить проще, чем оригинал, но разрешение будет другим.
В коде вы можете увидеть вещи вроде root view controller, который также является application delegate — помните, что мы учились писать приложения без документации. Там так же полностью отсутствуют свойства, сториборд, каталоги и множества других вещей, знакомых нам по современным инструментам.
Если вы не используете Xcode, вы все ещё можете посмотреть на этот проект. Стив Троутон-Смит продает улучшенную версию в App Store. Мне нравится эта игра и я часто в неё играю: она заслужила попадания в «Зал славы».
Что было дальше?
Первые приложения Iconfactory
В июне 2007 мы только что выпустили версию 2.1 нашего первого Mac-приложения для Twitter. Должно быть довольно просто перенести код Cocoa с одной платформы на другую, верно? Не совсем. Но я многому научился в процессе.
iPhone привлек программистов всех типов, включая нашего Шона Хебера. В 2007 Шон занимался веб-разработкой и ничего не знал об Objective-C или программировании для Mac. Но это не остановило его от исследования class-dump с остальными и создания своего первого приложения.
Но потом он сделал шаг дальше и поставил себе цель писать приложение каждый день (вдохновившись своей женой и NaNoWriMo). Он назвал этот марафон iApp-a-Day и это было хитом в джейлбрейк-сообществе. Это внимание принесло ему должность в Tapulous, а также привлекло людей, ответственных за первую хитовую франшизу на iPhone Tap Tap Revenge.
За месяц Шон показал, что iPhone может быть чем угодно. Конечно, вы можете играть в игры, но можете и следить за бюджетом, проигрывать музыку или вешать картины. И у меня, и у Шона есть архивы приложений из того периода. Код ужасен, но он представляет из себя нечто большее.
В ранней версии UIKit было много сюрпризов. Парсер XML было сложно найти, так как он был похоронен в фреймворке OfficeImport. И некоторые важные вещи напрочь отсутствовали — например, в Objective-C не было способа вернуть значение с плавающей запятой.
Существовали и странные инженерные решения. Вы могли поместить HTML в текстовый элемент, который работал с простыми тегами вроде <b>, но не работал с более сложными. Экраны использовали LKLayer для создания изображений, он был похож на Core Animation в Mac OS Leopard. Таблицы также представили новую концепцию повторного использования ячеек, которая позволяла быстро скроллить, но была сложной и неуклюжей. И не было возможности использовать что-то вроде view controller, которые на тот момент только вышли для AppKit.
Но это не останавливало нас от экспериментирования. Потом что-то произошло: мы остановились.
Настоящий SDK
Apple усердно работала над iPhone. Те, кто писал приложения при помощи джейлбрейка, видели некоторые проблемы в первом продукте, но они ничего не значили. Настоящие артисты поставляли продукты. Только дураки думали, что все плохо.
Но все создатели продукта знают, что за “Мы сделали это!” быстро следует “Что дальше?”.
Возможно, ответ на этот вопрос был вдохновлен джейлбрейкингом или менеджеры в Купертино изначально знали, что они хотят. В любом случае мы были взволнованы анонсом официального SDK через пять месяцев после выхода iPhone.
iPhone SDK обещали в феврале 2008, но релиз несколько задержался. В честь этого состоялось мероприятие.
Десять лет назад мы впервые узнали о Simulator и других изменениях в Xcode, новых фреймворках, вроде Core Location и OpenGL, а также новом App Store, который будет показывать наши продукты пользователям. Джейсон Шелл сделал транскрипцию этого события. Здесь можно посмотреть видео.
https://www.youtube.com/watch?v=HfMvym5SxHU
Время быть настоящими художниками
Когда разработчики очнулись от прекрасных новостей, они начали думать о выпуске приложений. Мы не знали, сколько это займет, но в итоге у нас было около четырех месяцев, чтобы закончить приложения. Благодаря эпохе джейлбрейка мы понимали проблемы с дизайном и разработкой. Но все же нам пришлось потрудиться над созданием первого приложения Twitter для iPhone.
Перед запуском App Store Apple добавила новые категории во время своей ежегодной церемонии вручения наград по дизайну. Мы были рады выиграть ADA за свою работу для iPhone.
После этого мы были среди первых приложений, которые получили фичеринг в App Store и получили высокую позицию в первых рейтингах. Мы знали, что стали частью чего-то большого, но не знали насколько большого.
Путешествие продолжается
Первое приложение Iconfactory появилось в магазине, когда там было несколько сотен продуктов. Теперь там больше двух миллионов программ.
Теперь мы продаем приложения пользователям и инструменты дизайнерам и разработчикам, которые создают эти приложения. Мы знаем, как работает дизайн для маленьких, средних и больших компаний. Мы можем разрабатывать приложения для избранных групп клиентов.
Многое может произойти за десять лет. Но одна вещь не изменилась. Вся наша команда горда быть частью этой экосистемы и вносить в неё свой вклад. Вперед, к новому десятилетию!