По следам WWDC 2016. Практическое руководство

979210f76e1b430ea81a0c4c32baaf15.jpg

Эта статья — практическое руководство по участию в WWDС. Я расскажу, как попасть на WWDC и поделюсь личными впечатлениями от конференции.
Предисловие.

Это была моя первая поездка в США. Сан-Франциско представлялся мне образцовым американским городом и идеальным миром для IT-специалистов. В реальности все оказалось немного по-другому. Поэтому даю первый совет: умерьте свои ожидания, чтобы не испортить впечатление.

1. Билет на WWDC. Купить заветный билет не так просто. Но есть несколько вариантов:

  • Выиграть в лотерее: вариант для всех разработчиков, правда, с каждым годом шансов становится все меньше. Наш пример — 6 человек участвовало в розыгрыше, ни один не выиграл, в том числе и я. Цена билета в 2016 году — 1599$.
  • Участвовать в Scholarships: вариант для школьников и студентов. Нужно представить свое приложение, и, если вы победите, получите билет бесплатно. Здесь можно почитать о победителях Scholarships 2016. Если вы студент, стоит начать готовиться заранее.
  • Работать в крутой компании: Apple заинтересована, чтобы на конференцию попали разработчики популярных приложений, поэтому выделяет билеты для таких компаний.


Так я и попал на WWDC. Apple связалась с Тинькофф Банком и предложила один билет, который нужно было оплатить в течение 48 часов (потом покупка была бы невозможна). По счастливому стечению обстоятельств обладателем билета стал я.

2. Виза в США. Сразу после покупки билета на конференцию стоит начать оформление визы тем, у кого ее нет. Советую запросить именное приглашение на WWDC — для этого достаточно написать в службу поддержки на developer.apple.com. Вероятно, в спорной ситуации этот документ может стать решающим.
Процесс получения визы состоит из двух этапов: заполнение формы DS-160 и поход в консульство США. На заполнении DS-160 останавливаться не буду, там нет ничего сложного. После заполнения нужно выбрать дату интервью в посольстве. В моем случае ближайшая дата была через 6 дней. Приходить стоит минут за 30–40 до назначенного времени. Забегая вперед, скажу, что кроме загранпаспорта, фотографии и подтверждения DS-160, никакие документы мне не потребовались (но на всякий случай я взял с собой все билеты, программу конференции, выписку со счета и резюме).
Посещение посольства состоит из четырех этапов: регистрация, подача документов, сканирование отпечатков и интервью с консулом. Последний этап самый важный. Консул задаст вопросы, чтобы понять, планируете ли вы вернуться на родину. От ваших ответов будет зависеть, дадут вам визу или нет. Отвечайте четко и спокойно, ни в коем случае не говорите, что связаны с шифрованием, геолокацией или чем-то секретным. В общем, я без особых проблем получил визу на 3 года.

3. Авиабилеты и жилье. После получения визы купите авиабилеты и забронируйте жилье. Сразу предупреждаю, что ажиотаж будет нешуточный. И цены тоже. Бюджетные варианты проживания можно поискать на Airbnb.

4. Регистрация на вечеринки. В период проведения WWDC многие технологические компании организуют тусовки для разработчиков. Количество мест ограничено, поэтому нужно регистрироваться заранее. Рекомендую скачать приложение Parties for WWDC и регистрироваться на все вечеринки. На какую вечеринку пойти, решите потом.

5. Кто едет. Лучше заранее найти людей, которые также едут на WWDC — сможете позадавать вопросы и обзавестись новыми контактами. У нас был чат в Telegram, что очень удобно.

6. Вопросы и код. На WWDC будет большое количество Lab, где можно напрямую пообщаться с инженерами Apple. Общение проходит в формате «вопрос-ответ», не стесняйтесь задавать больше вопросов! Инженеры достаточно быстро и лаконично отвечают, им можно показать свой код. Еще будет UI Design Lab, на которой дизайнеры Apple будут оценивать ваше приложение и давать советы. Здесь, кроме вопросов, желательно подготовить сценарии для презентации приложения. Если приложение не локализовано на английский язык, крайне желательно это сделать.

7.Общие советы:

  • Всё планируйте. Конференция очень насыщенная, поэтому очень важно грамотно распределить время. Удобнее всего это делать в приложении WWDC — добавляйте в избранное те сессии, на которые планируете сходить в течение дня.
  • Не бойтесь знакомиться, возможно, вы встретите нужных вам людей. Лучший способ устанавливать связь с новыми знакомыми — Facebook/LinkedIn. Откройте поиск и попросите собеседника найти себя. Желательно что-нибудь написать, чтобы новый контакт не затерялся в общем списке.
  • Скачайте офлайн-навигатор, я использовал maps.me.

6cb8c31fb4a74eeda849a29a17f53fdb.JPG

День 0. Check-in.

В Сан-Франциско я летел через Франкфурт. Время в пути — около 15 часов, и это достаточно утомительно. Из аэропорта Сан-Франциско добраться до центра можно на местном пригородном метро — Bart, вход прямо в аэропорту. Дорога занимает около 40 минут. Билет стоит 8,95$, купить можно в автомате. Я оплачивал наличными, но есть возможность заплатить картой. У знакомого при оплате картой (сразу говорю, что это был не Тинькофф Банк) возникли проблемы. Важно не выкидывать билет до конца поездки, иначе не сможете выйти, и придется заплатить 5,95$.

d5702559098342b6849dcd7891a52c8c.JPG

Регистрация на WWDC была открыта с 9:00 до 19:00, я успел до закрытия. Нужно показать паспорт и электронный билет, который лежит в Wallet (билет приходит заранее по e-mail). Я получил бейдж и фирменную курточку, в оставшееся время прошелся по городу.
Больше всего в Сан-Франциско шокирует количество бездомных. В центральных районах на каждой улице кто-нибудь спит или просит деньги, но прохожие просто не обращают на них внимания. Если вам казалось, что в такой цивилизованной стране как США не может быть такого, что кто-то справляет нужду прямо на улице, то вы глубоко заблуждаетесь. Первое впечатление было подпорчено.

b0c64918d7bd449ba6dfca8b3555b8b8.JPG

День 1. Keynote и Platforms State of the Union.

Если вы не прошли check-in заранее, ничего страшного — можно получить бейдж непосредственно перед конференцией или даже позже. Еще при check-in я спросил девушку, выдававшую бейджи, во сколько лучше занимать очередь? На что она ответила, что чем раньше займете, тем ближе будете сидеть. Из-за большого желания сидеть поближе к сцене я решил прийти за 5 часов до начала. Очередь в тот момент была небольшая, где-то 100–200 человек. По пути я встретил Ивана Козлова из Aviasales, немного позднее к нам присоединился Егор Толстой из Рамблера. В очереди мы познакомились со стоящими рядом разработчиками из Канады, Испании, Швеции и США. Обсудили, кто какие технологии использует и чем занимается. Также проходило несколько стартаперов, и рассказывали про свои проекты. Компания MapBox раздавала всем кофе и приглашала к себе на вечеринку. Позже официанты от Apple разносили выпечку и кофе.

2eca38c770304c798d58fea4d4a93e2d.JPG

Время прошло достаточно быстро, и очередь выросла до гигантских размеров. Где-то в 9:00 начали запускать внутрь, причём с двух сторон очереди. Таким образом я попал в зал намного позже, но место было нормальное. В плане организации всё прошло отлично — никаких столпотворений.
Гаснет свет, выходит Тим Кук, и начинается презентация. Революции в очередной раз не случилось, но интересных новинок было много. Приятно видеть, что Apple вовлекает разработчиков в развитие собственной операционной системы, позволяя расширять возможности стандартных функций и приложений.

4381d748d81d4e11a4b669c91c4b2324.JPG

После Keynote был организован ланч в парке напротив. Атмосфера была великолепная — тысячи iOS-разработчиков обсуждают только что представленные новинки. После ланча я пошел в недавно отреставрированный Apple Store на Union Square, и было огромной удачей встретить там Тима Кука.

4f0e70496f6543889ed9258f52f1b059.JPG

Далее проходила презентация под названием State of the Union, где рассказывают технические детали представленных новинок, и что нового появилось для разработчиков. Потом было мероприятие Apple Design Awards, где вручали награды за лучшие приложения. По рассказам знакомых, крайне бесполезное мероприятие. Хорошо, что там нет номинации на лучшее банковское приложение, а то пришлось бы зайти за наградой.

b2f224e081f0494b9c2afc826d5c7507.JPG

Через дорогу Microsoft устраивала вечеринку, и мы с коллегами пошли туда. Внутри инженеры компании общались с разработчиками и рассказывали про проекты, над которыми работают. Я пообщался с инженером из команды Outlook, он достаточно энергично рассказывал о переходе на Swift, немного про архитектуру и UI. В частности я узнал, что это один из проектов, где не используется кроссплатформенный код, а все новые классы пишутся на Swift. Собеседник рассказал, что при разработке интерфейса парни из Microsoft не используют Storyboard/Xib, он объяснили это тем, что все члены команды привыкли делать интерфейс в коде.
Затем удалось немного пообщаться с инженером из команды Office. В этом проекте Microsoft активно использует кроссплатформенный C++ код. Каждый раз, когда инженер говорил об этом, в его глазах читалась боль и усталость. (Подробности реализации он так и не раскрыл). Что интересно, инженеры Microsoft не используют и не планируют использовать Xamarin в своих проектах, вся разработка происходит в XCode. А еще было много шуток на тему покупки LinkedIn.

001dff48e59548e2a602b4aa3069e96d.JPG

На этом первый день конференции завершился. Впереди был интересный день с большим количеством сессий и лаб.

День 2. Swift 3, iMessage Apps, Apple Pay, Cocoa Touch.

Каждый день с 9:00 начинаются сессии, на которых инженеры Apple рассказывают про новые технологии в области разработки. Одновременно проходят 4 сессии. Так что придется выбирать, какая для вас наиболее полезная. Причем лучше сделать это заранее.

Swift. Две утренние сессии были посвящены Swift 3. Основную идею, которую пытались донести до разработчиков, — пишите чистый и понятный код. Также рассказали про Swift Guidelines, новые типы данных и свифтификацию API. Apple переписала несколько своих приложений на Swift, в том числе, Dock в macOS. Очевидно, что Apple стремительно уходит от Objectives-C в сторону Swift, но говорить об отказе от Objective-C еще очень-очень рано.
Session 402 What’s New in Swift
Session 403 Swift API Design Guidelines
Session 207 What’s New in Foundation for Swift

e6831f07fdbf4a6b83fd9459dafc2839.JPG

iMessage Apps. В iOS 10 появилась возможность создавать приложения для iMessage и отдельный App Store для этих приложений. На первой сессии, посвященной этой теме, рассказали о главных особенностях и показали, как сделать приложение для стикеров — ничего сложного, даже не нужно писать код.
Session 204 iMessage Apps and Stickers, Part 1

Apple Pay. Самым главным нововведением стала возможность использовать Apple Pay в приложениях на часах. В остальном небольшие изменения и доработки.
Session 704 What’s New with Wallet and Apple Pay

Cocoa Touch. Обзор новых возможностей основного фреймворка iOS: новые функции для адаптивного интерфейса, работа с универсальным буфером обмена, кастомизация UITabBar, новые возможности 3D Touch, SiriKit, предзагрузка ячеек в UICollectionView/UITableView, новое API для анимирования UIView, новые возможности уведомлений.
Session 205 What’s New in Cocoa Touch

3a2917ebe50c4688b56dca60f4fe86f7.JPG

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

Вечером популярный блог о iOS разработке NSHipster устраивал интеллектуальную викторину в офисе компании Realm. У нас собралась интернациональная команда, но с явным перевесом русскоговорящих участников.
Викторина состояла из 40 вопросов разбитых на 4 части:

  • общие вопросы;
  • в какой версии Swift написан этот код;
  • какому фреймворку принадлежат классы;
  • кто озвучил это рекламу Apple.


К сожалению, знаменитые усы мы не выиграли, но было очень весело и познавательно.

7d78407c9e6647dfae54f8e00167989c.JPG

День 3. Labs, Notifications, SiriKit.

Третий день содержал не так много полезных сессий, поэтому часть времени было решено потратить на общение с инженерами Apple. Общение с ними происходит в формате «вопрос — ответ».

Labs.

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

Cocoa Touch Lab. Основным вопросом для обсуждения стала производительность UITableView при быстром скролле. К сожалению, я услышал банальные ответы в стиле «не блокировать main thread и подготавливать данные заранее». Про анонсированные функции предзагрузки ячеек инженер ничего не знал. Сложилось впечатление, что мне не повезло, и я попал не к тому инженеру.

cbcf475cae8945d0b8cae0d22c31e808.JPG

Testing Lab. Год назад Apple представила UI-тесты. На практике они оказались крайне нестабильны и ненадежны. Инженер Apple сказал, что они поправили множество багов в этой области. Но на вопрос, стали ли UI-тесты работать хорошо, он улыбнулся и ответил, что нет.

Notifications. Две утренние лекции были посвящены новой системе уведомлений. Apple сильно изменила механизм и способы работы с уведомлениями. Появились возможности отображения приложения прямо в уведомлениях, а также проксирование входящих уведомлений с возможностью добавления медиафайлов.
Session 707 Introduction to Notifications
Session 708 Advanced Notifications

SiriKit. Разработчики наконец-то получили возможность интегрировать свои приложения с Siri. Пока что возможна интеграция для определенных типов действий, например, отправка сообщений или платежи. Запросы можно будет говорить в произвольной форме, SDK позволяет распознать смысл фразы. Поддерживаются все языки, на которых доступна Siri.
Session 217 Introducing SiriKit

Вечером была вечеринка в компании Yelp. Хорошая атмосфера и просторное помещение. Познакомился с разработчиками французского банка. Приложение Тинькофф Банка произвело на них большое впечатление.

82f6dc7d94b34812a15fcabc8b6f0f1f.JPG

День 4. Adaptivity, iMessage Apps, Neural Networks, Debugging, App Review Lab.

Adaptivity. Apple активно продвигает идеи «приложение должно адаптировать свой интерфейс под любые размеры экрана» и «iOS многое делает за вас». В этом году были представлены новые инструменты для отладки верстки на конкретных устройствах. Рассказывали про TraitCollection, SizeClass и AuturesizingMask.
Session 222 Making Apps Adaptive, Part 1
Session 223 Making Apps Adaptive, Part 2

f0177d7e0de64a2a984eea2c01ab2cef.JPG

iMessage Apps. Был рассмотрен процесс создания интерактивного приложения для iMessage. SDK предоставляет большие возможности для разного рода приложений. Рассказали про Message Layout, жизненный цикл приложения, групповые чаты, компактное и полное представление. Стоит отметить, что для iMessage Apps не обязательно наличие основного приложения.
Session 224 iMessage Apps and Stickers, Part 2

Neural Networks. Apple начала активно использовать нейронные сети в своих приложениях (например, в новом приложении «Фото»). Для разработчиков будет доступен Accelerate Framework, который позволяет работать с векторами, линейной алгеброй и процессингом изображений.
Session 715 Neural Networks and Accelerate

Debugging. В XCode 8 появилось много новых инструментов для поиска багов и проблемных мест:
— Senitizer — отладка многопоточного кода;
— Статический анализатор;
— Localization Analizator — отладка локализации.
Session 412 Thread Sanitizer and Static Analysis

App Review Lab. На WWDC есть возможность задать свои вопросы цензорам App Store. Меня интересовал вопрос оплаты благотворительности в приложениях. Цензор однозначно ответил — нет, ни в каком виде. Платежи в благотворительные организации разрешено осуществлять только из Safari (встроить через WebView в приложение нельзя).

Вечером была официальная вечеринка Apple, где выступила группа Good Charlotte.

fa2e9e35ac9d4fdc8fd61b08266884f5.jpg

День 5. Proactive Suggestion, Protocol Oriented programming, Logging, UI Design Lab.

Proactive Suggestion. В iOS существует система, анализирующая поведение пользователя и подсказывающая те или иные приложения на экране блокировки или в меню многозначности. Теперь появилась возможность отображать контакты из мессенджеров и социальных сетей. Также появились проактивные подсказки адреса. Новые функции работают через механизм NSUserActivity.
Session 240 Increase Usage of Your App With Proactive Suggestions

2e51e5fd921848919e89856d2175e898.JPG

Protocol Oriented programming. Apple продолжает развивать идею протокол-ориентированного программирования в Swift. Инженеры Apple рассказали, как они видят архитектуру приложения, показали, как переиспользовать код, и когда лучше использовать Value-type. Достаточно сложная сессия, требующая более детального погружения.
Session 419 Protocol and Value Oriented Programming in UIKit Apps

Logging. Был представлен новый механизм с уровнями логирования, вложенностью и организацией логов. Пока что остается неясным, сможет ли данный механизм заменить любимый многими Lumberjack.
Session 721 Unified Logging and Activity Tracing

UI Design Lab. Одна из самых полезных лаб, желающих попасть сюда было очень много, поэтому необходимо записываться через сайт. Вам дается возможность показать свое приложение экспертам Apple и получить обратную связь. Общение происходит в течение 30 минут с двумя специалистами. Один из специалистов был очень впечатлен дизайном нашего приложения, в то время как другой давал практические советы по улучшению интерфейса. В частности, было предложено изменить размеры шрифта, изменить цвета, синхронизировать движение интерфейса, сделать кликабельные элементы очевиднее.

1d61801334f74a33bd765a9e96fe1486.JPG

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

После ухода с последней сессии остается непередаваемое чувство причастности к мировому сообществу разработчиков Apple. Голова переполнена новыми знаниями и желанием реализовать новые возможности iOS 10.

Не упустите возможность поехать на WWDC 2017. Это однозначно того стоит!

ca684e09ee1f48309701a6bf7c6fbcd0.JPG

© Habrahabr.ru