Connect with us

Разработка

Как все начиналось: десять лет iPhone SDK

Один из первых разработчиков приложений для iPhone Крейг Хоккенберри вспомнил первые дни разработки приложений для нового устройства до выхода официального SDK от Apple.

Анна Гуляева

Опубликовано

/

     
     

6 марта – очень важный день как для мобильных разработчиков, так и для миллионов людей, пользующихся приложениями. Это десятая годовщина выхода оригинального SDK для iPhone. Я думаю, что не будет преуменьшением сказать, что этот релиз изменил жизнь многих людей. Он точно изменил мою, поэтому давайте остановимся и посмотрим на то, что случилось десять лет назад.

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

Прикосновение к будущему

Для многих из нас прикосновение к первому iPhone в июне 2007 было взглядом в будущее. Мы все хотели знать, какие возможности находятся внутри стекла и металла в наших карманах.

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

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

Выход из тюрьмы

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

Этот быстрый прогресс стал возможен благодаря инструментам, которые использовались для создания оригинального iPhone. Apple полагалась на ту же инфраструктуру, что и с Mac OS. Они выбрали знакомую среду для ускорения разработки, но это помогло людям и за пределами Купертино быстро во всем разобраться.

Hello world

Например, большая часть программ на 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, который будет показывать наши продукты пользователям. Джейсон Шелл сделал транскрипцию этого события. Здесь можно посмотреть видео.

Время быть настоящими художниками

Когда разработчики очнулись от прекрасных новостей, они начали думать о выпуске приложений. Мы не знали, сколько это займет, но в итоге у нас было около четырех месяцев, чтобы закончить приложения. Благодаря эпохе джейлбрейка мы понимали проблемы с дизайном и разработкой. Но все же нам пришлось потрудиться над созданием первого приложения Twitter для iPhone.

Перед запуском App Store Apple добавила новые категории во время своей ежегодной церемонии вручения наград по дизайну. Мы были рады выиграть ADA за свою работу для iPhone.

После этого мы были среди первых приложений, которые получили фичеринг в App Store и получили высокую позицию в первых рейтингах. Мы знали, что стали частью чего-то большого, но не знали насколько большого.

Путешествие продолжается

Первое приложение Iconfactory появилось в магазине, когда там было несколько сотен продуктов. Теперь там больше двух миллионов программ.

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

Многое может произойти за десять лет. Но одна вещь не изменилась. Вся наша команда горда быть частью этой экосистемы и вносить в неё свой вклад. Вперед, к новому десятилетию!

Комментарии
Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement
Click to comment

You must be logged in to post a comment Login

Leave a Reply

Разработка

Дневники разработчиков: Babycare №9

Babycare – приложения для ухода за новорождённым с популярной Android-версией. Теперь Максим Колпаков и компания Wachanga покоряют пользователей iOS и каждую неделю пишут об этом заметки.

Babycare

Опубликовано

/

Автор:

Прошло 11 недель челленджа. На этой неделе окончательно выпустили китайскую локализацию, а также запостили в App Store видеоролик вместо первого скриншота. Оба события принесут (или не принесут) плоды не раньше следующей недели. Тогда и опишу результаты.

Произошёл казус. Договариваясь с блогерами и сообществами о продвижении приложения, получили от некоторых следующий фидбек. Они отказываются работать с нами, так как «изображение бутылочки дискредитирует ценность грудного вскармливания». Мы знали о подобной особенности, но с точки зрения пользователей всё было в порядке в 99% случаев. Блогеры же имеют другое мнение. Думаем, что делать, готовим эксперименты с альтернативными иконками. Если и юзеры выберут другую иконку, то, конечно, сменим.

У нас в компании есть некий код, ДНК, который я сформулировал, и который мы вкладываем теперь в каждый наш новый продукт. Один из первых пунктов этого кода – «Масштабируемость». Сейчас мы делаем только продукты, которые можно легко запустить по всему миру. Обеспечивают такую возможность несколько условий:

  • Минимум контента, а если без него никуда, то UGC – User Generated Content. Это позволит дешевле переводить продукт на другие языки.
  • Минимальная зависимость от национальных особенностей. Например, грудное вскармливание – это намного ближе к физиологии и, значит, интернационально.
  • B2C-продажи. Мы убрали любые B2B-компоненты на период масштабирования, так как это снижает скорость роста. По достижении определенного уровня проникновения, конечно, есть смысл вернуть B2B обратно.
  • Простота клиентской поддержки. Например, для того чтобы это делать на десятках языков, коммуникации с клиентами нужно вести в текстовом виде. В крайнем случае, на первых порах можно на голосе оставить только первую линию, отдав её на аутсорс и обеспечив скриптами, которые нестандартные проблемы всё равно переводят на текстовую коммуникацию.
  • Наличие универсальных каналов привлечения клиентов. Facebook, Instagram, Adwords, App Store, Google Play – эти каналы есть в каждой стране. Если продукт сможет получать достаточно пользователей из них, то он проходит отбор.

Есть и другие особенности «Масштабируемости», но о них я расскажу только в том случае, если вы будете активнее в комментариях. А ещё мне нравятся лайки и репосты  ;)

Комментарии
Продолжить чтение

Новости

Интересные материалы: 21.06

В новом дайджесте когортный анализ, новые инструменты и лучшие библиотеки.

AppTractor

Опубликовано

/

Автор:

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

Комментарии
Продолжить чтение

Новости

Интересные материалы: 20.06

Дизайн и прототипирование, PWA и звуки, которые важны.

AppTractor

Опубликовано

/

Автор:

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

Комментарии
Продолжить чтение

Разработка

“Крутись и уворачивайся”: история разработки Circle vs Spikes

Немного о себе: 30 лет, программированием начал заниматься относительно поздно, всего 2 года назад. Имелся технический бэкграунд, но в целом от программирования был далек. Знакомых кодеров тоже не было, пришлось самому набивать шишки, пытаясь понять, что и как делать. Привлекла идея делать мобильные приложения, так как хотелось работать на себя. Ну а что может быть интереснее геймдева. Таким образом была поставлена цель – научиться делать мобильные игры.

AppTractor

Опубликовано

/

Автор:

Но сначала нужно было изучить основы. Решил взяться за фундаментальные вещи: теория, алгоритмы, проектирование и т.д. Промучившись месяца два понял, что нужно ставить практические задачи, а теорию изучать уже по мере надобности. Стал изучать Java, которая повсеместно используется для Android. Да и фреймворк LibGDX, о котором я уже тогда начал думать, был на Java.

Освоив на достаточном уровне Java и LibGDX, я захотел пройти весь путь от идеи игры до публикации. Хотелось начать с чего-то простого. Пришла мысль сделать 2D-аркаду, в которой надо уворачиваться от препятствий, двигаясь при этом по сложной траектории.

Итак, у меня была неплохая цель – сделать в короткие сроки простую игру, довести ее до публикации в Google Play и, таким образом, набраться опыта. В итоге “короткие сроки” растянулись более чем на полтора года. Частенько я переделывал все с нуля, тратил много времени на каждый этап, добавлял или убирал функционал. Много времени было вложено и в создание редактора уровней. Если игра будет нравится людям, включу его в игру в одном из обновлений. Вот так он выглядит сейчас.

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

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

Крутись и уворачивайся

В игре вы управляете кругом, который движется по орбите. При этом орбита вместе с кругом движутся вперед. Таким образом соединяются две траектории: круговая и прямолинейная. Это делает механику интересной, заставляет просчитывать наперед это сочетание. Кругом надо уворачиваться от множества разных препятствий (шипов, маятников, лазеров, блоков…). Управление при этом предельно простое – касанием экрана можно менять направление вращения по орбите.

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

На то, чтобы сменить направление вращения (другими словами – на каждое касание) требуется 1 заряд. Уровень вы начинаете, имея 100 зарядов. Цель – истратить как можно меньше зарядов за уровень. То есть нельзя бездумно тыкать по экрану, нужно просчитывать траекторию и использовать заряды с умом.

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

Имеется поддержка Google Play Игр:

  1. Достижения – за каждое из которых открывается новый скин или цветовая тема.
  2. Лидерборды
  3. Сохранения и синхронизация между устройствами

Музыку мне сделал друг, специально для игры, за что я ему очень благодарен. Кому интересно, вот ссылка на его страничку в Soundcloud: https://soundcloud.com/octonick.

Также я постоянно делаю новые уровни, так что пройдя все – не спешите удалять игру. Я планирую часто выпускать обновления.

Если у вас есть какие-либо вопросы, пишите, постараюсь ответить всем: ibragames.com@gmail.com.

Комментарии
Продолжить чтение

Реклама

Наша рассылка

Нажимая на кнопку "Подписаться" вы даете согласие на обработку персональных данных.

Вакансии

Популярное

X
X

Спасибо!

Теперь редакторы в курсе.