Как создаются приложения для ios. Как научиться делать приложения для iOS и macOS

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

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

Обучение

В общем решение было принято и в январе 2016 года я начал работу. По специальности я прикладной информатик, но по факту кроме самых базовых навыков работы с Pascal, из университета я ничего так и не вынес, а дело было лет пять-шесть назад. У меня, так же был небольшой опыт работы с HTML и CSS, при создании простеньких сайтов который впрочем не сильно помогал в деле создания приложений. Поэтому я начал с самых азов. С древнего и почти начисто забытого Pascal. Скачал редактор «Free Pascal» http://freepascal.ru/ нашел учебник, начал с простеньких программок по сложению и вычитанию. В общей сложности ушло порядка двух недель занятий, по два – три часа в день, чтобы освежить память.

Углубленное изучение Pascal предполагало больше практики, для чего я нашел задачник Абрамяна по Pascal с 1000 задач (PDF).

Так как начать писать приложения хотелось, как можно скорей, я не дожидаясь окончания первого этапа обучения, параллельно с решением задач на Pascal, начал изучать Cи, по книги «Язык программирования Си» - Брайана Кернигана и Денниса Ритчи (PDF). Здесь отдельно скажу, что несмотря на то, что эта книга есть и на Русском языке, я изучал его на языке оригинала, так как в целом не плохо знаю английский, и это на мой взгляд достаточно важно для любого человека занимающегося программированием. Обучающих материалов и просто материалов по тому или иному языку программирования на английском, как правило, значительно больше чем на Русском. Работа с AppStore, загрузка приложения, условия использования и прочее, все это тоже в основном на английском. Так что можно сказать что английский на уровне чтения технической литературы это обязательный навык для программиста.

Для программирования на Cи у меня был Mac еще с первого проекта. Задачки для Cи я решал в Xcode. Для того чтобы лучше усвоить разницу в синтаксисе Pascal и Cи я начал решать задачки из того же задачника Абрамяна, но уже на Cи. После двух недель ежедневных 4-5 часовых занятий я смог решить порядка 300 задач на Pascal и вдвое меньше на Cи а так же пройти порядка 100 страниц книги по Си. В это же время решил подключить к процессу обучения англоязычный сервис – Tree House .

Это обучающий сервис который сильно помог мне в освоении HTML и CSS. Подписка стоит от 25 $ в месяц. Но как по мне, это оправдано. На сервисе представлены обучающие материалы по самым разным языкам программирования включая Java, C#, Python, Swift и многие другие. Обучение происходит поэтапно, от видео к видео, с различными вставками практических заданий.

Все видео очень наглядны, интересны, постоянно обновляются и подробно разжевывают все ключевые моменты будь то сама суть Объектно-Ориентированного программирования или принципы работы в Xcode. Я естественно выбрал обучающие материалы по Cи и по созданию приложений IOS с Objective-C.

Таким образом мое обучение напоминало попытку продвигаться сразу по все фронтам одновременно. Я практиковался в решении задач на Pascal, чтобы как можно прочнее, как мне казалось, заложить основы программирования, изучал Cи, для того чтобы лучше понимать Objective-C и наконец изучал Objective-C, чтобы как можно скорей начать писать под IOS.

Так прошел еще один месяц каждодневных занятий в среднем по 4-5 часов в день. С одной стороны возможно логичней было бы двигаться поэтапно, скажем, вначале разобраться с Pascal, затем с Cи и далее приступить к Objective-C, но по факту, именно попытка охватить все, позволила в конечном итоге сэкономить кучу времени, так как я все больше стал уделять внимание не решению задач на Pascal и Cи а непосредственно созданию приложений из программы обучения Tree House. Это было куда интересней и по сути показывало, что задачи из задачника Абрамяна а так же материалы из Книги Кернигана и Ритчи по Си – хороши для понимания основ, но в целом довольно далеки от реального процесса создания приложений. В итоге к концу третьего месяца моего обучения я совсем перестал практиковать Pascal и Cи. Вместо этого я сосредоточился на практических материалах Tree House по Objeсtive-C и созданию приложений в Xcode.

Создание игры. Идея

После создания нескольких простеньких приложений из обучающей программы я решил, что наконец готов заняться чем-то более интересным. Открыв свой список идей, который я периодически пополняю когда на ум приходит что-то потенциально интересное, я остановил свой взгляд на идеи создания игры по теме «Борьбы с Коррупцией». Смысл идеи в том, что в качестве врагов выступают коррупционеры, их нужно нейтрализовать и тогда игровой мир становится лучше. Тут же и подтекст вроде того, что коррупция это плохо и что чем ее меньше тем лучше окружение. Учитывая, что тема актуальная для России, а приложений с подобной идеей мне найти не удалось я остановился на ней и стал думать, как лучше реализовать.

Несмотря на то, что я по прежнему понятия не имел о том как создавать игры, я решил, что несколько обучающих видео решат этот вопрос. Сперва надо было определиться как вообще будет выглядеть игра. После небольшого мозгового штурма было решено, что самым оптимальным будет вариант 2d игры, где герой на каждом уровне бежит слева направо и ему навстречу выбегают разные противники и препятствия. Этот вариант показался мне приемлемым для идеи игры и не слишком сложным в исполнении.

После того как концепция была утверждена и бегло описана, надо было понять, как создаются игры. Погуглив видео я сразу наткнулся на то, в котором рассказывали, как создать игру на подобие Flappy Bird (Youtube).Тут возник важный вопрос. Не секрет что Apple в 2014 году выпустил новый язык программирования – Swift, который впитал в себя много хорошего от Objective-C и стал его логическим продолжением.

Видео на которое я наткнулся рассказывало о создании Flappy Bird именно на Swift, а найти такое же простое и понятное для Objective-C я не смог. Не долго думая я решил, что все равно будущее за Swift и лучше я не буду отставать, тем более что на том же Tree House были отличные материалы по его изучению. В итоге я взял паузу чтобы изучить Swift, понять синтаксис и основные отличия от Objective-C. Прошла еще неделя занятий в среднем по 8 часов в день. Я бегло прошелся по основным обучающим материалам для Swift, и решил, что наконец готов осилить видео по созданию Flappy Bird. За пару дней я смог создать вот это:

Получив общее представление о работе с движком Sprite Kit, я наконец смог перейти к работе над своим приложением.

Концепция

Вначале я запланировал сделать лишь самое простое – 3-х уровневый прокручивающийся фон, анимированного героя, оружие, возможность прыжков и возможность стрельбы. Это было необходимо так как кроме самых общих представлений о работе со Sprite Kit у меня не было никакого опыта, надо было начинать с чего-то совсем простого. Как фиксировать нажатия и осуществлять прыжки героя, как прокручивать фон, как создавать пули в момент выстрела и тд. Этих вопросов было десятки а то и сотни. И способ решения для каждого, всегда был один и тот же – Google. Благо в интернете есть большое количество различных материалов (к сожалению в основном на английском языке) по созданию игр на Swift, где приводятся примеры решения тех или иных возникавших у меня вопросов. Так же огромную и неоценимую помощь оказывает сервис вопросов/ответов Stack Overflow.

Я думаю, что процентов 70% всех возникших у меня вопросов я смог разрешить с его помощью. К документации Apple я так же обращался но довольно редко. Может быть в 10% случаев максимум, и то когда других вариантов не было.

После очередной напряженной недели, во время которой я отдавал программированию почти все свое время – по 8-10 часов в день я смог сотворить вот это:

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

Прототип

Этот набросок позволил мне многое понять в механики моей будущей игры и убедившись в верности концепции, я решил следующим этапом добавить врагов умеющих стрелять а так же нормальный дизайн. Изначально я планировал заказать весь дизайн (фон, анимации героя и врагов, предметы и тд.) у фрилансера, так как это единственное, что я не мог сделать сам. Но потом я вспомнил про сайт Envato Market: http://market.envato.com/, на котором ранее приобретал музыку, шаблоны для сайтов, презентации и пр.

Помимо перечисленного на сайте существует большой выбор всевозможных анимаций, текстур, звуков и прочих вещей чрезвычайно необходимых при создании приложений. Цены, на мой взгляд, так же весьма приемлемы. Например подобранный мной набор анимаций главного героя, помимо бонусов в виде различных объектов (монетки, алмазы и прочее), включает в себя 8 анимаций таких как – стреляет, бежит, прыгает, умирает и прочее.

Такой набор я приобрел за 7$. Единственный момент заключается в том, что на приобретенные у них товары действуют разные лицензии. Одни например, разрешают использовать продукт только в одном изделие для неограниченного бесплатного распространения, другие разрешают его перепродажу третьим лицам у которых цель – такое же неограниченное бесплатное распространение, третьи, как для музыки например, разрешают распространение только ограниченному количеству слушателей и тд. Стоимость этих лицензий разная и зачастую может отличаться в 4-5 раз.

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

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

Это результат моей работы в фотошоп созданный из пары десятков различных объектов – забор, асфальт, ямы, кучи мусора и тд. В целом на его создание ушло несколько дней. В дальнейшем я заглядывал на Envato раз 10, каждый раз докупая что-то необходимое.

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

У меня был готовый уровень с 5-ю видами оружия, аптечками, объектами, врагами и много чем еще. Далее я решил провести тестирование среди знакомых и мозговой штурм чтобы понять, чего не хватает. Исправлений и добавлений набралось порядком. Столько, что по моим прикидкам я бы работал над игрой еще полгода точно. Пару дней я все осмысливал и в конечном счете набросал список того, что действительно необходимо, а все остальное вычеркнул и решил воспользоваться методом из космической отрасли о котором слышал как-то. Суть в том что с определенного момента, перед запуском, в ракету запрещалось вносить какие-либо изменения и улучшения. Иначе так можно улучшать вечно.

Доработка игры

Далее встал вопрос с дизайном врагов. Всего их у меня 6 видов – 5 простых врагов и босс + честный гражданин. Все эти спрайты я планировал заказать чтоб их отрисовали, так как хотелось, чтоб персонажи были более жизненными. Я пошел на Freelance.Ru и разместил объявление на создание 5 персонажей, с 18-ю анимаций (по 8- 25 кадров) для каждого. Анимаций было много, потому что кроме стандартных бежит, стреляет, арестован, стоит и тд, были еще анимации смерти от каждого вида оружия, в замедленном или не замедленном режиме. Самая дешевая стоимость, от внушающего доверие фрилансера, которую мне назвали была в районе 40 тысяч рублей и 1 месяца работы. Мне это показалось дороговатым и я опять таки обратился к Envato. К счастью на сайт как раз загрузили коллекцию различных спрайтов от одного и того же дизайнера.

Спрайты из его коллекции вместе с набором анимаций стоят в среднем 15$. Самое главное, что в архиве со спрайтом идут файлы для программы Spriter.

Открыв Спрайт в этой программе и немного в ней разобравшись (очень проста в освоении), можно самому делать абсолютно любые анимации для своих персонажей с разной раскадровкой. В общем я подумал и купил всех персонажей на Envato, после чего своими силами обработал, добавил необходимые анимации и загрузил в приложение. Работа с текстурами надо сказать чрезвычайно утомительна и монотонна. Мне было необходимо выгрузить созданную анимацию из программы Spriter, затем обработать в фотошоп (развернуть, выставить размеры), далее сжать, переименовать, сделать картинки 1x, 2х, 3х. На обработку всех анимаций у меня ушло наверное с месяц, не меньше. Целый месяц монотонной и однообразной работы, благо я смог подключить к этой работе помощника. Но зато я разобрался во всем процессе, сделал себе такие анимации которые хотел переделывая их столько раз, сколько было нужно.

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

Во первых несмотря на то, что я сжал свои png текстуры с помощь этого онлайн сервиса: http://compresspng.com/ru/, это не привело к тому, что во время работы приложения они стали занимать меньше оперативки. Самое время для меня было узнать, что размер картинки не равен размеру требующейся для нее оперативной памяти.

Во вторых я открыл чудесный мир утечек памяти, инструментов Xcode для их отслеживания и все «прелести» «strong reference cycle». После того как я прогнал свою игру через инструменты то обнаружил порядка 3-х с половиной тысяч утечек.

В третьих я понял, что стандартное, для моей игры, разрешение текстуры для персонажа в 180×180 по сути дела избыточно велико и я вполне могу переделать все анимации на разрешение 117×117 без какого-либо ухудшения качества. Интересно что на момент создания анимаций я переживал, что не оставил исходников в разрешении 360×360. Так как размер картинки 2х у меня был 180х180 соответственно картинка 3х в моем понимании должна была быть 360х360, но по незнанию я их не сделал, и как оказалось слава Богу, так как в конечном итоге они не понадобились.

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

В итоге я был вынужден полностью переделать созданные мной атласы анимаций (как оказалось не в последний раз), для того чтобы снизить потребление оперативной памяти. Сжать и обрезать все картинки уменьшив их в среднем на 30%. Отказаться за ненадобностью от картинок 3х ограничившись лишь 1х и 2х. Провести большую работу по оптимизации и устранению утечек памяти и пр. Плюсом ко всему требовалась большая работа по завершению самого игрового процесса, так как сначала все кажется готовым и нужно только последние штрихи добавить, но на добавление этих штрихов уходит масса времени. В общем и целом это потребовало еще более месяца, правда уже не очень плотной работы в среднем по 4-5 часов в день, так как возможности всецело заниматься проектом не было. И к началу ноября все было более-менее готово.

Далее загрузка на App Store. Здесь, благодаря предыдущем опыту, никаких вопросов не было. За день я сделал скриншоты, простенькое описание, первую пришедшею в голову иконку (кстати как только у вас будет готовая иконка, ее лучше прогнать через этот сервис: https://makeappicon.com/, вы загружаете туда вашу иконку и он выдает вам ее обратно во всех необходимых размерах и разрешениях), и ключевые слова (их я подбирал с помощью сервиса https://sensortower.com/, сайт способен выдать вам тонны полезной информации о вашем либо о любом другом приложении, правда подписка стоит не дешево).

И вот приложение доступно в AppStore. Ура, Ура, но не совсем.

Ошибки, жуткие тормоза, пропавшие картинки, вылеты и пр. Вот что ждало меня при тестировании на разных Iphone-ах с разными версиями IOS. Тут же выяснилось, что несмотря на то что игра нормально работает на IOS 9, на 10-ки она работает с жуткими тормозами, и то и дело все время пропадает звук. Я был в «восторге» от такого подарка который несла в себе 10-ка, но деваться было некуда и я продолжил поиск и устранение ошибок. Мне в очередной раз пришлось полностью переделать систему размещения всех текстур в приложении, полностью переделать систему воспроизведения всех звуков и исправить немало дополнительных косяков. Особо теплые впечатления оставило необходимое, при работе с обновленным XCode, конвертирование кода со Swift 2.0 на Swift 2.3. Короче говоря я в очередной раз потратил больше месяца на доработку всего и только 13-го декабря, я смог загрузить более-менее рабочую версию. Хотя понятно, что это не последнее обновление.

Многие начинающие разработчики или люди, которые просто интересуются программированием, не знают, как можно легко и быстро создать приложение для iOS.

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

Шаг первый. Придумайте идею и название

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

1 Зайдите в AppStore и посмотрите представленные там программы. Возможно, вам что-то придет в голову.

2 Также посмотрите на список своих приложений (установленных ). Вероятно, что не все из них нравятся вам и хотелось бы добавить к некоторым какую-то функцию. Это и будет идея для вашего творения!

3 Посмотрите на приложения своих друзей с той же целью .

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

Что касается названия, то к этому вопросу также стоит отнестись очень серьезно. Для начала посмотрите на самые и их названия. Зайдите на apple.com/ru/itunes/ с этой целью. Обязательно посмотрите раздел бесплатных и платных.

Эксперты выделяют несколько советов относительно того, каким должно быть название, а конкретно:

  • длина около 10 символов (не намного больше, можно меньше, но, опять же, не слишком);
  • желательно английский язык (в интерфейсе, кстати, он тоже должен быть, чтобы расширить потребительскую аудиторию);
  • два слова в названии;
  • одно слово должно полностью отражать предназначение;
  • второе слово должно быть описанием первого.

Шаг четвертый. Разработка концепции

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

  • Целевая аудитория. Обязательно подумайте о том, кто будет вашим пользователем. Это может быть молодой, целеустремленный и знакомый с современными гаджетами молодой человек. С другой стороны, это может быть пожилой пользователь, который далек от технологий. От этого будут зависеть остальные две составляющие концепции.

  • Функционал. Четко перечислите все функции, которые будет выполнять приложение.
  • Дизайн. Набросайте, пусть даже на листок бумаги, то, как будет выглядеть приложение. Причем вы должны четко понимать, что будет собой представлять стартовый экран, какие на нем будут кнопки, и что будет на дополнительных страницах. Кроме того, добавьте кнопки согласно списку функций. Также разработайте дизайн всех кнопок.

Когда все наброски у вас есть, можно приступать к кодингу!

Шаг пятый. Кодинг

Вот теперь открывайте Xcode и выполняйте следующие этапы создания ПО на iOS:

1 На стартовом экране, в меню слева нажмите «Application» (откройте этот раздел) и выберете «Empty Application» . Нажмите «Next» . Дальше введите свои данные, а в поле идентификатора разработчика (дается Apple) укажите «example» , а в поле префикса класса укажите «XYZ» .

2 Дальше выберете «File» и в выпадающем списке «New» . Дальше последовательно нажмите «User Interface» , «Storyboard» и кнопку «Next» . В меню устройств выберете и в поле имени введите «Main» . Сохраните этот файл в ту же папку, что и основной проект. После этого в древе проекта (слева) появится файл Main.storyboard. Это, как вы уже могли понять, визуальное представление всех экранов вашей программы. В дальнейшем вы будете редактировать именно его.

3 Теперь нужно сделать так, чтобы при запуске приложения открывался именно тот экран, который вы создадите в Storyboard. Для этого в дереве папок слева последовательно выберете свой проект, «Targets» , «General» , «Deployment Info» . Затем возле надписи «Main Interface» выберете «Main» , как на рисунке 8, - именно так мы назвали наш экран на предыдущем этапе.

Рис. 9. Назначение созданного экрана главным в Storyboard

4 Теперь, собственно, нужно создать этот самый главный экран, который откроется первым при запуске. Для этого в дереве слева нажмите на «storyboard» один раз. В основном окне откроется пустое окно. Внизу справа нажмите на иконку в виде куба, это библиотека объектов, которые можно внести на экран. Теперь справа найдите «View Controller» и перетащите его курсором мыши на пустое поле. Появится объект прямоугольного вида. Собственно, туда можно добавлять и все элементы.

5 Теперь вы можете добавлять и другие объекты из библиотеки . Это могут быть текстовые поля, поля ввода и остальные элементы. Если нажать на них два раза, то появится возможность изменять их атрибуты и свойства. Собственно, таким же образом можно написать какой-то код для реакции на клик. Впрочем, если вы смотрели видеоуроки по Objective-C, то прекрасно знаете, какие элементы вам нужны и как их добавить.

6 Если вам потребуется добавить еще экран, то сделайте это таким же образом, как и раньше – переместите на пустое место объект «View Controller» . Дальше можно будет так же перемещать различные объекты на него.

7 Теперь нужно сделать так, чтобы пользователь мог перемещаться между этими экранами с помощью свайпа или же путем нажатия на соответствующую ссылку. Для этого существует объект под названием «Navigation Controller» . Переместите его на свой главный экран. Дальше нажмите на «Editor» , затем «Embed In» и на вышеупомянутый объект. Вверху главного экрана появится серая панель. Это и означает, что к нему добавлена так называемая панель навигации.

8 Чтобы добавить кнопку перемещения по экранам, существует объект «Bar Button» . Это кнопка, если сказать проще. Переместите ее на панель навигации и задайте соответствующие свойства.

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

Кто не мечтал создать свою игру для iPhone и iPad? Игровая индустрия сейчас развивается стремительными темпами, и желание попробовать себя в данном направлении вполне естественно. Многие боятся стать , поскольку считают, что дело это непростое, требующее предельной концентрации и богатого опыта. Однако начать свой путь к мечте можно и без навыков программирования.

Один из инструментов разработки двух- и трехмерных приложений и игр — игровой движок Unity. С его помощью создаются приложения как для Windows и OS X, так и для iOS, Android и . Кроме того, движок используют на приставках PlayStation 4, Xbox 360, Wii и других. Unity очень популярен среди таких разработчиков, как Blizzard, EA, Ubisoft, поскольку работа с движком довольно простая, интерфейс удобный и есть бесплатная версия. Редактор легко настраивать, он имеет несколько различных окон, что делает возможным отладку игры прямо в нем.

Сам проект в Unity поделен на уровни, которые также называются сценами — это отдельные файлы с игровыми мирами, содержащими свои наборы сценариев, объектов и настроек. Скрипты при этом взаимодействуют с объектами, которые содержат наборы определенных компонентов. А благодаря поддержке системы Level of Detail высокодетализированные модели заменяются на менее детализированные, если игрок находится на дальнем расстоянии.

Редактор Unity действительно многофункциональный: система наследования объектов, скрипты в виде отдельных компонентов, поддержка физики твердых тел и ткани. Знакомство с движком на двух уровнях, включая интерфейс, создание скриптов, разработку ландшафта и создание мультиплеерной игры — это и многое другое предлагает сервиса GeekBrains.

Данная профессия имеет оценку сложности 2/5, при этом максимально востребована на современном рынке, а освоить разработку можно всего за полгода. Чтобы приступить к данному курсу, вам не нужны навыки программирования: главное — интерес и желание. При этом перспективы, как мы с вами убедились, впечатляющие — создание игр для iOS, Android, Xbox, PlayStation и других платформ. Средняя зарплата по Москве и МО для разработчика игр составляет 102 тысячи рублей в месяц. Опытные сотрудники запросто увеличивают этот показатель в пару-тройку раз.

Пусть к профессии «Разработчик игр» состоит из обучения C#, разбитого на два уровня, затем учеников ждут два уровня Unity, после чего они сразу приступают к командной разработке в компаниях и проектах. По итогам выпускник не просто получает резюме и сертификат о прохождении курса, но и имеет за плечами неплохое портфолио (в том числе создание мультиплеерных игр с помощью Unity 3D) и навыки командной разработки.

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

Профессия программиста - одна из самых престижных и востребованных, это факт. В отрасли разработки программного обеспечения есть свои ниши. Из них самая быстроразвивающаяся, а вместе с тем наиболее высокооплачиваемая - это разработка ПО для мобильных устройств. Как тебе известно, так уж сложилось, что, оставив конкурентов далеко позади, вперед вырвались три постоянных соперника. Фишка легла таким образом, что кто-то из этих трех безоговорочный лидер, кто-то всегда догоняет.

В сегменте мобильных технологий, без сомнения, лидирует Apple со своим смартфоном iPhone. На прошедшей в сентябре презентации компания из Купертино продемонстрировала уже 7-ю версию мобильного девайса. Вместе с ней Apple представила новую версию мобильной операционной системы iOS 10. Теперь это самая значимая операционка в мире, как и ее предшественницы. Из этого следует, что изучение разработки для iOS - самое выгодное вложение времени и средств.

«Яблочная» экосистема

Сегодня мы займемся разработкой простого мобильного приложения для iOS. Конечно, лучше всего для этого подходит родной Mac. Но если ты сторонник Windows или у тебя просто нет Мака, можно установить операционную систему macOS под виртуальную машину в Windows. На просторах Сети тебе не составит большого труда найти специально заточенную под PC версию macOS, в народе называемую Хакинтош. Смело ставь ее на виртуалку VMware, VirtualBox - на твой выбор. Сразу предупрежу, что на PC-клавиатуре нет части клавиш, которые есть на Mac-клаве, и многие их сочетания нажать в Хакинтоше невозможно. Это изрядно портит настроение. В остальном все описанные ниже операции можно успешно выполнить на Хакинтоше.

Необходимые знания

Чтобы программировать вообще и для iOS в частности, надо довольно много знать. Математика и логика, может, и не понадобятся вначале, но будут востребованы потом. Современные технологии избавили программиста от необходимости досконально знать архитектуру компьютера, однако понимать базовые механизмы, такие как системы счисления, их преобразование, скорость работы подпрограмм или эффективность алгоритмов (большое O), необходимо.

На более высоком уровне iOS-разработчику надо глубоко знать операционную систему macOS и собственно саму iOS. Также тебе обязательно надо освоить «яблочный» язык программирования. Знание Delphi, C++, C# или VB.NET тебе не сильно поможет. У Apple своя экосистема со своими языками: Objective-C и Swift. Конечно, знание C++ еще никому не навредило, программы и вставки на нем встречаются везде, даже у Apple. Но самый используемый по определению Objective-C, просто потому, что появился гораздо раньше (в середине восьмидесятых годов прошлого века), тогда как Swift лишь два года назад (в 2014-м). Apple возлагает большие надежды на новый язык и много инвестирует в него. Для поддержки старого софта используется Objective-C, а новый пишется на Swift. Поэтому тебе неплохо знать оба.

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

Инструменты для разработки

Как ты знаешь, главный инструмент разработчика под macOS и вместе с ней iOS - среда программирования Xcode . Она включает средства для создания приложений для Mac, iPhone, iPad, Apple TV, Apple Watch. Все платформы Apple. Xcode содержит средство построения интерфейса (Interface Builder), редактор кода, поддерживающего все современные средства работы с кодом. Кроме того, не выходя из Xcode, можно протестировать приложение; если оно разрабатывается для внешнего устройства, то его можно запустить в эмуляторе.

В систему включены эмуляторы всех устройств, новые версии которых можно докачать. В дополнение Xcode содержит графические инструменты для анализа производительности приложения, включая средства диагностирования загруженности CPU, использования накопителя (HDD, SDD и другие), нагрузки на графический адаптер (со стороны OpenGL).

13 сентября вышла новая, горячо ожидаемая версия среды разработки 8.0. Стабильные версии можно бесплатно скачать в App Store. Альфы и беты распространяются по подписке разработчика. Восьмая версия вобрала в себя: новую версию языка Swift 3, средство изучения Swift Playground для iPad, новую версию Interface Builder, которая стала быстрее работать и позволяет просматривать макет приложения на разных платформах, без необходимости развертывать на симуляторе само приложение.

На Xcode 8 можно разрабатывать приложения для macOS Sierra, iOS 10, watchOS 3 и tvOS 10. Имеются все SDK. Новые версии операционок стали последовательно появляться аккурат после презентации Apple, состоявшейся в начале сентября.

Язык Objective-C

Кратко вспомним основные сведения о языке. Objective-C - компилируемый объектно ориентированный язык программирования, используемый для написания приложений под «яблочные» системы. Представляет собой надмножество или, другими словами, надстройку над C, унаследовав от последнего синтаксис, типы данных, способы контроля за ходом выполнения программы и добавив к нему возможности объектно ориентированного программирования - описание классов и методов.

Как в C++, в Objective-C центральную роль играют объекты, с которыми связаны четыре парадигмы: абстракция, инкапсуляция, наследование, полиморфизм. Язык C++ является строго типизированным, тогда как Objective-C - слабо типизированный или обладает динамической системой типов данных. Подобно Smalltalk, в Objective-C объектам посылаются сообщения. Это исключительная возможность динамических языков, так как тип объектов проверяется во время исполнения программы, а не во время компиляции.

Описание языка Objective-C занимает не один объемистый томик. Поэтому, чтобы получить объективные знания, удобно пройти курс « ». Целый раздел курса посвящен этому языку.

Разработка приложения для iOS

В качестве семпла мы разработаем весьма простое приложение. Не будем отступать от священной традиции, поприветствуем мир. Однако с учетом того, что у нас графическое приложение, мы немного разнообразим его: добавим кнопку, нажимая которую будем отображать или скрывать надпись «Hello, World».

Запусти Xcode, в появившемся окне выбери Create new project или в главном меню File -> New -> Project. В следующем окне будет предложено выбрать целевую платформу и тип приложения.


В данном случае нас интересует платформа iOS. На выбор представлено семь типов приложений. Шесть из них - заготовки типичных приложений операционной системы iOS, по умолчанию содержащие разный набор компонентов. Седьмой тип - игра.

Типы приложений

  • Заготовка Single View Application предназначена для простого приложения с одним экраном. Заготовка включает компонент View Controller, который позволяет настроить вид приложения с помощью конструктора форм Interface Builder.
  • Master Detail Application создает приложение, где в табличном представлении отображается коллекция объектов. После выбора одного из них показываются подробные сведения об этом объекте. Первый вид - мастер, второй - детализация.
  • С помощью Page-Based Application создаются приложения, имеющие несколько экранов, как страницы в книге. Следовательно, из этой заготовки создаются, например, читалки.
  • Tabbed application позволяет создавать приложения, где на каждый экран можно переключиться в любой момент, то есть у каждого экрана есть своя кнопка для его активации, на которой отображается заголовок. В качестве примера можно привести iTunes.
  • Game служит для создания заготовки игры. На выбор предлагаются четыре фреймворка для создания игры: SpriteKit, SceneKit, OpenGL ES, Metal. Вкратце рассмотрим их.
    SpriteKit представляет собой систему для двумерной визуализации и анимации текстурированных прямоугольников - спрайтов. При отображении кадров используется стандартный цикл, кадр выводится после того, как обработку пройдет все содержимое сцены.
    SceneKit - высокоуровневый фреймворк для визуализации трехмерной графики без помощи OpenGL. Он поддерживает загрузку, манипуляцию трехмерными объектами. В него включены: физический движок, генератор частиц и легкий способ скриптования.
    OpenGL ES - стандарт в области компьютерной графики. Позволяет визуализировать 2D- и 3D-сцены. Позволяет описать пайплайн для видеокарты: вершины проходят преобразование, собираются в примитивы, которые растеризуются в двумерное изображение и выводятся на экран. В пайплайн можно включить программируемые шейдеры.
    Metal - представляет собой низкоуровневый API, который позволит тебе выжать все мощности из твоего видеоадаптера. Отлаженные API вместе с предкомпилированными шейдерами и многопоточностью позволяют твоей игре подняться на новый уровень производительности и качества.
  • Sticker Pack Application - новый вид приложений, появившийся в iOS 10 и Xcode 8. Представляет собой набор простых или анимированных изображений, используемых в новом iMessage. Для своего создания не требует кодирования.
  • iMessage Application - новый вид приложений, появившийся в iOS 10 и Xcode 8. Позволяет создавать дополнения для iMessage, например для покупки и загрузки твоего пакета стикеров. Также можно, воспользовавшись API iMessage, создать свой аналог данного приложения, включая проигрывание аудио, видео, использование стикеров и другое.

Создание первого проекта

В качестве заготовки для нашего приложения выберем Single View Application. Поскольку мы не будем разрабатывать большую программу, нам хватит предоставляемой этой заготовкой средств. Нажимаем Next. На следующей странице мастера надо ввести имя проекта, к примеру ShowLab. В ниспадающем списке Language оставим выбранный по умолчанию язык - Objective-C. Далее в ниспадающем списке Devices оставим выбор Universal. Здесь определяется, для какого устройства (iPhone или iPad) создается приложение. Пункт Universal означает для обоих. Снимем флажки Include Unit Tests и Include UI Tests, нам никакие тесты не нужны. Next. Выберем папку для сохранения проекта. Теперь жми кнопку Create.

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


Сначала нам надо создать интерфейс приложения. Для этого одним кликом выбери файл Main.storyboard в списке слева (если этот файл не видно, разверни содержимое папки ShowLab). Правее списка все окно займет Interface Builder. В центре отобразится макет устройства. В правом нижнем углу окна находится панель компонентов. Перетащи оттуда на макет компоненты Label и Button. Выше панели компонентов находится список свойств. Если у тебя он отсутствует, нажми кнопку Show the Attributes Inspector, находящуюся под заголовком окна в правой части интерфейса.

Выдели в макете компонент Label и настрой его свойство Text: в ниспадающем списке оставь выбор Plain, в строку ниже введи нужную надпись, в нашем случае «Hello, World». Если текст не помещается в границы надписи, измени их, перетаскивая маркеры на краях компонента. Чтобы централизовать его по горизонтали, перейди на страницу Size Inspector, нажав на кнопку Show the Size Inspector (справа от Show the Attributes Inspector). На этой странице из ниспадающего списка Arrange выбери пункт Center Horizontally in Container.

Теперь выбери компонент Button, измени его свойство Text на желаемую метку - Switch. Отцентрировать можешь так же, как описано выше.

Создаем связь между графическими элементами и кодом

В Visual Studio (или Delphi) объект в коде создается автоматически в тот момент, когда кладешь визуальный компонент на форму. В Xcode этого не происходит, но это не создает проблем.

Открой содержимое заголовочного файла ViewController.h в отдельном окне, дважды щелкнув на нем. В этом файле находится объявление расширения класса UIViewController, помечается ключевым словом @interface. Такая возможность была добавлена во вторую версию Objective-C. Теперь выполни такой трюк: перемести курсор мыши на компонент - текстовую метку, зажми клавишу Ctrl и левую кнопку мыши. Перемести курсор в окно с кодом (файл ViewController.h), за курсором потянется синяя линия. Отпусти мышь и клавишу внутри описания интерфейса ViewController.

Появится окно создания Outlet’а.


Это свойство объекта, которое ссылается на другой объект (в данном случае визуальный компонент). Тебе надо ввести имя объекта Outlet, по нему ты будешь обращаться к визуальному компоненту, пускай будет lab. Далее выбирается тип объекта, он выбран правильно: UILabel.

Еще ниже в списке Storage выбирается тип ссылки на объект: weak или strong. Если выбрать strong, то объект, на который указывает свойство, будет существовать до тех пор, пока свойство указывает на него, в таком случае он не сможет автоматически удалиться, когда перестанет использоваться. С другой стороны, когда действует слабая ссылка (weak), объект может самоуничтожиться. Итак, выбираем тип ссылки weak и жмем кнопку Connect. В итоге в код добавится такая строка:

@property (weak, nonatomic) IBOutlet UILabel *lab;

Убеждаемся, что Outlet - это свойство.

Теперь создадим Outlet для кнопки. Алгоритм остался прежним. Только для свойства Name надо ввести другое имя, например but. В код будет добавлена строка:

@property (weak, nonatomic) IBOutlet UIButton *but;

В результате имеем два указателя на визуальные компоненты: lab и but - соответственно, надпись и кнопку. Теперь, используя указатели, мы можем манипулировать компонентами в коде.

Затем надо создать обработчик события нажатия кнопки. Для этого в отдельном окне открой файл реализации ViewController.m. Точно таким же образом, как ты перетаскивал линию в заголовочный файл для создания аутлета, от кнопки перетащи линию в файл реализации и отпусти до закрывающей командной скобки - @end. Появится окно для создания события, подобное окну создания аутлета. Видишь разницу: в заголовочном файле создается ссылка на объект, в файле реализации - метод.


Заполни поле Name, его значение представляет имя свойства - метода. Пусть будет onClick. Значение поля Type оставь по умолчанию - id. В языке Objective-C данный тип является предком для всех остальных. В ниспадающем списке Event выбрано по умолчанию событие Touch Up Inside, которое происходит в момент отпускания указателя (мыши, пальца…) над кнопкой, то есть заключительная стадия нажатия кнопки. Это то, что нам нужно. В списке Arguments оставим значение по умолчанию: Sender - это объект, отправивший данный сигнал, в нашем случае им всегда будет кнопка. Жмем кнопку Connect. В итоге будет добавлен следующий код:

- (IBAction)onClick:(id)sender { }

Минус в начале означает закрытый метод (private). Ключевым словом IBAction помечаются события (методы) визуальных компонентов из Interface Builder.

Между командными скобками напишем выполняемый при нажатии кнопки код:

Lab.hidden = !_lab.hidden;

В этой строчке кода мы инвертируем значение свойства hidden. Оно имеет тип BOOL, который располагает двумя значениями: YES - истина и NO - ложь (несколько непривычно Windows-программерам, где true и false).

Обрати внимание на символ подчеркивания, стоящий перед именем объекта - надписи (_lab). Без него компиляция завершится с ошибкой. Символ подчеркивания добавляется автоматически для объектов, содержащихся в других объектах; то есть в данном случае объект lab содержится в объекте ViewController. Раньше это было условное правило, используемое для различия объектов, объявленных в качестве членов класса, и локальных объектов. А теперь это строгое правило, реализованное в компиляторе языка.

Сейчас можно скомпилировать приложение и запустить его на симуляторе. Мы выбрали симулятор для iPhone 7, входящий в Xcode 8. Кнопка компиляции и запуска представляет собой черный прямоугольник и находится на панели вверху интерфейса.

После компиляции приложения, запуска симулятора и загрузки нашего приложения на экране симулятора отобразится его интерфейс: надпись «Hello, World» и кнопка Switch. Если нажать последнюю, надпись исчезнет, при повторном нажатии она появится вновь.

Мы сделали очень простое приложение для понимания сути разработки под iOS. Более подробные сведения о создании приложений для iOS на языке Objective-C ты можешь узнать из курса наших друзей из GeekBrains « ». В курсе два месяца отдается на изучение этого языка. Во время первого месяца - вводные темы, а на втором - реальный кодинг профессиональных приложений.

Язык Swift

В 2014 году Apple представила новый язык программирования - Swift. Он быстро стал самым обсуждаемым и наиболее динамично развивающимся языком в мире. Это надежный, безопасный, интуитивно понятный язык для разработки приложений под операционные системы macOS, iOS, tvOS и watchOS для всего парка устройств от Apple. Swift - эффективный язык программирования. Его легче изучать, чем его предшественника - Objective-C, в то же время Swift позаимствовал из него самые удачные идеи. Вместе с тем разработчики сделали языки совместимыми, то есть в одной программе может быть код как на Swift, так и на Objective-C. В мире имеются миллиарды строк кода и сотни тысяч унаследованных программ, написанные на Objective-C, поэтому от его поддержки точно не будут отказываться.

При разработке Swift ставилась цель создать самый удобный язык системного программирования - быстрый, безопасный и выразительный.

Алгоритм на языке Swift работает в 2,6 раза быстрее, чем такой же алгоритм на Objective-C, и в 8,4 раза быстрее, чем на Python. Использование Swift делает процесс разработки программ более гибким и удобным.

Благодаря своему экспоненциальному развитию, 3 декабря 2015 года язык Swift был передан в сообщество открытых исходников. При этом Apple строго следит за его развитием, организовав комитет для его разработки. Теперь Swift доступен не только в системах Apple, но также в Linux. Все дополнительные инструменты для работы с языком, включая отладчик, стандартную библиотеку, менеджер пакет, тоже свободные и открытые.

За этим языком будущее. Более подробные сведения о нем ты сможешь узнать из упомянутого курса от GeekBrains « », в нем целый месяц отведен на изучение данного языка программирования.

App Store

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

Итоги

Мы разработали простое приложение для мобильной операционной системы iOS, используя для этого систему программирования Xcode вместе с языком Objective-C. Протестировали готовое приложение на симуляторе iPhone 7. Мы узнали, как построить пользовательский интерфейс с помощью Interface Builder, как связать графические элементы с кодом приложения, как создать обработчики событий. Познакомились с основами Objective-C. Кроме того, мы обратили внимание на перспективный язык Swift, используемый для разработки мощных и безопасных приложений для «яблочной» экосистемы.

Однако изученный материал - это только начало. Чтобы интенсивно прокачаться в направлении мобильного кодинга и разработки реально продаваемых приложений, мы рекомендуем пройти курс « » на сайте наших друзей .

Это достойный курс: пройдя его, ты точно не потратишь время зря. Он начинается с двух подробных курсов по языку Java, затем следует изучение базового программирования под мобильную операционную систему Android. Далее курс по базам данных в общем и языку SQL в частности. Затем углубленный курс по разработке профессиональных приложений для Android. После этого вектор изучения перейдет в сторону Apple-систем: два подробных курса по языку Objective-C и полезный курс по Swift.


Лекции курса ведут профессиональные преподаватели, имеющие большой опыт в разработке программного обеспечения. Если что-то непонятно, можно, не откладывая, задать вопрос. Вообще, обучение на GeekBrains - живой процесс, можно общаться, задавать вопросы, помогать с ответами. Для проверки полученных знаний преподаватели выдают домашнее задание, которое затем проверяется. После прохождения обучения тебя ждет гарантированная стажировка в IT-компании. А дальше все зависит от тебя, если ты покажешь себя как грамотный специалист, тебя пригласят на работу.

Специальный проект с компанией

Задумывались ли вы о том, как создаются приложения для iOS и OS X, которыми миллионы владельцев iPhone, iPad и Mac пользуются каждый день? Знаем, что многим приходило в голову заняться разработкой программ для Apple-устройств, однако новички, как правило, пугаются сложностей в процессе обучения и самостоятельного штудирования учебников.

Сама профессия «разработчик приложений для iOS и Mac» является универсальной: она сочетает в себе знание двух языков программирования — Objective C и Swift. Первый представляет собой основной язык , построен на базе языка C и имеет простой синтаксис. Без этого языка не возьмут работать в студии мобильных приложений. А вот Swift относительно свежий язык: Apple представила его в 2014 году, он интегрирован с C и работает быстрее Objective C и Python, позволяя создавать любые программы — как игры, так и полезные приложения.

Сейчас специалистов, которые знают Swift, единицы, поэтому они очень востребованы на рынке. Достаточно зайти на любую HR-площадку, чтобы посмотреть среднюю зарплату iOS-разработчиков — 100 тысяч рублей. Опытные программисты имеют заработную плату в несколько сотен тысяч рублей + различные бонусы от компании.

Чтобы получить наилучший результат за небольшое время и гарантированную стажировку, можно воспользоваться от сервиса GeekBrains. Он включает в себя и Objective C, и Swift, то есть по сути на выходе вы получаете две специальности вместо одной. Толковых iOS-программистов компании разбирают как горячие пирожки, так что без работы они не сидят и одной недели.

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

Почему именно онлайн-курсы? Они имеют очевидное преимущество по сравнению с вузами по затраченному времени и при этом дают возможность заработать практический опыт и получить гарантию результата. 7 из 10 студентов сервиса находят работу еще в процессе обучения, поскольку GeekBrains предоставляет гарантированную стажировку. Кроме того, студенты приобретают бесценный опыт командной разработки и кейс для портфолио. Без последнего сейчас почти не устроиться на работу.

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