Осваиваем Swift за 30 дней: опыт разработчика
Подборка курсов, сайтов и рассылок, которые помогут освоить Swift в течение месяца.
Я начал изучать Swift ровно 30 дней назад. Три дня назад моё приложение было утверждено Apple для бета-тестирования. Понятно, что бета ещё далеко не идеал, но для меня это было большим достижением.
У меня нет ни степени в области компьютерных наук, ни опыта работы разработчиком, но последние 5 лет я был продакт-менеджером в команде разработки ПО и писал Ruby on Rails приложения ради забавы. Мне хотелось быть более близким к тем вещам, с которыми я работаю, поэтому я начал кодить.
Постоянный рост популярности мобильных приложений
Я хотел работать над тем, что нужно людям, и мне всегда нравилась близость со смартфонами у пользователей. Наши устройства знают о нас всё: когда мы просыпаемся и когда ложимся спать, где мы и как мы туда попали, наше расписание, наше отношение к друзьям и семье и многое другое, о чём не знает даже сам пользователь. Мне это нравится. А ещё, я уже давно являюсь поклонником Apple, так что это было естественно начать именно с iOS. Некоторое время я разбирался с Objective-C, мне не понравилось, и я решил изучать Swift.
Ограничения играют на пользу
Разработка приложений в рамках, заданных Apple, вполне доступна новичку и не сильно ограничивает возможности. Зато у меня не было соблазна отвлекаться на что-либо другое и вынуждало меня больше думать о UX.
Swift — быстроразвивающийся язык.
Мне нравится находиться у истоков, вместе расти и развиваться, по этой причине я предпочитаю работать в стартапах. Так и тут, Swift ещё не настолько популярен, и мне нравится быть вместе с сообществом единомышленников.
Когда я начал изучение, у меня была идея простенького приложения. Это помогло мне сохранить мотивацию и шаг за шагом изучать основы.
Я потратил кучу времени в поиске хороших ресурсов, инструкций и онлайн-курсов. Я нашёл много крутых вещей для начинающих, для тех, кто не видел ни строчки кода, и решил, что это будет слишком медленно. В то же время технические статьи и справочные материалы (в том числе от Apple) оказались рассчитаны на более опытных разработчиков.
В конце концов я нашёл золотую середину, ниже приведены материалы, которые я счёл наиболее полезными:
Доступно бесплатно в iTunes U (в том числе на Windows). На просмотр первых пяти лекций и выполнение домашнего задания у меня ушло около недели. В процессе обучения я столкнулся с трудностями, и мне пришлось перейти к другим ресурсам. Тем не менее скоро я планирую продолжить обучение. А этот сайт поможет вам разобраться с тем, что вы не понимаете.
Курс основан на книге «Swift: Programming Language». Для обучения потребуется опыт разработки на любом языке программирования (хотя бы на уровне основ). В целом курс даёт хорошую подготовку для начала работы над своими приложениями.
Нет, это не чей-то персональный сайт. Это лучшее, что я когда-либо находил. Если вы только начинаете, советую подписаться на рассылку и воспользоваться учебником, размещённым на сайте. Благодаря ему я впервые узнал о странных вещах и нашёл, как с ними справляться. После прочтения приступайте к поиску идей. Если не получается — погуглите.
Неделя 1. Я погрузился в лекции и задания Стэнфордского курса, параллельно читая книгу, на основе которой был создан курс ВШЭ, и изучая ресурсы RayWenderlich.com. В конце первой недели я решил, что готов к старту работы над приложением.
Недели 2 и 3. В это время я отправился в небольшое путешествие, в пути у меня не было доступа к интернету, и я заранее загрузил более 40 вкладок. Это дало мне возможность работать над приложением, не отвлекаясь. Каждой день я думал о том, как сделать его лучше.
Неделя 4. Я продолжал зачистку ненужного кода, рисовал логотип в Sketch и готовил приложение к отправке Apple на рассмотрение. Я получил ответ меньше, чем через сутки.
Я провел 15 часов, работая в Xcode, 3 часа в iOS эмуляторе, больше 4 часов ушло на чтение учебников и около часа на поиск ответов на Stack Overflow. Ещё кучу времени я был занят изучением материалов с помощью смартфона (это время я не считал).
Думаю, этого достаточно новичкам. Если вы знаете полезные ресурсы, поделитесь ими в комментариях.
Для тех, кто пользуется общественным транспортом (оптимизировано для Нью-Йорка) и желает оптимизировать расходы.
Функции:
- Помогает подсчитать, на сколько пополнить проездной, чтобы не осталось лишнего
- Помогает выбрать проездной
- Фиксирует статистику
Для бета-тестеров.
О языке Swift — SwiftBook
Заметка
Swift — это фантастический способ писать приложения для телефонов, для десктопных компьютеров, серверов, да и чего-либо еще, что запускает и работает при помощи кода. Swift безопасный, быстрый и интерактивный язык программирования. Swift вобрал в себя лучшие идеи современных языков с мудростью инженерной культуры Apple. Компилятор оптимизирован для производительности, а язык оптимизирован для разработки, без компромиссов с одной или другой стороны.
Swift исключает большой пласт распространенных программных ошибок при помощи применения современных программных паттернов:
- Переменные всегда инициализированы до того, как будут использованы.
- Индексы массивов всегда проверяются на out-of-bounds ошибки.
- Целые числа проверяются на переполнение.
- Опционалы гарантируют, что значения nil будут явно обработаны.
- Автоматическое управление памятью
- Обработка ошибок позволяет осуществлять контролируемое восстановление от непредвиденных ошибок.
Код на Swift скомпилирован и оптимизирован, чтобы получать максимальную отдачу от современного оборудования. Синтаксис стандартной библиотеки спроектирован основываясь на руководстве, что самый очевидный и простой способ написания кода является лучшим вариантом. Комбинация безопасности и скорости делает Swift лучшим кандидатом для написания программ от уровня «Hello, World!» и до целой операционной системы.
Swift совмещает вывод типов и паттерн-матчинг с современным простым синтаксисом, позволяя сложным идеям быть выраженным просто и кратко. И в качестве результата не только становится проще писать код, но и читать его и поддерживать так же становится просто.
Swift уже имеет за плечами годы развития, и он продолжает развиваться, включая в себя все новые и новые возможности. Наши цели на Swift очень амбициозные. Мы не можем дождаться, что же у вас получится создать при помощи него.
Все книги по Swift на русском языке – Swiftme.ru
Swift — десятилетний ребенок, у которого все самое интересное впереди! Но в актуальной версии Swift 5 уже не узнать того младенца, коим он предстал перед нами в первые годы своей жизни. Каждое обновление привносило серьезные изменения как в синтаксис, так и во внутреннюю структуру.
Swift учить приятно. Это не самое просто занятие на свете, чему явно способствует среда разработки Xcode, но, пожалуй, одно из самых интересных. Для вас не станет секретом, что для эффективного обучения необходимы актуальные и качественные учебные материалы. А с этим в российском сегменте сейчас довольно туго, тем не менее, варианты есть.
Поговорим с вами о книгах по Swift, доступных сегодня на русском языке.
Книга «Swift. Основы разработки приложений под iOS, iPadOS и macOS (5-е изд. дополненное и переработанное)»
Состояние: актуальная
Дата выхода: конец 2019 года
Боюсь, что меня могут уволить, если я не начну данный обзор с книги нашего соотечественника, и по совместительству одного из авторов сайта swiftme.ru, Василия Усова :). Да и по правде говоря, это единственная актуальная книга на русском.
Более 10000 проданных экземпляров, а это говорит о многом! После каждого крупного обновления языка Swift, обновляется и книга, что позволяет вам всегда иметь актуальный учебник/справочник по Swift под рукой. Но автор не просто актуализирует материал в книге, с каждым обновлением в ней появляются новые полезные интересные главы, описывающие все более широкий круг возможностей языка и среды разработки Xcode. Так же хочется отметить, что в книге показаны примеры разработки на Swift не только под мобильную операционную систему iOS, но и macOS (несколько не сложных консольных приложений).
В купе с прекрасной подачей материала, подходящей, как самым юным и неопытным, так и имеющим за плечами навыки программирования на других языках, «Swift. Основы разработки приложений под iOS, iPadOS и macOS» является лучшим выбором для новичков среди всех книг по Swift, доступных на русском языке. Прочитав ее вы получите не просто знания о синтаксисе и возможностях языка, но и начальные навыки создания приложений в среде разработки Xcode.
Хотел бы отметить, что книга не ограничивается сухой подачей учебного материала. Все, что вы изучаете, закрепляется заданиями для самостоятельного решения (они размещены на сайте swiftme.ru в виде специального курса), количество которых на момент написания статьи уже перевалило за 150.
Купить электронную версию
Swift | Введение
Язык Swift и платформы iOS и Mac OS
Последнее обновление: 25.12.2017
Устройства компании Apple являются признанным лидером в сфере информационных технологий. По последним данным доля iOS среди других мобильных операционных систем колеблется в районе 15-20%, а доля Mac OSX среди настольных систем составляет по разным данным 15-20%. Подобное широкое распространение устройств от компании Apple рождает потребность в программном обеспечении для этих устройств.
Традиционно основным языком программирования под iOS и MacOS был Objective-C, однако 2 июня 2014 года на конференции разработчиков Apple WWDC 2014 был представлен новый и более удобный язык программирования — Swift. По сравнению с Objective-C Swift обладает следующими особенностями:
Swift является чистым объектно-ориентированным языком программирования
Простота, ясный и четкий синтаксис
Строгая типизированность. Каждая переменная имеет определенный тип
Автоматическое управление памятью
Однако при этом Swift полностью совместим с ранее написанными прикладными интерфейсами Cocoa API, для которых использовались C и Objective-C.
При этом Swift продолжает развиваться. 19 сентября 2017 года вышла версия 4.0, которая добавила новые возможности для разработки под iOS и Mac OS. В принципе каждый год выходят новые версии.
Swift является компилируемым языком программирования. То есть разработчик пишет исходный код и затем, используя компилятор, компилирует этот код в управляющую программу. Затем этот файл программы можно загрузить в AppStore и распространять среди других пользователей.
Что нужно для разработки для iOS?
В первую очередь необходима соответствующая операционная система Mac OS 10.12 Yosemite или выше. Без Mac OS практически невозможно скомпилировать программу. Данное обстоятельство сильно ограничивает возможности разработки, учитывая тот факт, что Mac OS может гарантированно работать лишь на компьютерах самой компании Apple (iMac, MacBook, MacBook Air, MacBook Pro), а также учитывая высокую стоимость этих самых компьютеров. Однако на обычном PC под управлением ОС Windows или ОС на базе Linux создавать приложения под iOS и Mac OS практически невозможно.
Существуют также варианты с виртуальными машинами, на которые установлена Mac OS, либо использование Хакинтош, однако работоспособность подобных вариантов не гарантирована.
Есть и еще один вариант — написание кода в любой доступной операционной системе и компиляция его с помощью специальных сервисов за определенную плату иди бесплатно. Но, понятное дело, что комфортабельность подобного подхода очень низка.
Непосредственно для самой разработки нам потребуются инструменты языка Swift, текстовый редактор для написания кода, симуляторы iPhone и iPad для отладки приложения. Для всех этих и многих других функций разработки Apple предоставляет бесплатную среду разработки XCode.
Нужны ли реальные устройства iPhone или iPad для тестирования разрабатываемых приложений? По большому счету нет, так как XCode предоставляет симуляторы для тестирования, однако в некоторых отдельных случаях предпочтительнее тестировать на реальном смартфоне.
Регистрация разработчика
И также непосредственно перед тем, как приступить к созданию приложений, необходимо зарегистрироваться в центре Apple для разработчиков. Для этого надо пройти по ссылке https://developer.apple.com/register/:
Для регистрации надо будет войти на сайт с помощью своего идентификатора Apple ID и пароля. Если вдруг такого идентификатора у вас нет, то можно создать новую учетную запись, перейдя по ссылке Create Apple ID. После регистрации сайт перенаправит на страницу https://developer.apple.com/resources/, где можно найти различные материалы по разработке для самых разных аспектов.
Swift UI — галопом по Европам / Tinkoff.ru corporate blog / Habr
22:35. Восторг
Просмотрел WWDC 2019 Key Notes. Ожидаемый декларативный UI действительно стал явью, и это воистину событие вселенского масштаба для мира iOS-разработки. «Надо написать об этом статью», — подумал я и еще тысячи iOS-разработчиков по всему миру, пребывающих в состоянии экзальтации.
05:30. Туториалы
Swift UI — новый framework, разработанный Apple, написан на Swift, предназначен для декларативного описания UI в коде.
Заметил, что с каждым годом в плане документации у «Яблока» становится все круче и круче. В этот раз под Swift UI они запилили несколько полноценных туториалов с пошаговым добавлением и интерактивным отображением результата на view, а в конце еще заботливо добавили контрольные вопросы для закрепления пройденного. Ну прям сказка! Там же — ссылки на example-проекты.
Красиво!
Не буду пересказывать туториал на русском языке, в таком прекрасном виде его лучше потыкать в первоисточнике. Опишу свои впечатления и наблюдения по поводу всей этой истории cо Swift UI и немного побалуюсь с ним.
07:00. Установка
В новом Xcode появился новый режим редактирования кода — Editor And Canvas.
Канвас я увидел не сразу — для этого мало скачать Xcode 11.0, нужно еще обновить и Макось до 10.15. Без нее Xcode работать будет, но без прелестей в виде канваса и, возможно, чего-то еще.
Порадовало, что, когда выделяешь код, выделятся и соответствующий ему элемент в канвасе.
Новая ось, exampl’ы запущены. Крашится? Ну да, бывает. Подсветка отваливается? Нет конечно — в Xcode такого же никогда не было 😉 Но канвас работает, и изменения вьюшки отражаются моментально, если это не таблица со сложными ячейками.
09:22. Новый проект
При создании нового проекта теперь доступна опция Use Swift UI и проект создается с соответствующей конфигурацией.
Сразу бросается в глаза новый файл SceneDelegate
, в котором создается window и его root view. Но в AppDelegate
’е о нем нет ни слова. Зато есть новый метод, создающий UISceneConfiguration
:
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
// Called when a new scene session is being created.
// Use this method to select a configuration to create the new scene with.
return UISceneConfiguration(name: «Default Configuration», sessionRole: connectingSceneSession.role)
}
Ну а сама Default Configuration
лежит в Info.plist
и SceneDelegate
указывается там же. Все встало на свои места.
Но вернемся к SceneDelegate
— запуск происходит именно в нем.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
// Use a UIHostingController as window root view controller
let window = UIWindow(frame: UIScreen.main.bounds)
window.rootViewController = UIHostingController(rootView: ContentView())
self.window = window
window.makeKeyAndVisible()
}
UIHostingController
— это обычный generic UIViewController
, у которого может быть контент любого типа под новым протоколом View
open class UIHostingController<Content> : UIViewController where Content : View {
///
}
Протокол View
прост до неприличия:
public protocol View : _View {
associatedtype Body : View
var body: Self.Body { get }
}
То есть ему надо лишь реализовать body
.
Но фишка в том, что на этот протокол View
написана целая тонна расширений, например для навешивания жестов, для отслеживания появления и исчезновения вьюшки с экрана, для отступов, рамок и еще много-много чего. Посмотреть всё это можно в доке View | Apple Developer Documentation. Это значит, что любая созданная вами вьюшка (под протоколом View
) из коробки приобретают кучу всяких сверхспособностей!
Перейдем же к ContentView.swift
.
struct ContentView : View {
var body: some View {
Text(«Hello World»)
}
}
Тут просто: мы создаем вью из уже реализованных Views and Controls | Apple Developer Documentation. Могли бы сделать ее посложнее, используя различные контейнеры View Layout and Presentation | Apple Developer Documentation и вью, которые уже создали мы сами.
Верстка со Swift UI — это отдельная история, про которую будет написано еще много материалов, да и у Apple есть достойный туториал. Я не буду останавливаться на ней. Вернемся ко второй части ContentView.swift
, там есть и такой код:
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
Очевидно по названию, что именно он отвечает за отображаемое в канвасе — и отобразит он previews
, в нашем случае ContentView()
.
Попробуем же создать экран с примитивной таблицей:
struct ContentView : View {
var birds: [Birds] = []
var body: some View {
List(birds) { bird in
Text(verbatim: bird.name)
}
}
}
Всё. Готово. Просто, лаконично, элегантно. Вот она вся прелесть от декларативного UI!
Видно, что List
— это таблица под капотом. Но не UITableView, а некая UpdateCoalesingTableView.
А еще видно, что нет автолэйаута. Нет contstaint’s, всё на фреймах, а значит, нет этих сложных систем с линейными уравнениями и кучей расчетов. Но, с другой cтороны, верстка выходит адаптивной и фрейм как-то да рассчитывается — посмотрим в дальнейших сессиях WWDC, как именно.
Swift UI — обертка ли это над UIKit’ом? Похоже, что и да, и в то же время нет.
Joe Groff пишет следующее у себя в твиттере:
«Некоторые сущности — это обертки над UI/NS views, но тот факт, что они это делают, и то, какого типа вьюшку они оборачивают, — это вещь, которая может меняться».
Оригинал:
Some things wrap UI/NS views, but whether they do, and what view type they wrap, is subject to change. Best to think about it as a distinct thing.
Что заметил еще:
11:00. Итого
Увы, все эти прелести
@available (iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
То есть переходить на них — это отказываться от старых осей, что слишком радикально и лишено заботы о пользователе.
Уверен, что механизм пока сырой, будет еще немало изменений, да и багов всплывет уйма, и это естественно. Но через год-два можно будет внедрять в прод.
Swift UI — прям революция в мире человеков, называющих себя iOS-разработчиками, и круто, что эта новая дорога, пусть и не идеальная, открылась.
Ну а пока ничего не мешает использовать это в своих пет-проектах, набивать руку и получать эстетическое наслаждение 🙂