#MBLTDev 2014 глазами простого iOS-разработчика из Тинькофф Банка
Москва • 28 октября 2014 • Digital OctoberХоть и с опозданием, решил поделиться с вами своими впечатлениями от посещения #MBLTDev 2014. Отличная конференция, надеюсь, кому-то пригодятся мои заметки.
1. На конференцию мы с коллегой немного опоздали из-за пробок. Около 10 минут Тим Мессержмидт (PayPal) томился в ожидании нас, но как только мы появились в зале, Тим сразу сделал вид, что спич давно начался, а публика ему подыграла.
Тим рассказывал об аутентификации. Приводил статистические данные, видимо, взятые на основе паролей от аккаунтов PayPal. Оказывается, 91% пользователей в качестве пароля указывают слово из топ-1000 популярных паролей. Забавный, конечно, факт, но к нашей системе авторизации пока ни какого отношения не имеет.Всем тем сервисам, что требуют какую-либо авторизацию, советовал не перегружать пользователя сложным вводом пароля, давать возможность отображать символы пароля, в общем, всячески балансировать между необходимостью и безопасностью, не отпугивая аудиторию излишней сложностью. Агитировал публику говорить «password sucks» и советовал всем OAuth, а регистрацию — «unless u really really need it».Это выступление еще раз напомнило мне о том, что пользователь больше похож на ленивого ленивца, которого не стоит лишний раз напрягать, а чтобы узнать как его зовут- лучше погадать на звездах.
Итого: мне кажется, было бы действительно круто давать пользователю возможность авторизоваться через соцсети (нам — больше информации, ему- меньше головной боли). И еще показывать символы пароля при авторизации в мобильном банке, ведь чаще всего пользователь авторизуется наедине с собой.
Презентация: www.slideshare.net/elegion/ss-40957408
2. Следующим спикером оказался Эш Фюрроу (Artsy), девелопер, написавший iOS-клиент для стартапа 500 px. Такой жизнерадостный и веселый, жаловался на баги Xcode 6.
Он рассказывал не просто о разработке на Swift, а об использовании ReactiveCocoa на Swift. Вообще, идея использовать ReactiveCocoa не просто витала в воздухе на конференции, о ней говорил каждый спикер, мало-мальски имеющий отношение к разработке под iOS. У Эша были хорошие примеры, которые он собирал прямо на сцене, показывал куски кода, хорошо дополняющие его выступление.В конце доклада прозвучал вопрос от ведущего конференции: «Эш, если бы тебя наняли для разработки проекта, какой язык ты бы стал использовать?», Фюрроу ответил, что для коммерческого проекта однозначно- ObjC.
Итого: ReactiveCocoa на Swift — интересная тема, но пока не для продакшена. А вот ReactiveCocoa на ObjC надо будет обязательно попробовать. После грядущих релизов. Время Swift еще не наступило.
Презентация: www.slideshare.net/elegion/2-functional-programming-in-swift-ashfurrow
3. Затем на сцену вышел представитель ВКонтакте Андрей Новосельский с презентацией рекламного продвижения приложений на платформе VK.
Мне было не очень интересно его выступление. Я слушал внимательно, но сейчас не могу вспомнить чего-то выдающегося. Андрей рассказывал о конфликте с Apple, о грядущем релизе маркетинговой площадки и ее крутых фичах.Запомнился вопрос из зала: «Почему вы не даете нам токен для бэка?». Тут я оживился. Но ответ разочаровал и меня, и автора вопроса: «У нас есть различные способы связи между серверами, давайте обсудим это после выступления». Из зала кто-то недовольно буркнул: «Игры в кулуарах».
Итого: узнал, что 60% пользователей VK пользуются сервисом через мобильные приложения.
Презентация: www.slideshare.net/elegion/mbltdev
4. Илья Славутин, представитель компании Intel, начал рассказывать об их новом мобильном кроссплатформенном фреймворке INDE. В самом начале выступления прозвучала фраза: «INDE без проблем интегрируется в наши любимые IDE: Android studio, Eclipse и Microsoft Visual Studio». Все. Выводы сделаны.
Примера (как заявлено в названии доклада) как такового не показал. Докладчик был больше похож на маркетолога, нежели на технического специалиста. Да, он рассказал о том, как устроен фреймворк, о С++ обвязке над нативными фреймворками каждой из мобильных платформ (iOS, Windows Phone, Android), даже поведал о некоторых возможностях (например, работа с видео, аппаратными датчиками и т.п.), но примеры кода для iOS были на ObjC.
Я написал твит:
На что получил ответ:
Всё равно код получается разный. Использовать этот фреймворк пока бы не стал. В презентации не было рассказано о тех API, которых бы не было в нэйтиве iOS.
Итого: узнал о попытке Intel создать кроссплатформенный инструмент разработки на C++ для всех платформ. Но в примерах ObjC.
Презентация: www.slideshare.net/elegion/mbltdev-intel-inde
5. Следующим на сцене Digital October в костюме и лучах софитов появился наш Дмитрий Тарасов (Тинькофф Банк).
Публика его встречала стоя, а вся женская аудитория посмотрела на нашего мобильного архитектора влюбленными глазами. Дима был молодцом. Уверен, энергичен, рассказал про опыт ТКС.
Итого: Всё гуд. Кстати, перед тем, как задать вопрос Дмитрию, товарищ из зала похвалил наш мобильный банк. Приятно. Переглянулись с менеджером и расплылись в улыбке.
Презентация: www.slideshare.net/elegion/mbltdev-40959775
6. Следом на сцену выбрался Юрий Буянов, разработчик «Одноклассников». Ведущий мероприятия не удержался и подколол героя: «Сейчас мы узнаем, как делается приложение, которым пользуются наши бабушки и дедушки».
Я был приятно удивлен выступлением. Юра бодро и уверенно, с паузами, как надо, рассказывал не просто о том, что такое MVVM, но и указывал на ошибки, приводил примеры с кодом. Наглядно и понятно. Начал с напоминания о том, что такое стандартный MVC. Включил первый слайд, а там фотография белки. Юрий аргументировал белочку тем, что ему просто было лень делать для MVC слайд.Затем он рассказал про MVVM, что ModelView не должен знать ничего о View, и рассказал, как этот завет обычно нарушается. Избежать этого можно при помощи паттерна «роутер». В объекте-роутер содержится вся информация о переходах между экранами, навигации.Корректное поведение паттерна MVVM, по мнению Юрия, лучше всего достигается при помощи того самого ReactiveCocoa. То есть при использовании механизма сигналов (когда объекты подписываются на изменения свойств других объектов). Везде этот ReactiveCocoa…В конце выступления ведущий прокомментировал: «Приятно знать, что и в «Одноклассниках» умеют программировать».
Итого: Юра поделился ошибками реализации MVVM, которые я наблюдаю в своих проектах. Появилось желание это исправить. Еще появилось желание попробовать RAC.
Презентация: www.slideshare.net/elegion/mbltdev-mvvm
7.На сцену вышел человек в костюме (уже второй за день). Он рассказывал о безопасности. Это был Андрей Беленко (viaForensics). Я тут же мысленно взял бумажку и начал составлять чек-лист по мере его выступления.
Андрей приводил примеры использования NSUserDefaults в качестве хранилища для паролей (так делает делает приложение «Парковки Москвы»). И поделился еще кучей прикольных ошибок. Например, хранение приватных данных в голой CoreData. Показывал, как просто достать данные пользователя в этом случае. У нас все по чек-листу хорошо. Приватные данные зашифрованы, не выдуманным нами алгоритмом (стандартным), ключ шифрования меняется динамически, пароли если и храним- то в кейчейне, а адреса серверов для тестирования в релизную сборку у нас не попадают- вырезаются на этапе компиляции.Андрей предложил обфусцировать код, говоря о особенностях языка ObjC. Действительно, все селекторы видно. Но это опасно в кейсе, когда, подключившись с дебаггером к приложению, есть возможность вызвать метод, который вернет нам что-то секретное. В «Тинькофф Кошельке» я таких методов нет. (В примере был метод, возвращавший статический ключ шифрования БД).
Итого: у нас все хорошо. Рекомендация использовать по возможности TLS вместо SSL (сертификат у бэка).
Презентация: www.slideshare.net/elegion/7-mbltru
8. Об особенностях codesign рассказывал Руслан Гуменный (e-Legion).
Топик показался актуальным для сложного CI, но для нас это, как мне показалось, не имеет особой важности. Руслан рассказывал о том, как подписывать код и проверять подпись вручную. Полезно было узнать, что есть плагин для QuickLook, выводящий информацию об ipa-шниках. Надо будет скачать.
Итого: нужно будет скачать удобный плагин, чтобы просматривать информацию о подписи ipa.
Презентация: www.slideshare.net/elegion/8-codesign-for-i-os-final
9. Затем вышел Алексей Коровянский (Mb-Lock) с докладом на тему автоматического тестирования для Android. Немного послушал доклад. В нем Алексей рассказывал об инструментах тестирования для Android.
Итого: тесты писать очень сложно, но можно и, наверно, нужно.
10. Вернулся я в аудиторию к началу речи Руслана Шевчука из Aviasales.ru. Руслан рассказывал о Core Data. О том, что это такое и как это использовать.
В принципе, речь была похожа на русскую озвучку презентации WWDC. Интересна была часть про iCloud, о том, что Core Data позволяет неявно авторизовать пользователя ну и, собственно, хранить данные в облаке. Не уверен, что это подходит для наших проектов.
Итого: Руслан напомнил всем как использовать Core Data и упомянул, что еще эту data и в облаке хранить можно.
Презентация: www.slideshare.net/elegion/10-aviasales-final
11. Вдруг человек в домашних тапочках, который сидел на полу рядом со мной, встал и пошел на сцену. Это был Андрей Черный (Indie-разработчик).
А рассказывал он про трилатерацию при помощи iBeacon. Он демонстративно раскидал по залу 3 маячка и ходил, определял свое местоположение при помощи iOS-приложения. Разумеется, попутно перечисляя все характеристики устройств, трудности, детали расчетов. Его выступление было очень интересным благодаря его собственной харизме, и я дослушал до конца.
Итого: Андрей рассказал все об iBeacon, об использовании, с примерами, где может пригодиться.
Презентация: www.slideshare.net/elegion/mbltdev-ibeacon
12. После появилась пара представителей Google — Дмитрий Нефедкин и Наталья Ефимцева. Они рассказывали о своей платформе Google Cloud.
Например, рассказали, что серверы Google по всему миру напрямую соединены проводами, что заметно ускоряет обмен данными между серверами, а обслуживание серверов полностью незаметно, то есть нет простоя для пользователей. Создавая бэк для клиентов мобильных, можно нагенерировать классы, которые будут отвечать за коммуникацию с бэком. На вопрос, чем они лучше Asure, ответили что «Дьявол в деталях».
Итого: крутой сервис, но есть опасность сильно завязываться на платформу, с которой потом в случае чего сложно будет уйти.
Презентация: www.slideshare.net/elegion/mbltdev-backend-google-cloud-google
13. Следующим был Realm, о котором рассказывал Брайан Мюнхольм.
Как я понял, это кроссплатформенная Core Data, написаная на C++, работающая ну ооооочень быстро и имеющая очень простой API (похож на Core Data«вский, но со спрятанной внутри инициализацией стека).Судя по бенчмаркам, там все очень круто. Надо попробовать.
Итого: надо пробовать и оценивать уже на практике. Презентация многообещающая.
Презентация: www.slideshare.net/elegion/mbltdev-41144735
14. О новом языке от JetBrains рассказывал Илья Рыженков.
Если вкратце, то JetBrains планируют выпустить новый язык — Kotlin. Выглядит он как и все «языки будущего». Очень похож на Scala и Swift. Теперь в Android studio можно кодить на Scala, что неплохо.Илья также поведал о партнерских намерениях Google использовать этот язык. Так что, думаю, все получится у JetBrains, и через пару лет можно смело переходить на Kotlin.
Итого: Swift под Android. Та-дам.
Презентация: www.slideshare.net/elegion/mbltdev-40960224
15. В попытках побороть свое дикое желание пуститься в пляс, на сцену вышел Энди Карвел, представитель Soundcloud.
Он постоянно подергивался от переизбытка эмоций. Рассказывал о том, как Soundcloud переработали iOS-клиент и использовали для этого, опять же, ReactiveCocoa. При этом приложение страдало падениями. Но при помощи массива из множества Mac mini и кучи тестов за полгода свели количество крашей до 10 в неделю. Ну что ж, неплохой результат.
Итого: блин, ну точно надо ReactiveCocoa попробовать.
Презентация: www.slideshare.net/elegion/mbltdev-ios-soundcloud
Следующие два доклада я уже не стал слушать.
Вот доклады, которые я пропустил:
16. Разработка первоклассных SDK для Android. Тай Смит, Twitter.
Презентация: www.slideshare.net/elegion/mbltdev-sdk-android-twitter
17. Как не стать заложником одной платформы. Алексей Панфилов. Parallels.
Презентация: www.slideshare.net/elegion/mbltdev-parallels
Спасибо, что дочитали. Большая благодарность компании e-Legion за фотографии и ссылки на презентации, и за мероприятие, конечно.
Пока.