Когда-то давно я думал, что вот напишу приложение, выложу, а дальше оно как-нибудь само наберёт популярность, взлетит в чарт, принесёт денег. Так бывает, но готовиться нужно к тому, что придётся заниматься «выводом на рынок и продвижением», и на это потребуются время и силы. В прошлой статье я рассказал, как идея превратилась в продукт, а сегодня покажу, что сделал, чтобы он дошёл до своих пользователей. Для продвижения нужен хоть какой-то план. О том, что делать в теории, уже написано много раз. Давайте посмотрим, что у меня получилось на практике. Приложение оформилось, но хотелось понять, насколько оно полезно другим — надо было дать кому-то попользоваться. В Твиттере предложил знакомым посмотреть, как оно работает на их проектах, только с одним условием: они поделятся результатами визуализации. Откликнулись ребята из Яндекса, HH.ru, Перекрёстка, Reveal.cam, Тинькофф и ещё несколько человек.  Кастдев оказался полезен с двух сторон: появился запрос на фичи (например, добавить легенду про цвета) и показал полезность программы. Можно релизить. Пользовались приложением и разработчики в Додо Пицце. Так, например, оно помогло при ресёрче для App Clip: смотрели, сколько кода мы можем поместить в него, что можем ещё выкинуть, что случайно попало в билд через транзитивные зависимости. Исправил самые частые проблемы, поправил приоритеты для будущих задач и приступил к релизу. На подготовку к релизу смело закладывайте неделю — предстоит много разной работы по оформлению страницы в App Store. Самый надёжный способ найти покупателя — показаться ему в результатах поиска. Поиск в App Store должен попадать в ключевые слова, а лучше всего это работает, когда нужное слово есть прямо в названии. Раз мы визуализируем билд с помощью графика, то Build Graph вроде выглядит неплохо и это примерно то, что люди могут искать. Ещё один вариант — попробовать сделать так, чтобы люди случайно находили приложение. Самый простой — добавить к названию дополнительные слова. Build Graph for Xcode вполне выполняет эту задачу (и даже проходит ревью у Apple). В названии могли бы быть и другие слова: chart, dependency, log, но звучными был именно Build Graph, а эти ушли в дополнительные ключевые слова. Добавил ещё синонимов про скорость компиляции и слов из популярных соседних приложений. С этим можно будет поиграться в будущем и посмотреть, что лучше работает.  Сначала попробовал нарисовать сам, первый вариант был такой :D Полная ерунда, но это позволило выгрузить билд в TestFlight. Понял, что у меня много других задач, лучше сэкономить время. Предложил дизайнерам на работе попрактиковаться в рисовании иконок для Mac-приложения. Ребята воодушевились, поспрашивали про приложение, его цель и пользу для людей и ушли на денёк хакатонить дизайн.  Первый же макет попал метафорой в точку. Для скриншотов насобирал основных фич — даже удивился, сколько их получилось в итоге. Поддержал сквозным ходом с линией. Кажется, такое оформление идёт всему приложению и можно поддержать его везде. Возможно, к следующему разу будет проще написать UI-тесты, которые сгенерируют нужное количество скриншотов относительно одного проекта. Чтобы понять, какую назначить цену, нужно определиться с аудиторией приложения. Это программа для профессионального использования и для самых больших проектов. Очевидно, у ребят должны быть деньги и можно не дешевить. Скорее всего, приложение будут покупать компании, а не индивидуальные разработчики. Аналогов нет, опенсорс-решения намного слабее.  Инстинктивно кажется, что если поставить цену меньше, то больше людей скачает приложение, при этом общий доход может поменяться в любую сторону. Но раз мы выяснили, что аудитория довольно узкая, то в этом нет особого смысла: те, кому приложение действительно полезно, купят его при любой цене. Поиграться с ценообразованием всё равно надо.  Приложения для Mac исторически более дорогие, чем приложения для айфонов. Моё только запускается и фич немного, но оно уже приносит сильную пользу, поэтому установил цену в $30. Small Business Program уменьшает комиссию с 30 до 15%, этим надо пользоваться.  Высокая цена приводит к тому, что даже при небольшом количестве покупок получается неплохо зарабатывать, что мотивирует поддерживать приложение: Самой интересной моделью для приложения было бы дать возможность скачать бесплатно и посмотреть граф с какими-то ограничениями: так человек увидит пользу для себя и если заинтересуется, то сможет заплатить за дополнительную функциональность. Это даст хорошее количество установок на входе и возможность допродаж существующим пользователям.  Прикручивать встроенные покупки было некогда из-за ситуации в мире, поэтому я поторопился с релизом и сделал приложение просто-платным, а на запуске даю «триал» в виде бета-тестирования через TestFlight. Тестировщики мне же всё равно нужны. Скорее всего, монетизация будет меняться: компаниям не очень удобно покупать лицензии через AppStore, а продажи через ключи и эквайринг на сайте ещё надо прикрутить. У каждого пет-проекта наступает момент, когда создателю просто надоедает им заниматься, и он идёт делать что-то другое.  Спасти проект от такой смерти может опенсорс, чтобы все могли поддерживать и накидывать ишью. Чтобы идти в эту сторону, надо будет разобраться с лицензиями, но вряд ли это хорошо скажется на монетизации. А вот если придумать систему плагинов, чтобы каждый мог дописать визуализацию для своей билд-системы, то проект может ждать интересное будущее: адаптацией под новые версии билдов смогут заниматься все, при этом аудитория вырастет. Мне было интересно, хватит ли десяти лет опыта в разработке, чтобы пройти ревью с первого раза. Должен признаться, что нет.  Причин отказа было несколько: вылет на старте. Я запрашиваю доступ к файлам в DerivedData, но не обработал сценарий, когда пользователь разрешения не даёт. Это был чуть ли не первый написанный код — обработкой негативного сценарий тогда не занялся, а потом забыл;  в приложении могут быть только необходимые entitlements. Когда я добавлял Firebase, то дал доступ и для client, и для server, на что мне и сделал замечание ревьювер. Оставил только client. Ревью хотелось пройти побыстрее, поэтому, даже просыпаясь ночью, я проверял почту и правил замечания. Пройти ревью за первую ночь не успел, но за следующую приняли без замечаний. В итоге от первого коммита 10 октября до релиза 7 марта прошло 5 месяцев. Не могу сказать, что я сильно активничал: последний месяц программа почти не развивалась и зарелизилась лишь волевым усилием, когда понял, что разработка застопорилась в отвратительном состоянии: и дальше не двигается, и пользы не приносит, хотя может.  Зарелизил я на следующий же день: рассказал у себя в Твиттере, в канале Dodo Mobile и закинул в iOS Good Reads. Маркетолог скажет, что надо больше активностей и все за раз, но у меня хватило сил только на такой запуск. Самая простая продажа, когда люди заходят в App Store, видят программу и покупают. Варианта два: либо они заметили приложение на главной странице, либо смогли найти через поиск. Важнее всего для поиска название приложения, с ним мы уже разобрались. Что ещё влияет на продвижение? Для поиска важно количество скачиваний и оценки. Если бы приложение было бесплатным, то можно было бы попросить друзей и коллег поставить первые оценки, остальную работу сделают будущие скачивания. Для платного приложения это проблема, ведь бесплатно подарить можно лишь 100 промокодов, а они пригодятся для других задач. Критически важно добавить в приложение SKStoreViewController, чтобы запрашивать оценки у тех пользователей, которые купили приложение.  Публичный тест дал возможность попробовать приложение бесплатно: спустя месяц в публичном тестировании участвует 200 человек. Можно будет рассказывать им о скидках или придумать какой-нибудь способ мотивировать к покупке. Можно податься в разные подборки: например, у Xcode есть подборка с набором инструментов для разработки, а в App Store на Mac есть целый раздел для разработчиков. Чтобы попасть в такую подборку, надо будет написать напрямую в Apple. Пока отложу это на несколько версий попозже, когда всё будет стабильно работать (смотрите, какое у меня искажение на откладывание, не надо так).  Можно попасть в подборку приложений Setapp. Но для этого нужен сайт, юрлицо и т.п. Займусь этим после статей, сайта и нескольких исправлений ключевых вещей, когда приложение будет в отличной форме. Впрочем, откладывать по надуманным причинам — зло, которое мешает инди-разработчику. Он нужен, чтобы программа находилась в вебе, чтобы можно было давать ссылку, чтобы подробно рассказывать о преимуществах приложения. Я мало что понимаю в написании сайтов, поэтому сел накидывать первые варианты в Фигме. Тут же понял, что хочется тёмную тему, и чтобы скриншоты переключались под цвет окружения. Попробовал накидать разные варианты компоновки (правый позже станет десктопной версией). В это же время впервые появляется идея снять видео, в котором показываю и рассказываю про программу, как было при презентации Hey. Минимально мне надо показать логотип, название, скриншот, дать описание и мои контакты. После того как настроил сайт и написал простенькую заглушку, захотелось большего, например, рассказать про все фичи приложения. Немного flex, picture и медиа-условий, всё очень просто. Мне нравится идея, что приложение может аккумулировать вокруг себя всю тему про ускорение билда. Оно пока не умеет активно сообщать о проблемах, но юзер-стори по задаче есть, поэтому собираю ссылки на статьи и другие инструменты, которые могут помочь. В конце адаптирую сайт для десктопа и красуюсь максимально большой картинкой для 5k мониторов. Просто потому что могу. Уже запланировал переделку, снова по юзер-стори: надо взять граф неоптимизированного приложения и прямо на сайте показать, как я пользуюсь приложением, какие выводы делаю по графу, как правлю и что получается в итоге. Из этого же можно сделать отдельную статью, про это же можно снять видео. Самое сложное — создавать картинки, а форматов под них может быть очень много.  Посмотреть на сайт. Обязательно попереключайте тёмную тему и порезиновите его :-) В App Store приложение описал, для поисковых систем как-то показались, пора заняться активностями по привлечению людей. Теперь надо попасть в поле зрения нужных людей. Удобно, когда аудитория небольшая и все «места обитания» ты и так знаешь.  Хорошей точкой для входа могут быть статьи про ускорение времени компиляции и многомодульность: они живут долго, хорошо ищутся в интернете, люди их читают, а если в конце будет ссылка на приложение, то это может создать хороший входящий поток. Писать надо на английском на Medium, а прямо сейчас вы читаете статью на Хабре. Я запланировал как минимум три статьи: Как писал приложение; Как продвигал приложение (она перед вами); Как читать граф, какие проблемы мы увидели и как решили.  Можно записать видео, где в реалтайме показать, как я пользуюсь программой, как анализирую граф и какие выводу делаю. Будет отличным материалом для сайта, но стоит делать на английском. Для iOS-разработки есть еженедельные рассылки, там часто бывает реклама приложений. Можно попробовать предложить авторам, авось получится.  Я подал заявку Dave Verwer, в конце каждого письма есть ссылка Suggest a link. Ответил быстро, но приложение как-то странно заработало на его проектах и он пока не решился опубликовать. Надеюсь в новой версии получится исправить критичные баги, у Дейва получится построить интересный граф и в рассылке приложение появится.  В русском сегменте стоит посмотреть на популярные каналы в Телеграме про iOS-разработку. Например, вот пост в iOS Good Reads и больше 5.5 тысяч просмотров.  Сам я ничего не делал, но оказался в дайджесте mbltdev.ru. Если бы составил список заранее и написал авторам, то смог бы понять источники переходов, но я про это совсем забыл. С распространением может помочь и Твиттер: нормальный тред про ускорение может хорошо поретвититься, но писать надо на английском, так охват выше. Авторов, которые могут ретвитнуть, можно искать среди статей про время компиляции. Ну и своих знакомых попросить поретвитить. В Твиттере стоит и отдельный профиль завести: можно будет аккумулировать все статьи про модульность и занять целое направление про скорость билда. Для людей будет ценность не только в программе, а во всей теме, что может притягивать.  Можно точечно писать хедам разных компаний: программа для них — полезный инструмент, могут рассказать о ней разработчикам и купить несколько лицензий для компании.  Всему продвижению ужасно мешают внешние условаия: Твиттер заблокирован, активности там мало, новые профили создавать нельзя, а значит и доступ к иностранной аудитории отваливается. В рассылку меня могут не добавить, потому что я разаботчик из России, Setapp — украинская компания, а дополнительный эквайринг не получится подключить или он будет недоступен для зарубежных коллег. Мир тесен, лучше торговать. Первую важную точку я прошёл: приложение появилось в App Store и можно начать заниматься продвижением. Сначала обновления, скорее всего, будут исправлять проблемы по фидбэку от пользователей (например, просят возможность менять размер шрифта). Планов на мелкие доработки навалом: хочется добавить полную навигацию с клавиатуры, проработать доступность, ускорить парсинг логов до десятых секунды.   Есть планы и на большие фичи. Хочется дать возможность раскрашивать граф, чтобы -отделить внешние зависимости от внутреннего кода или фичевые фреймворки от базовых. Хочется сделать сквозной процесс по работе с билдами. Я могу мониторить DerivedData и смотреть, сколько билд занимает в сумме за день, чтобы накапливать статистику во времени и тем самым наглядно показывать пользу от работы приложения. Или можно показать, какие связи и модули появились за последний квартал или год — должно быть очень удобно для долгосрочной работы. Было бы круто сделать внутри приложения TODO-лист с задачами по оптимизации. Это может приводить к прикольному процессу, когда после анализа билда у вас автоматически генерируется ряд задач на оптимизацию, а последующие прогоны самостоятельно анализируются и задачи закрываются.  Научиться работать с очень большими проектами, когда граф вылазит за пределы экрана и становится уже неудобно. Я не измерял время, которое потратил на приложение. От начала до конца прошло 5 месяцев, работал вечерам по 2-3 часа и всего пару раз в неделю. Суммарно, наверное, набегает на 300-500 тысяч рублей, если учитывать и сайт, и статьи, и прочее.  Важно оценить и то, чем я заплатил лично: не пошёл в зал, не вышел погулять, не поиграл с сыном, не отдохнул после работы. Но и что-то нематериальное получил: проект в копилочку, строчку в резюме, удовольствие от запуска и зарабатывания денег не зарплатой, историю в своей жизни.   Получится или нет — пока неизвестно, но если получится, то я обязательно напишу об этом ещё. Подписывайтесь в Телеграме на Dodo Mobile или на меня в Твиттере. Скачать Build Graph for Xcode Head of Mobile at Dodo Engineering