Как я попробовал вайб-кодинг и сделал приложение своей мечты (почти, осталось немного)
Вступление перед вступлением:
Для ЛЛ, я навайбкодил Android-суфлёр для музыкантов и, его полную, на текущий момент, версию, можно скачать просто так, бесплатно. И потом тоже можно будет, только версии будут ещё новее. Ссылки в конце.
Извините за простыню текста и не очень складный слог. Рассказать хотелось много, но в прозе я не очень силён.
Вступление
Привет, Пикабу! Меня зовут Роман. В разные периоды своей трудовой деятельности я работал лаборантом на кафедре психологии, преподавал на ней же, работал психологом в поликлинике, но всегда, помимо этих, временами, не самых интересных вещей, я увлекался музыкой. Писал стихи, песни, выступал с ними, какое-то время даже занимался организацией квартирников, а однажды собрал группу, и мы играли мой авторский материал (года 2, наверное).
Нашёл только это фото славных времён группы «Чай с Котом» (да, так и назывались). Зато на нём хорошо видно главных конкурентов моего приложения — пюпитры.
С чего всё началось?
С самого начала своих выступлений у меня в голове сидела мысль, что телефон, бумажки, заметки – это всё не то, что нужно артисту на сцене, что материал надо учить и выступать без «помощи» (честно говоря, сейчас думаю примерно так же). Но частенько я замечал, что люди используют телефон как помощника и страховку для исполнения (и время от времени отрываются, чтобы перелистнуть текст), да и у самого иногда случались ситуации, что забывал первую строчку следующего куплета или аккорды, даже в песнях, которые написал сам и, с которыми, часто выступал.
Во времена группы я впервые воспользовался распечатками на пюпитре. Спойлер – провал, было неудобно, в том числе, потому что зрение у меня не очень. Может, поэтому, когда появилась возможность прикоснуться к разработке, я подумал, а почему бы не попытаться решить этот вопрос.
23 мая этого года мне исполнилось 35 лет, и я решил попробовать что-то новое для себя. У меня была подписка на ChatGPT, и мне стало интересно узнать, как работает Codex. Изначально не было цели делать суфлёр или что-то подобное, но одна из первых идей, которые пришла в голову, сделать приложение, которое может помогать во время выступлений, почему бы и нет.
Раньше я пробовал несколько известных приложений в рамках домашних репетиций, иногда опыт на старте был неплохим, но потом начинались разные штуки, вроде «купите подписку, чтобы сохранять песни офлайн, добавить больше песен, собрать избранное. И как-то желание пользоваться этими штуками отпадало. А ещё, во многие нельзя добавить свои песни. Для меня, как автора, это тоже было важно.
Вайб-кодинг
Итак, мне 35, я открываю ChatGPT и просто спрашиваю, а что такое Codex, а можно ли написать с ним приложение на Android, а что, если это будет, например суфлёр для музыкантов?






Сохранил для истории. Прокручивать чат на несколько недель вверх - та ещё задачка. Вангую, кто-то поленится прокутить карусель =)
Через 15 минут у меня был первый «прототип» приложения. Криво, косо, но работает. И меня это очень впечатлило. Я не написал ни строчки кода и получил рабочую вещь! Да ладно?!
Под впечатлением, я начал работать с тем, что получилось и стараться его улучшить, в основном, по собственным ощущениям и пожеланиям. Процесс всё так же увлекал. Причём, сначала я не планировал для него какое-то будущее за пределами моего телефона, но через пару дней получилась забавная штука, которой я захотел поделиться с парой друзей. И получил хороший отклик, мне сказали, что это очень удобно и они будут им пользоваться!


Так выглядела версия экрана сценического режима эпохи, когда я решил делиться приложением
Разработка
До определённого момента, я просто старался добавить знакомые функции, но во время теста стало понятно, что этого недостаточно. Есть прокрутка, есть скорость прокрутки, но точности не хватает. Тогда я решил, что мне нужна функция, с помощью которой, можно было бы добавить приблизительное время песни, для того чтобы скорость рассчитывалась исходя из него. Стало лучше, но всё равно не идеально. И борьба за точность продолжилась. Но, не сразу…
Можно сделать замер по затраченному времени. А если знаете, сколько времени у вас уходит на песню, то можно сразу ввести значение. Я записывался на диктофон, выставлял время и сравнивал. Возможно, это не самый лучший способ, да...
В процессе оказалось, что 6000 строк кода в MainActivity это не очень и как будто бы надо с этим что-то делать. И начался рефакторинг. Огромная трудоёмкая работа, полезная… результаты которой не увидит практически никто. Зато в последствии это дало больше свободы в работе – стало не так страшно что-то менять, добавлять новые функции, заниматься дизайном, а после редизайном приложения.
Философия
Также, в процессе работы, начала, простите за громкое слово, проявляться философия проекта. Например, базой для себя я решил сделать offline-first и мысль о том, что «Всё уже у тебя». Локации для выступлений могут быть очень разными, в том числе бары в подвалах, загородные дома и дачи. Даже парковка! Поэтому очень важно, чтобы твой репертуар всегда был тебе доступен. Даже если ты не в «труднодоступном» месте, никто не застрахован от падения интернета.
Следующие основополагающие принципы пошли из базового. Например, аккаунты оффлайн-приложению, по сути, не нужны. Есть твоё приложение и песни в нём. Чего ещё желать?
А вот отсутствие подписки – немного другая история. Да это выливается из offline-first. Но, я считаю, что твой суфлёр – это такой же инструмент, как тюнер и каподастр. И мне не нравится идея того, что каждый месяц тебе продают одно и то же приложение, твои песни и твою работу, проделанную с ними. Никто не платит за молоток каждый месяц просто для того, чтобы им владеть. Инструменты рулят, долой сервисы!
Поэтому, база приложения:
- Музыкант важнее, чем технология. Приложение должно помогать, а не управлять и командовать;
- Инструмент, а не сервис;
- Офлайн в первую очередь, регистрации не нужны, вся работа пользователя принадлежит пользователю;
- Нет функциям ради функций, надёжность важнее;
- Никаких лишних и подозрительных разрешений;
- Интерфейс должен быть простым, не отвлекать, не давить;
В сумме: Я не хочу ещё один музыкальный сервис. Мне нужен инструмент, который не требует интернета, не просит войти в аккаунт за пять минут до выступления, просто хранит мои песни там, где они должны быть и показывает текст, когда он нужен.
Функции
Давайте рассмотрим приложение поближе. В самом начале появились библиотека, редактор текста с аккордами, транспонирование и сценический режим – наш основной рабочий экран. А ещё, на ранней стадии появился «умный» перенос строк, для того чтобы адекватно перенести аккорды и текст при большом размере шрифта. То, что надо для людей со слабым зрением (меня, например).




Так выглядит главный экран в текущей версии. Акцентные цвета интерфейса меняются, цвета аккордов, текста, фокусной строки, есть светлая тема(тема сценического режима может настраиваться отдельно). А в конце - вариант экрана с большим текстом.
Вернёмся к погоне за точностью. Я добавил функцию прокрутки по приблизительной длительности песни, она повышала точность, но всё равно была не идеальна. Поэтому я стал думать, как ещё можно повысить точность? Я решил, что в тексты можно закидывать своеобразные якоря-чекпоинты. И тогда родилась одна из функций, которые, можно сказать, является фишкой приложения – Карта песни. С помощью неё можно настроить, в какой момент времени определённый блок песни проходит через фокусную зону - ещё одно изобретение для комфортного чтения текста. Собственно, та самая ситуация, когда текст тебе не нужен постоянно, но может быть нужен только в определённый момент. И он там будет!
Карту можно записывать двумя способами – с внешним источником - по аудиозаписи, если у вас, например, есть записи с репетиций, концертов или просто диктофонная запись исполнения. Второй – непосредственно внутри приложения – открывается рабочий экран с блоками, начинается процесс записи и блоки, по ходу исполнения, с помощью горизонтальной линии записи, выставляются по времени (минус способа – нужно тапать на кнопку «записи», чтобы отметить вход и выход из блока, но «разницу» можно скорректировать вручную)


Два варианта работы с Картой песни. 1. Внешний источник 2. Запись Карты внутри приложения
А ещё, в нём есть метроном. Просто факт. Потому что это была просьба первого человека, который воспользовался приложением. Сначала я сделал его через tone generator, звучало как будто кто-то ритмично нажимает кнопки на телефоне. В последствии, был улучшен с помощью двух звуков деревянного блока – один клик и один акцент, благодаря этому можно ввести любые ритмические рисунки, но пока в нём только 3/4 и 4/4.
А ещё, по просьбе пользователя появилась функция «Галя, у нас отмена!» в редакторе текстов. Раньше если ты ошибся, то ты ошибся, но теперь всегда можно откатиться. Удивительно, но я не замечал этого простого недостатка уровня слона... потому что пользовался импортом своих подготовленных файлов из txt.


1. Undo и Redo. 2. Однажды, до этого, был проведён "книжный тест", была загружена книга на 217к символов. Файл открылся, хоть и загружался заметно дольше. Прокрутка работала. Android один раз ругнулся, мол приложение не отвечает.
Что произошло за месяц
На текущий момент идёт второй месяц разработки. И я понял, что вайб-кодинг значительно упрощает работу, при условии, что вы знаете над чем работаете. А вот разработка в целом – не настолько простая вещь. За этот период я успел попробовать себя в роли продакт-менеджера, UX/UI-дизайнера, архитектора, тестировщика, технического писателя, аналитика, маркетолога, бренд-стратега, SMM-щика, копирайтера, комьюнити-менеджера, специалиста по публикации приложений, исследователя конкурентов и иногда — психолога собственного проекта. В общем, за короткий период я, можно сказать, прошёл практический курс по продуктовой разработке. А ещё, поверил в то, что можно делать хорошие вещи не только для себя.
Что дальше
К чему дальше движется проект StageLyrics? Сейчас я пытаюсь разобраться с регистрацией в Google Play Console, но несмотря на это, я считаю, что приложение должно быть доступным. Поэтому, если я и осилю этот этап, возможность скачать apk бесплатно останется, а покупка в приложении будет просто способом отблагодарить автора. А ещё, можно отблагодарить добрым словом, честным отзывом или сообщением о баге. Также, думаю о локализации.
А вот не планируется и не будет планироваться превращение инструмента в музыкальный сервис с подписками, аккаунтами и прочими прелестями, которые когда-то оттолкнули меня от других приложений.
Финал
Хочется пожелать всем, кто связан с музыкой и исполнением (да и тем, кто не связан, тоже, чего уж там) успехов в творчестве, будьте смелыми, уверенными и продолжайте делать этот жесткий мир более прекрасным!
"Извинитес, это телеграм"
Если вам интересно скачать приложение и познакомиться с ним, следить за судьбой проекта или просто поддержать «присутствием», можете вступить в тг-чат приложения t.me/stagelyrics
Если хотите просто познакомиться с приложением, но не заходить в тг-чат, я подготовил альтернативные варианты – Яндекс Диск и Google Drive:
Почему не GitHub? Честно, я пока ещё не умею, но, надеюсь, что и с этим справлюсь!
Спасибо за ваше внимание! И если StageLyrics поможет хотя бы нескольким музыкантам чувствовать себя спокойнее на сцене — значит, всё это время прошло не зря.
P.S. Маленький бонус, я сделал небольшой demopack, чтобы вы могли без труда посмотреть функционал. Внутри песни из моего сольного проекта с настроенными картами, вы можете открыть песню на любой площадке и посмотреть, насколько точно работает синхронизация. Загрузить demopack можно с помощью импорта резервной копии в настройках приложения.
P.P.S. Это моё первое приложение, но, надеюсь, что не последнее






















