Mac World

Венгерский дизайнер изучил Apple Swift и создал собственное приложение за 4 месяца

9
41

Дизайнер интерфейсов из Венгрии Золтан Хоссу рассказал  историю о том, как ему удалось «с нуля» изучить язык программирования Apple Swift и создать собственное приложение для Mac за 4 месяца.

learn-2

«Я начал изучать Swift четыре месяца назад, когда уже знал некоторые языки программирования. Однако никогда не делал родного приложения для какой-либо платформы. Сейчас понимаю, что понятия не имел, с чем мне придётся столкнуться», – цитирует Lookatme венгерского дизайнера.

***

В 2011 году мой сайт здорово поднялся. Макет попал на DeviantArt, и я с волнением проверял посещаемость каждый день. Но немного расстроился. Не из-за посещаемости, а из-за того, что не могу быстро её проверить. Тут есть два варианта: либо возиться с Google Analytics, либо найти простое приложение, которое мне поможет. Я начал искать.

Но решения были либо слишком занудными и уродливыми, либо не давали нужных данных. Будучи дизайнером, я нарисовал макет лучшего решения и выложил его на Dribbble. Пара дюжин лайков заставили меня копаться в теме дальше. Я узнал, что виджеты [для OS X] это по сути приложения на HTML и JavaScript, поэтому решил поработать серьёзнее, поскольку знал оба этих языка.

Рабочий прототип запустился в панели управления через пару дней. Я назвал его GAget, как акроним от виджета Google Analytics (Google Analytics widget). Вышел виджет примерно через две недели, в августе 2011 года. Число отзывов просто ошеломляло: MacStories, SwissMiss, куча блогов поменьше рекомендовали GAget. Про меня даже написали в венгерской версии журнала PC World.

Но когда Apple выпустила OS X Yosemite и закрыла Dashcode, GAget ожидало весьма мрачное будущее. Тогда я начал читать документацию Apple по тому, что сегодня называется расширениями. Но все они были на Objective-C. Тьфу! Работать с компилятором, искать потери памяти и управлять многопотоковыми процессами не хотелось. Это звучит пугающе, если вы никогда раньше таким не занимались. Самой большой проблемой было то, что я понятия не имел, с чего начать.

Я купил книгу о разработке для iPhone на Objective-C, но сдался, прочитав пару глав. Буду честным, для того, кто знаком с фроненд-языками и немного с PHP, Objective-C кажется слишком запутанным. Посмотрите на этот код:

Что может “​i​n​t​e​r​f​a​c​e​”? Чем является “​p​r​o​p​e​r​t​y​”? Что значат “​n​o​n​a​t​o​m​i​c​” и “​w​e​a​k​”? Что, чёрт возьми, здесь делают @ и *? Я понял, что это конец!

После нескольких недель борьбы я не стал ближе к родному приложению. Тогда вспомнил, что Apple вместе с OS X Yosemite представила новый язык программирования Swift. Он был новым для всех, поэтому многие гуру начали писать о нём, обсуждать, почему он отстойный и как нужно изучить Objective-C прежде, чем трогать Swift. Весь этот шум заставил меня обратить на него внимания. Я скачал и начал читать документацию.

learn-1

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

Моей целью был виджет для OS X. Но большинство руководств были или о самом Swift, или о приложениях для iPhone. Я собрал и выложил подборку ссылок, которые нашёл полезными. Они могут помочь и вам, если начинаете программировать для iOS и OS X.

Во время работы я узнал, что конкретный дэдлайн может дать много мотивации. Каждый Новый год мы с женой садимся и делаем список того, чего хотим достичь в следующем году. В последний раз я указал, что хочу выпустить новую версию GAget в конце января. Это был мой дэдлайн. Несмотря на то, что я вышел из него на месяц (спасибо процессу одобрения в App Store и сторонним проектам), я всё равно напряжённо трудился в январе и вычеркнул пункт из списка. Записанный на листе бумаги, он является мощным мотиватором.

Я также выяснил, что во время обучения циклично наступают три фазы: волнение, борьба и решение.

  • Фаза волнения: все начинают с неё. Есть новые идеи, изучаете новые штуки, это выглядит многообещающе и интересно, что из него получиться дальше. Вы мотивированы и хотите экспериментировать с тем, что знаете, но, в конце концов, достигаете предела знаний.
  • Фаза борьбы: вы сталкиваетесь с первой проблемой, волнение и мотивация начинают падать. Понятия не имеете, что и как нужно искать. В отчаянии, каждый раз, когда ищете ответ на третьей странице Google.
  • Фаза решения: наконец-то! Вы решили противную проблему. Начинаете работать быстрее, снова чувствуете себя взволнованным и мотивированным. Возвращаетесь к первой фазе. Каждый раз, когда начинаете, помните: этап борьбы может быть долгим и разочаровывающим, но решение есть. Найти его — часть всего веселья».

9 комментариев

  • А тем временем очередной индийский дизайнер изучил Apple Swift но все равно стал сотрудником службы поддержки ;) 4 года назад
  • Он за него еще и три бакса просит. 4 года назад
    • И? Я за установку блутуса в магнитолу тоже 2к прошу! Логично, что если можешь сделать сам - сделаешь. Если не можешь - будешь искать готовое решение и дальше решать купить хороший продукт или пользоваться бесплатным с недостаточным функционалом или рекламой ;))) И совершенно не важно как продукт реализован. 4 года назад
      • думаю как реализован продукт это важнейшая часть потому, что она показывает вопервых скорость работы продукта, а во вторых авторитет пользователя. К примеру у меня есть приложение которое написал один человек которое я скачать в аппсторе за 4 бакса работает все, но реально жрет батарею ( как фейсбук в свое время) и есть приложение с идентичным функционалом и стоит примерно так же или на доллар дороже, но при этом батарею почти вообще не жрет 3 года назад
  • Т

    Трындец 4 года назад
    0
    Чё за хрень?! Я Swift выучил за неделю и уже кучу игр написал, причём с плагином Apportable для Xcode эти игры компилятся и под андроид. Правда нельзя использовать SpriteKit и SceneKit, но зато есть движок Cockos2D-Swift, который можно использовать. А ещё есть прога SpriteBuilder которая работает с этим движком и в ней каркас игры создаётся а вся логика потом программируется в Xcode. Так что дизайнер просто отдыхает со своими четырмя неделями. 4 года назад
    • А если я незнаю языков програмирования долго придется вникать в тему??? Хочу написать приложение мессенджер с серверной частью! Сколько может уйти времени на изучение? 4 года назад
      • Если вы вообще не знакомы с программированием, то конечно же процесс обучения займёт больше чем неделю. Если честно, то я уже 25 лет этим занимаюсь и до сих пор учусь. Чуть ли не каждый день появляются новые технологии, методы, всякие фреймворки и библиотеки. Процесс обучения бесконечен! Если конечно вы будите стремиться идти в ногу со временем. Первые пять лет я программировал, что называется "на коленках". Только потом я начал изучать методологии разработки, которые охватывают не только само программирование но и архитектурные решения, паттерны проэктирования и даже такие вещи как выбор стиля оформления кода и системы контроля версий. В принципе, выучить язык программирования не столь сложно при желании, важнее научиться "правильно программировать". Понятие о "правильном программировании" приходит только при постоянной практике. Так что сначала подумайте о своих целях. Что касается вашей идеи, то могу сказать следущее, программирование на стороне сервера и на стороне клиента может (и будет) в корне отличаться друг от друга как по архитектуре так и по реализации. 4 года назад
        • Сервер должен быстро и качественно обслуживать запросы (множество запросов одновременно), клиент должен к примеру уметь "не падать" при ошибках на сервере и в ряде случаев обходиться без сервера (кеширование на стороне клиента, для снижения нагрузки на сервер, для ускорения быстродействия). Писать серверную часть и клиентскую можно вообще на разных языках программирования и для общения с сервером можно использовать разные подходы. Как видите, всё это для начинающего программиста будет не лёгкими задачами. Но всё в ваших руках! Успехов! 4 года назад

Написать комментарий