Рубанов про мобилу


Гео и язык канала: Россия, Русский
Категория: Технологии


Делюсь своим опытом разработки мобильных приложений: про тестирование, доступность и UI.
Михаил Рубанов, @akaDuality

Связанные каналы  |  Похожие каналы

Гео и язык канала
Россия, Русский
Категория
Технологии
Статистика
Фильтр публикаций


Хотите купить книгу с российской карты?
Опрос
  •   Да
  •   Посмотреть сколько «да»
101 голосов


Книга про Metal теперь полностью на русском

Из трех книжек Metal – бестселлер и теперь доступна на русском. Если язык был преградой, то теперь Георгий Остроброд все перевел.

В книге 25 глав про Metal:
• Разбор как связан девайс, буфер, текстура, пайплайн, команд-кью и команд энкодер.
• Как устроен процессинг и как получается итоговая картинка.
• Зачем нужны шейдеры и каких видов они бывают.
• Как интегрироваться в UIKit и SwiftUI.
• Как эффективно работать с памятью, дебажить, профилировать и добиться скорости.

$50 или по подписке за $10 в месяц. Покупая получаете обе версии: на русском и английском.

bookshelf.dev/metal-book


Релизный пинковоз

Иногда я делаю пет-проект и он мне надоел. Вот книгу писал, это сложно, медленно, долго. Спустя год: в целом структура готова, но какие-то последние главы дописывать еще надо, первые бы поправить, задач много, но сил уже нет.

Тогда я выпускаю, чтобы пнуть самого себя по мотивации.

Выходит несколько вариантов:
• Продается хорошо? Топ, надо выпустить еще, чтобы поблагодарить
• Продается плохо? Круть, надо выпустить еще, чтобы подогреть
• Не продается совсем? Круть, надо выпустить еще всем назло.

Вот такая мотивация.


Главы про зависимости в книге Про тестирование на iOS

Дай мне сил принять то, что я не могу изменить, мужество изменить то, что я могу, и мудрость отличить одно от другого


Давно хотел написать про зависимости: с ними были огромные проблемы в Додо, много странных библиотек на гитхабе, неправильное понимание зависимостей в комьюнити и как следствие всего — тотальное непонимание как работать с ними в тестах и как вообще строить архитектуру.

Оказывается, чтобы подобраться к теме пришлось написать книгу и сменить работу :D

Дописал третий раздел в книгу: +5 статей, теперь их уже 12 и 1 туториал. Рассказываю про зависимости:
• в чем их особенность,
• какими инструментами с ними работать,
• как они превращаются в тест-даблы,
• и что такое «сделать прототип для исследования».

По пути: почему я не использую моки, как добиться последовательного выполнения в тестах, как красиво падать и когда пригодятся параметризованные тесты.

Показываю на примерах либ Dependencies и IssueReporting от Point-Free, если вы уже посматривали на эти библиотеки, то книга покажет их в действии. Еще упомянаются Sharing и Swift Clocks.

В следующий раз расскажу как тремя способами работать с сетью и подберемся к тестированию экранной логики.

$30 за книгу или $10 в месяц по подписке.

bookshelf.dev/testing-book


Доступность файтинга

Марвел Токон вышел, плейстейшен купил, давайте про доступность файтингов поговорим.

У файтингов есть проблема — высокий порог входа. Я на этом даже заработал несколько тысяч долларов 10 лет назад продавая приложение со списком приемов для Мортал Комбат Х. Выходит файтинг по марвелу и у него сходу несколько проблем исходя из бренда и позиционирования.

Захотят играть дети. Моему сыну 7, начал играть с трех. Он хорошо читает, но в роликах за субтитрами в игре не успевает. Марвел токон сходу включает скринридер с описанием как перемещаться по меню. Но это я понимаю, что это скринридер, а для него это возможность не читать, но разобраться в игре начиная с первой кнопки. Круто! Конечно, полная локализация на русский в этом тоже помогает.

Захотят играть гости. Типичная проблема: я прошел все обучение и знаю как работает игра, но вот ко мне завалились друзья которые игру видят впервые. Марвел токон сильно упрощает систему комбо: можешь нажать квадрат 3 раза и будет красиво. Нажми треугольник кнопку 3 раза и тоже будет красиво. Случайно нажми R2 в любой момент и будет мега-красиво. Легко начать играть не разбираясь.

Захочется прокачаться. Но сильно упрощать управление нельзя, иначе станет скучно играть долго. Поэтому есть еще одна система управления, которая вызывает те же визуальные удары, но если выполнить «правильно», то урон будет выше. Прикольное усложнени для тех, кто шарит.

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


Bookshelf.dev: новая книга — про автотесты на iOS

Сейчас у тестов вторая жизнь:
• ИИ может легко написать любой тест;
• ему критически важны тесты, чтобы проверять результат работы;
• при этом разработчикам нужно как-то быстро понимать что в проекте вообще есть;
• но если вы не знаете каким тестом проверить задачу, то ИИ за вас это не придумает;
• вы все еще должны сделать тестируемую архитектуру, чтобы код вообще можно было протестировать!

Выходит, что 4 из 5 пунктов я могу показать: как это выглядит, куда идти и как пользоваться. А вот последний пункт про архитектуру вы должны пройти сами, выбрав что вам нужно, что можно сделать сейчас и насколько вы готовы менять проект. Зато после книги конечная цель будет сильно понятней!

Книга будет выходить постепенно, первые шесть глав уже доступны.
• Как тесты помогают масштабированию приложения.
• Примеры тестов в пирамиде тестирования. Бесплатная глава
• Как тесты и ИИ помогают друг-другу.
• Что приходится изменить в архитектуре.
• Что такое TDD-ката и туториал по ней.
• Что такое DSL

Затем я расскажу про самые разные виды тестов (примеры в бесплатной главе) и к концу вы узнаете как написать стройную систему автотестирования без мок-фреймворка на сценариях использования приложения.

Доступно на русском и английском, $30 вместо 50 пока книга пишется.

https://bookshelf.dev/testing-book

2k 0 27 12 38

Итоги по автотестам

Когда я узнал про автотесты и что в Xcode есть целая панелька для них я очень загорелся идеей научиться тестировать. Но все практики мне не понравились: непонятно как тестировать верстку, что делать с меняюшимся бэкендом, как тестировать сценарий который проходит через несколько экранов. Как в итоге это должно выглядеть было совершенно непонятно.

При этом сталкивался и с проблемой внедрения в проект: для тестов нужно делать мифическую «тестируемую архитектуру». Значит, мне не только непонятные тесты нужно написать, но и проект под них перекроить! Задача стало очень сложной.

Хуже того, проекты в которых я видел автотесты скатывались до мок-фреймворков и тестирования всех классов в изоляции. Попробовал — мне такое вообще не нравится и скорее даже делает хуже.

В конце добивал еще и факт, что для быстрой работы с тестами надо поделить проект на модули и работать с ними по-отдельности. Т.е. в процессе работы над проектом по тестирвоанию надо сделать другой проект по многомодульности!

Додо Пицца тогда активно росла: в количестве разработчиков, в сложности фич и инфраструктуры, выходила в новые страны, усложнялись сценарии внутри приложения. У проекта сменилась команда и не так уж легко было узнать зачем какой-то код вообще был написан. Тестировать все равно надо.

Потом у нас появилось пара стартапов: Дринкит и Донер 42. Очень хотелось сразу начать проекты нормально масштабируя наш опыт с тестированием, но новые команды категорически не хотели учиться тестам, ведь «тесты в стартапе не нужны». Ну да, ну да.

И вот спустя 5 лет тестирование в Додо Пицце и 2 года тестирования в стартапе пора подводить итоге. Я выгрузил весь опыт из головы в виде книги: вы сможете посмотреть на самые разные виды тестов, подходы, практики и фреймворки, не абстрактными правилами «как хорошо», а реальным примерами из проектов.


И снова про ревью

Вторую неделю пытаюсь зарелизить приложение. Столкнулся с новыми приколюхами:
• Прила 5 дней находится в статусе In Review
• Зареджектили, потому что не смогли найти встроенную в приложению проверку возраста. То, что все финансовые приложения проверяют это через KYC на онбординге ревьювер не в курсе, онбординг проходить не собирается.
• Не нашел пермишен на AppTrackingTransparency, хотя он показывается прямо при запуске приложения.
• Прислали письмо, что удалили приложение из Китая. Вот только приложение еще не доступно никому и доступность в Китае я сам отключил за два дня до этого.
• Прожимаю экспедит ревью чаще чем смотрю рилсы в инсте, но даже так это пара дней.

Как у вас ревью последнее время?

2k 0 12 33 16

Впервые за полгода сели писать код руками и пришел к неутешительному выводу… а не, клод снова заработал, сегодня без выводов

2.6k 0 18 4 120

Случайная синергия

Дважды за последне время произошли невероятные совпадения с тем, что делал я:
- Георгий Остроброд думал как выпустить книгу,
- Матвей Мясоедов делал плагин для фигмы про доступность.

В итоге и там и там заколлабились и зарелизили. Но каждый раз это было стечением обстоятельств в духе «в комментах случайного поста прочитал».

И я вот подумал, что меня есть еще несколько проектов:
- ищу авторов книг,
- пишу книгу про тестирование,
- тестирую скилл про доступность,
- пишу прилу для симулятора которая будет показывать описание для скринридера,
- хотел бы сделать текстовую снепшот-стратегию описания для скринридера.

И у вас, наверное, что-то есть. Расскажите в комментах про свои и почитайте чужие, вдруг найдете пересечение. Зря мы тут собрались все вместе что ли?


Пандус для Фигмы

Сделал плагин который позволяет легко описать разметку для VoiceOver в Фигме. О таком инструменте меня спрашивали десятки компаний, так что забирайте.

https://www.figma.com/community/plugin/1658465990761157788/voiceover-annotator

Главное: он задает формат описания элементов и показывает ограничения, которые есть у скринридера. Но это цветочки: если подключить API-ключ для нейронки, то с помощью скила можно сгенерировать все описание! А мелочи потом руками доправить.

Главные фичи:
• Повторяет интерфейс приложения VoiceOver Designer. Если пользовались, то будете как дома.
• Умеет подписывать как под фреймом, так и в аннотациях для Dev Mode.
• Можно экпортнуть в формате .vodesign и послушать превью в VoiceOver Designer

Плагин опенсорсный, пишите баги в ишьюс https://github.com/AccessibilityTools/voiceover-annotator-for-figma

С плагином и дизайном мне помог Матвей Мясоедов. Матвей, спасибо!


Podlodka AI Engineers Club

Этот год у меня весь идет про AI:
• Березка показал как работает,
• навайбкодил Face Replace,
• запустил Bookshelf.dev,
• вся работа идет через AI.

«Знание» поделилось на две части:
• в книжках собираем то, что из LLM не вытащишь,
• где учиться самому AI непонятно, не тратить же на это все свободное время.

Егор Толстой запустил клуб про AI именно чтобы решить эту проблему. Еще и не всех берут в него, заявки рассматривают! В итоге клуб хедов-техлидов-синьоров, актуально всем кто внедряет AI в работе.

Мне понравился сам формат встречи:
• Лекции от разработчиков рассказывают про самое горячее что есть в индустрии и с чем работают.
• Лекторы из разных компаний, много зарубежных,
• После записи еще можно разные вопросы позадавать,
• Прошедшие лекции доступны в записи, а со всеми сконтачиться можно в чатике.

Из последних/запланированных лекций:
• Как разрабатывать сложные легаси системы с AI с человеком, который саппортит MSBuild.
• Круглый стол про то, как меняется найм инженеров.
• Haft – харнесс для системного мышления.
• Как построить harness, который автономно напишет мобильное приложение.

Рекомендую подать заявку и попробовать, там интересно


Когда нащупал глитч на деньги, но фейбл устойчив к джейлбрейкам


Покупайте книжку или подписывайтесь, мы будем и дальше делать туториалы про шейдеры.

Какой разобрать в следующий раз? Хотите AirDrop?


Заморозка в Riveo

Вы точно видели этот шедевр — Riveo сделали потрясаюший эффект заморозки (видео в комментариях)

Хотите узнать как он устроен? Комбинация из текстур:
• normal map для бликов,
• height map для растаивания
• диаграмма Вороного, чтобы сделать неравномерное замерзание от края экрана.

А потом все обратно, чтобы растаяло под пальцем!

Рассказываем в туториле как это устроено. https://bookshelf.dev/metal-tutorials/ice


Intermediate – Гoлографический стикер

Бесплатный туториал этой недели.

Benjamin Pisano сделал простую и красивую библиотеку Sticker.

Эффект оказался комплексным и хорошо показывает этапы работы над шейдером. Разложили по шагам и подробно рассказали про каждый этап

https://bookshelf.dev/metal-tutorials/foil-sticker


Easy — Waving Loading

Довольно простой эффект на смещение пикселей. Тем не менее, показываем как сделать плавное затухание с помощью синуса и анимации SwiftUI — полезная техника для отзывчивых интерфейсов.

https://bookshelf.dev/metal-tutorials/wave-loading


Как и обещал — празднуем запуск дополнительными метариалами!

Бонусом книге про Metal мы решили рассказывать о том как устроены популярные шейдеры от простых к сложным, поэтапно, с картинками и видео, с разными уровнями сложности.

Туториалы доступны в подарок всем купившим книгу Apple Metal: From Fundamentals To Practice или по подписке на bookshelf.dev


Запускаться страшно

Пару месяцев назад нам пришла идея сделать свое издательство и продавать наши книги. Навайбкодить сайт и платежи несложно, но то, как проект запустится определит наше собственное ощущение.

Сначала я запустил свою книгу по доступности на английском. Всего одна покупка. Да, есть на русском бесплатно, да, аудитория в канале другая, да, узкая тема. Был ли я готов? Да. Расстроился ли я? Да.

Но это была первая продажа. Я написал письмо и поблагодарил, потому что для меня это было очень важно — мы запустились!

В этот понедельник я выложил вторую книгу. Ставки выше: если и с ней ничего не пойдет, то что тогда? Страшно, очень страшно.

Но страх не оправдался. Спасибо, что поддержали: и обычными покупками и подпиской. Поддержка дает новые силы и я заготовил сюрприз на понедельник, спойлер на видео.


Курс про доступность

Я же преподаю доступность на курсе и на следующей неделе мы будем проводить курс 13 раз!

Как видно по каналу, я в своем аксесибилити-прайме, готов рассказывать в лучшем виде.

По промокоду RUBANOV скидка 15% https://accessibilityunity.com

Показано 20 последних публикаций.