Что может интересовать мобильного разработчика? Самые разные вопросы: от конкретных технических («как бы ускорить сборку в Xcode») до глобальных карьерных («а не податься ли мне в инди-разработчики с собственным приложением»). А если действительно заняться собственным приложением, сразу возникают новые вопросы: например, как эффективнее всего взаимодействовать с Google Play/App Store? И программа приближающегося московского Mobius хорошо отражает это многообразие. Как всегда, там всем хватит технической конкретики, но будет и ряд выступлений не про код, которые тоже полезны для мобильного разработчика. Под катом — подробный разбор (и ссылки на видеозаписи предыдущих докладов некоторых спикеров!) Лучшее место для докладов «не (только) про код» — это «общие» открывающие/закрывающие доклады, когда аудитория не делится между разными залами, и тема выступления должна подходить всем.   Откроют конференцию Бен Сандофски и Себастиан де Вис, создавшие iOS-фотоприложения Halide и Spectre. И вот это как раз интереснейшая история про инди-разработку: они сделали практически всё вдвоём, вообще не тратились на маркетинг — а при этом Spectre после релиза на две недели возглавило чарт платных приложений App Store. Поскольку они сами занимались в проекте сразу всем, то и узнать из их выступления можно будет о разном: и о технических челленджах в computational photography, и о переиспользовании кода из другого приложения, и в целом о процессе независимой разработки.  Зрители Mobius уже могут помнить Виталия Фридмана по докладу «Хитрости из тёмных уголков мобильных интерфейсов» — а для тех, кто не помнит, на YouTube доступна видеозапись. И теперь он возвращается, чтобы рассказать, «как завоёвывать друзей и влиять на людей на мобильных платформах».  Виталий ещё в 2006-м стал сооснователем Smashing Magazine — авторитетного издания, где очень внимательно относятся к вопросам UI/UX. Неудивительно, что сам он в докладах тоже внимательно их разбирает, и этот раз не станет исключением: речь зайдёт о том, можно ли повышать конверсию, не раздражая при этом пользователя навязчивыми ходами.  Наконец, завершать конференцию будет Барух Садогурский. На Mobius он раньше не приезжал, зато зрители многих других конференций хорошо знают, что выступление от Баруха — это и полезно, и весело. Например, можете посмотреть, как на Heisenbug он выступал перед тестировщиками.  А на Mobius поведает о том, как личный бренд помогает разработчику и наниматься, и нанимать. Ну, ему виднее: у самого Баруха, с его почти 10 000 подписчиками в Твиттере, личный бренд впечатляющий. Все доклады в программе снабжены пиктограммами, показывающими, к какой платформе они относятся. И есть такие выступления, у которых стоят обе пиктограммы сразу. В первую очередь, конечно, так у всех кейноутов, но ими дело не ограничивается:  Например, логично, что обе платформы объединяет тема кроссплатформенности. Что выбрать в 2019 году, когда нужно быстро сделать приложение для обеих — Flutter или Kotlin/Native? А почему не оба сразу? Геннадий Евстратов, переписавший одно из своих приложений на Flutter, расскажет о нюансах использования этой технологии — от вопросов безопасности до интеграции Kotlin/Native в Flutter-приложение. А Александр Денисов разовьёт тему Flutter уже в более конкретном направлении: управление состоянием. BLoC или Redux, и почему? Безопасность тоже актуальна для обеих платформ. Поэтому Дмитрий Терёшин с опытом работы в банковских Application Security-подразделениях поговорит о локальных атаках на мобильные приложения. Что может произойти, если злоумышленнику доступны чужой смартфон и код блокировки, но он ещё не прошёл аутентификацию в конкретном приложении? Многие знают Йонатана Левина и помнят его старый кейноут «Как самому запилить фичу и не быть убитым своим менеджером». Там было театрализованное представление — а теперь Йонатан уже не в формате кейноута серьёзнее поведает о том, как разработчику не ограничиваться кодом и делать продукт лучше.  Конечно, Swift и Metal — понятия из iOS-мира. Но когда Бен Сандофски заговорит о том, как с их помощью заниматься realtime-обработкой видео, может быть интересно и андроидоводам: доклад поможет понять «как вообще обработка видео работает на низком уровне». А вот интерфейсы — тема универсальная. Кирилл Кожухар обсудит, как разрабатывали интерфейс приложения Яндекс.Драйв и как он меняется со временем. Как протестировать тест? Поменять что-то в приложении так, чтобы он должен был упасть: если не упадёт, значит, изначально сломан. А как сделать это не просто для одного теста, а систематически? Про мутационное тестирование поговорит Джорджио Натили. Наконец, на какой платформе ни выпускай приложение, обычно придётся иметь дело с её магазином приложений (а значит, меняющимися со временем правилами, отказами и другими сложностями). Не всегда это головная боль разработчика, но многим приходится иметь с этим дело — и для таких будет доклад Марины Плешковой. Теперь перейдём к конкретных платформам, которые на Mobius порой расковыривают до самых кишочков.  На Mobius стали уже почти традицией Android-доклады спикеров из Lyft (и судя по тому, как высоко оценивают их зрители, традиция хорошая). Ранее выступили Артём Зиннатуллин с темой «Android Builds at Lyft» (можете посмотреть видеозапись) и Денис Неклюдов c темой «Scaling Architectures at Lyft» (видеозапись). А теперь RJ Marsan расскажет об инженерных принципах Lyft для быстрого запуска продукта. Благодаря чему получилось запустить новый сервис для самокатов всего лишь за два месяца? Но это не единственная крупная компания, готовая делиться Android-опытом: Александр Сорокин из ВКонтакте поделится тем, как у них происходит рендеринг экрана сообщений. Вы можете уже знать Сергея Рябова: его доклад «Пишем Java-френдли Kotlin-код» так понравился зрителям, что для Хабра мы делали текстовую версию. C тех пор в жизни Сергея произошли перемены, теперь он работает в Facebook над Litho — поэтому на Mobius можно будет узнать об этом фреймворке из первых рук. Знают про Lint, кажется, все Android-разработчики. А пользуются им не все — и порой даже не знают, какие именно возможности упускают. Игорь Таланкин зайдёт с самого начала, показав, как приступить — и научит писать собственные правила для Lint на Kotlin. А с Gradle ситуация такая: им пользуются все, но вот все ли при этом действительно понимают, как он работает? Степан Гончаров считает, что не все — и постарается это исправить. Он, кстати, ранее уже выступал на Mobius с близкой темой: Ещё один доклад вида «расковыряем инструмент»: Светлана Смельчакова будет рассматривать UI Automator. Не просто «зачем он нужен», но и «как он устроен». Но не всё сводится к инструментам. Важно думать и о другом — например, о доменном моделировании. И тут пригодится доклад «Design for errors — an introduction to Domain modelling with a bit of Arrow», где на конкретном примере будет продемонстрировано, как делать понятные, надёжные и поддерживаемые API. Кому знать о работе Android с отрисовкой текста, как не разработчику офисного пакета? Неудивительно, что тему «Рендеринг текста в Android» раскроет Павел Новиков из проекта МойОфис. Докладов про Kotlin было уже много — но не таких. Марчин Москала поговорит про то, как писать на этом языке эффективнее всего с точки зрения производительности. Кстати, недавно мы для Хабра взяли у него интервью. Можете ли вы сказать без гугления, чем Android Automotive отличается от Android Auto? Фёдор Цымбал может. Его доклад будет о всём многообразии разновидностей Android для разных устройств — и о том, насколько возможно написать кросс-приложение для всех вариаций сразу.  Фреймворк Chatto в Badoo начали делать для собственных нужд — а теперь у него уже 4000 звёзд на GitHub. Поэтому, когда Антон Щукин расскажет про опыт Badoo в разработке высокопроизводительного чата, тут явно будет что послушать. Среди того, о чём он расскажет — построение пайплайна для работы с UICollectionView, работа с полями ввода и клавиатурой, выбор архитектуры для поддержки разных типов сообщений.  Apple не зря славится закрытостью — в числе прочего она прячет от iOS-разработчиков исходники, которые им могли бы помочь. Но разработчиков это не останавливает — и Дмитрий Куркин в докладе «Отладка без исходников» покажет, как «заглянуть внутрь» UIKit при помощи отладчика и профайлера. Тесты, в том числе End-to-end — это замечательно. Когда они воспроизводятся. А что делать, когда нет? В докладе «Воспроизводимость End-to-end тестов» Борис Бенгус из Dostavista расскажет о возможных проблемах — и о том, как в Dostavista эти проблемы решали. В этом году Apple недвусмысленно показывает всем, что мир движется в сторону подписок: Apple Arcade, Apple TV+, Apple News… Остальным iOS-разработчикам надо за этим поспевать — и технология auto-renewable subscriptions становится актуальной для всё более широкого круга приложений. Поэтому Денис Кириллов (Мамба) разберёт её подробнее. В этом году исполняется 10 лет, как Владимир Озеров занимается iOS-разработкой. Неудивительно, что его доклад о многопоточности в iOS включит в себя исторический экскурс по этой теме. Но главное, конечно, современность: что надо знать о механизмах параллелизма, доступных iOS-разработчику сегодня? Привычные и «простые» вещи могут на самом деле скрывать внутри немало хитростей. Например, UIScrollView: мы так привыкли к скроллу в iOS, что он ощущается само собой разумеющимся, но какие алгоритмы за ним стоят? И какие из них могут пригодиться вам в ваших собственных UI-компонентах? Расскажет Илья Лобанов из Яндекса. Вероятно, работая в Prisma, неизбежно сталкиваешься с интересным. Андрея Володина зрители могут помнить по докладу «Как стать GPU-инженером за час» — а теперь он возвращается с темой «Архитектура умного фоторедактора». Как в одном приложении уживаются UIKit, Metal, Accelerate, CoreML, Vision, ARKit, ARM Neon и код на пяти языках? А в ожидании этого доклада можно посмотреть запись «Как стать GPU-инженером за час»: А Дмитрий Игнатьев расскажет, как моделировать состояния экранов, зачем это нужно, как помогает решать проблемы с размытыми, неполными и порой двусмысленными требованиями, и почему от этого выигрывают не только разработчики, но и смежные команды: продакты, дизайнеры и тестировщики. А затем — об архитектурном подходе создания экранов, который уже используется на практике в приложении с миллионной аудиторией («Мой Билайн»). Ну и, наконец, самое практическое, что только может быть. iOS-разработчики могут заниматься самыми разными проектами, но одинаково хотеть одного: чтобы сборка проходила быстрее. Илья Лункин подскажет, каким должен быть наш Swift-код, чтобы Xcode побыстрее его понимал. ContentProvider