Привет, Хабр!
Хочу увековечить свой первый опыт создания и релиза моего приложения в плей стор и нет для этого места лучше, чем то, которое я всегда с удовольствием как анонимус читаю.
Зачем это все?
Чтобы ответить для себя и для уважаемых читателей на вопрос «а зачем это всё», нужно дать немного бэкграунда. Итак, кто я и что я? Я уже не первый десяток лет в айтишке, начинал, как и многие на постсоветском пространстве, с того, что пилил сайты на популярных в те времена CMS типа Битрикса или Joomla (мой полный стек можно легко вычислить дедуктивным методом из этого утверждения). Потом попал в большую международную айтишку, из которой не вылезаю до сих пор. Сейчас я уже несколько работаю архитектором в одной большой европейской компании. Наша команда пишет на стеке, который я до этой работы в глаза не видел, но это и не имеет значения, потому что мои основные инструменты — это Jira, Confluence и PowerPoint, к сожалению. Отсюда можно понять, что мои навыки разработки сильно заржавели.
The Problem
Одним прекрасным утром я встал на весы и понял, что пора бы начинать следить за тем, что и сколько я ем, потому что принимать форму шара с годами всё проще и проще. А помочь мне в этом должен был один из сотен (или тысяч) счётчиков калорий, которые можно было скачать в Google Play. Примерно полгода я пользовался разными и всегда упирался в одну и ту же проблему. Вернее, несколько проблем:
-
Логгирование требовало слишком много действий, из‑за которых энтузиазм пропадал примерно на вторую неделю эксперимента. В моём мире процесс должен был быть не сложнее, чем выкладывание фоток еды в инстаграм, а когда приложение задаёт слишком много непропускаемых вопросов уже на этапе онбординга, энтузиазм пропадал ещё раньше.
-
В вопросе правильного питания оказалось, что самая большая проблема — это не записать завтрак, обед или ужин. Самая большая проблема, что печеньки, шоколадки и прочие перекусы оставались неучтенными, потому что «открой приложение, открой режим фото, найди пачку от печенья, которую ты уже успел выбросить в мусорку, отсканируй штрихкод, укажи количество съеденных печенек, сохрани, повтори n раз».
-
С появлением нейросеток в любом софте такого рода появилась возможность отфоткать еду, чтобы примерно определить её состав. В 99% приложений эта фича оказалась не просто платной, а непропорционально дорогой. Не то, чтобы я не мог позволить себе потратить 6 евро на подписку, но проблема была в том, что это — очередная подписка.
-
Я люблю готовить и я много готовлю, но я плохо запоминаю цифры. Поэтому у меня над плитой долгое время висел стикер с идеальным (для меня) рецептом блинчиков. Желтый стикер пожелтел ещё больше, заляпался жиром, но снять я его не мог, потому что раз в месяц мне надо было сверяться со списком из трёх ингредиентов, запомнить точные граммовки которых я не могу до сих пор. Я решил решить и эту проблему.
The Solution
Изобрести велосипед с нуля. Конец.
Так как мои прикладные знания застряли где‑то в доковидной эпохе, я выбрал следующий стек. Клиентскую часть я собирал на React Native, а серверную — на PHP (гусары, молчать!). Инфраструктурно на VPS я развернул Docker с nginx и postgres, связал весь этот зоопарк воедино, сделал пайплайны в Github Actions и разработка началась. И продлилась примерно полгода.
Точнее, так, первый MVP был готов за неделю, но потом я начал пытаться адресовать все вышеописанные проблемы одну за другой, а вся anrdoid‑часть семьи приложение попробовала, дала мне позитивный фидбэк и это сподвигло меня на то, чтобы поделиться им с миром. А для этого пришлось попытаться сделать его более понятным, презентабельным и не отваливающимся при каждой некритической ошибке.
Я не буду долго описывать процесс разработки, потому что никакого Rocket Science в этом решении нет и почитать интересно будет разве что новичкам в мобильной разработке (хотя, если подобный запрос у аудитории будет, я обязательно поделюсь процессом в следующем посте). Вместо этого рассказать я хочу о том, как я в лайв выходил.
Как я с Play Store в лайв выходил
Прежде всего, это был мой не первый опыт работы с Play Store. Я уже сталкивался с ним, когда отвечал за архитектуру другого мобильного приложения на одном из мест работы. Другое дело, что компания была большая и за все административные процессы отвечали другие люди. То есть, я не знал, как именно создавать аккаунт, какие документы я должен предоставить, я даже не знал, что надо заплатить 25$ за регистрацию. Мои знания, опять же, ограничивались только релизными треками и API к ним.
Шаг 1: регистрация
Итак, для регистрации в Google Play мне понадобилась кредитка и удостоверение личности с написанным на нём адресом. В целом процесс очень интуитивный и каких‑то сложностей у меня не вызвал. Паблишером может быть физическое лицо или организация, так как организации у меня нет и монетизироваться я в ближайшее время не планирую, регистрировался я единственным возможным для меня вариантом. Тут важно отметить, что для аккаунтов, зарегистрированных на физлица, налагаются некоторые ограничения, но о них позже.
Шаг 2: первый сюрприз
Раньше я думал, что добавление нового приложения в Google Play — это просто добавить описание и скриншотики, описать разрешения да загрузить бандл, но как же я ошибался. Консоль разработчика показывала пару десятков действий, которые нужно было выполнить, и венчала всё это плашка «провести закрытое тестирование 12 пользователями в течение 14 дней». К такому меня жизнь не готовила.
А вот с первыми двумя десятками пунктов на самом деле всё оказалось не так страшно. Большинство действий — это заполнение различных анкет и деклараций, которые состоят из вопросов вида «да‑нет» в зависимости от категоризации приложения. Я решил публиковаться в категории Health и Fitness, тем более, что я запрашивал специфичные для подобных приложений разрешения, так что вопросов было чуть больше, чем обычно. Консоль также попросила у меня ссылки на политику конфиденциальности и удаление аккаунта, так что пришлось сделать небольшой одностраничный сайт со всем этим добром. В общем, всё было готово за день и осталось только найти тестеров.
Вот тут я начал в уме перебирать всех родственников и знакомых, у кого есть телефон на Android. 12 человек никак не набиралось, тем более, статьи в интернете стращали меня тем, что аудитория должна ежедневно хотя бы ненадолго открывать приложение, чтобы система засчитала результат закрытого тестирования. Отсюда стало понятно, что мне нужно сильно больше, чем 12 человек. Это ограничение, кстати, валидно только для аккаунтов физлиц, созданных несколько лет назад, так что если вы — организация или ИП, это не ваша проблема.
В общем, за людьми я пошел на Reddit. Мне посоветовали использовать для набора тестовой аудитории приложение App Hive. Там такие же страдальцы, как и я, помогают друг другу выйти в прод. Приложение набирает чуть больше, чем 12 тестировщиков, даёт чуть больше, чем 2 недели на тест и само следит за тем, чтобы все открывали приложения друг друга и что‑то там делали. Сразу возьму слово «тестирование» в кавычки, потому что только пара человек давала реальный фидбэк по функциям, остальные подходили к заданию исключительно формально: ежедневно делали скриншот главного экрана и отправляли его в качестве пруфа. Так или иначе, это сработало, плашка «проведите внутреннее тестирование» сменилось на кнопку «Apply For Production», которую я сразу же и нажал.
Процесс оказался не автоматическим, но уже через пару дней я получил е‑мэйл, что мне открыт доступ в прод, и я могу публиковать своё приложение.
Шаг 3: первая паника и первый отказ
Оказалось, что аппрув — это только пол дела. Первый релиз также дотошно изучается командой Google Play и ревью самого приложения может занимать несколько дней. По мере того, как срок ожидания приближался к одной неделе, я, конечно же, начал себя накручивать и полез на Reddit, чтобы узнать, как вообще всё происходит. Оттуда я вышел с двумя вещами. Первая, Health приложения проходят аппрув дольше, чем обычно. Вторая — Health приложения не разрешают публиковать физическим лицам. Самое смешное, что эту информацию стащили из ресурсов community support самого Google Play и растиражировали по всему интернету. Неужели все усилия по публикации напрасны? Официальные политики Play Store звучат чуть более обнадеживающе:
«You should choose an organization account if you provide any of the following services: […] Health apps, such as Medical apps and Human Subjects Research apps.».
Для меня эта фраза означает, что если моё приложение — не медицинское (а оно ложится в категорию Health → Fitness), и я не провожу опытов над людьми — всё должно быть ок.
На всякий случай я добавил дисклеймер, что приложение не даёт медицинских рекомендаций, в пользовательское соглашение, и принялся ждать дальше. Кстати, каждое изменение, отправленное на ревью, ставит приложение в конец очереди. Об этом я тоже узнал не сразу.
И вот мне прилетел реджект, и каково же было моё облегчение, когда причиной реджекта было недостаточное описание Health метрик, которые я собираю в соглашении о конфиденциальности. В моём понимании? отказ из‑за типа аккаунта пришел бы до того, как модератор полезет читать политики.
Ещё через несколько дней я увидел аппрув. Ура. Путь пройден.
Сейчас приложение доступно в Google Play, а я доступен для конструктивной критики. Если кому‑то интересно попробовать приложение, то оно доступно в сторе (в первую очередь, в СНГ регионах, чтобы я не разорился на счетах за LLM если вдруг набегут пользователи).
Если кому‑то есть что сказать или спросить, поле комментариев есть внизу.
А что по нейросетям?
Напишу пару абзацев и по этому модному вопросу.
Да, я использую нейронки, и без нейронок этого релиза не было бы. Прежде всего, приложение обращается к API Gemini для того, чтобы определить ингредиенты блюда по фотографии.
Во‑вторых, нейросети помогли мне с дизайном. Тут важно сказать, что нельзя быть специалистом во всём. Я умею пользоваться разными графическими инструментами, например, Inkscape, но у меня отсутствует воображение, которое так необходимо графическому дизайнеру, поэтому в Nano Banana, например, улетало техзадание на логотип, которое я был написать в состоянии, а результат я аккуратно обводил в Inkscape руками.
В остальном я ярый противник вайбкодинга, потому что автор приложения должен понимать концепт хотя бы на уровне архитектуры. А если он ещё и единственный разработчик, он должен смочь его задебажить «в уме, по памяти». Это, кстати, позволяет думать о приложении даже когда ноутбука нет рядом. LLM иногда помогали «выйти из ступора» или порисёрчить библиотеки, которыми я ранее не пользовался, но это похоже на общение со StackOverflow.
ссылка на оригинал статьи https://habr.com/ru/articles/1048988/