Вторая часть моей серии о разработке независимых продуктов
Предыдущая статья описывала ресурсы для определения потребности, разработки независимого приложения и его выпуска с точки зрения iOS-разработчика. При ограниченных ресурсах мне удавалось делать только утилиты, доступные в Apple App Store.
В этой статье речь пойдёт о разработке полнофункционального продукта для разных платформ, возникающих проблемах и их решениях. Я расскажу, как постепенно построил полную экосистему продукта из официального аккаунта WeChat, мини-программы и приложения.
1. Цели продукта
В широком смысле цель продукта — это ценность, которую он даёт. Даже при наличии сценария использования продукт без ценности, который не приносит денег и имеет очень мало пользователей, едва ли имеет смысл создавать.
Можно начать ещё шире — с видения продукта…
Стоп. Пока не думайте обо всём этом, иначе продукт может так и остаться в ваших бесконечных фантазиях.
Когда ресурсы, люди и вложения ограничены, цель становится ясной: какие проблемы должен решать продукт или какие функции он обязан предоставлять?
Например, когда я создавал File Manager, у MVP была чёткая цель: передавать файлы между телефоном и компьютером.
После завершения MVP естественным образом появились другие требования. Часть пришла из моих планов на продукт, но больше — из отзывов пользователей:
- 1.0.0 Передача файлов между телефоном и компьютером
- 1.1.0 Просмотр или воспроизведение изображений, видео- и аудиофайлов
- 1.2.0 Группировка, перемещение, удаление, сжатие и отправка файлов
- 1.3.0 Улучшение проигрывателя
- 1.4.0 Добавление проверки безопасности: графические ключи и биометрия
- 2.0.0 Добавление встроенных покупок
- 2.1.0 Добавление сканирования документов
- …


Выберите цель. Она не обязана быть большой, но должна быть выполнимой. Сосредоточьтесь на чём-то одном и продолжайте, даже если кажется, что это ошибка: как узнать, не закончив ◔ ‸◔? Сначала закончите, потом разберите результат.
2. Прототипы продукта
В предыдущей статье я рассказывал, что попробовал много инструментов прототипирования и пришёл к выводу: за время создания прототипа я успел бы собрать экраны с помощью xib.
Здесь я себе противоречу ,,Ծ‸Ծ,,
Такой ход мыслей понятен, если вы делаете личную утилиту без дальнейших планов и хотите лишь закончить её и выпустить.
По мере развития продукта подход «сделал шаг — подумал о следующем», без прототипа и плана, создаст серьёзные трудности для дальнейшей разработки. Проектирование прототипа — это на самом деле упорядочивание логики продукта.
Вот несколько инструментов прототипирования. Сейчас я чаще всего пользуюсь MockingBot.
3. Управление проектом
После самостоятельной разработки и выпуска iOS-приложения я заметил серьёзную проблему: у меня не было никакого представления об управлении проектами. Работал, когда было время или вспоминал, и ничего не делал, когда ленился.
Это был мой продукт, который я сам проектировал и разрабатывал. В MVP, скорее всего, не было платящих пользователей, поэтому я не чувствовал ответственности перед ними.
Это сильно замедляет проект. Долгая работа без плана может даже погубить его.
После нескольких лет управления итерациями на работе я обнаружил, что инструменты управления проектами хорошо подходят и для личных проектов. Когда есть чёткие цели продукта и логически согласованный прототип, разбить работу на задачи уже нетрудно.
Для управления проектом я использую coding.net; там же можно хранить исходный код.

Разбивайте задачи на части, измеряемые часами. Так проще ими управлять и писать тест-кейсы. Сейчас у меня привычка заканчивать тест-кейсы до написания кода. Это необходимо.
Прототип упорядочивает логику продукта, а тест-кейсы — детали реализации. Полные тест-кейсы помогают реализовать правильную бизнес-логику ✅ и предотвратить множество ошибок в ней ❌.
4. Выбор технологий
До сих пор всё это было подготовкой; к разработке мы ещё не приступили. Главная трудность в том, что разработчик один — я, а построить хочется полную экосистему из официального аккаунта WeChat, мини-программы и приложения.
Нужны навыки разработки мини-программ, iOS и Android. Освоить язык программирования не так трудно, но реализовать одну бизнес-логику трижды — это втрое больше усилий. Это явно нереалистично.
Обычно можно использовать веб для нескольких платформ или даже отказаться от приложения и сосредоточиться на официальном аккаунте с мини-программой. На раннем этапе, когда требования к продукту нужно быстро проверять, это вполне разумный подход.
Небольшой поиск показывает, что кроссплатформенных технологий немало. Чтобы создать приложение и мини-программу с одной кодовой базой для трёх платформ, можно использовать Uni-App. Он основан на фронтенд-фреймворке Vue.js, а поддержка iOS и Android реализована через Weex.
Для личных или небольших коммерческих продуктов этого достаточно.
5. Управление данными
Когда подход к мини-программе и приложению выбран, остаётся ещё один важнейший вопрос: где хранить данные?
Для утилиты достаточно локального хранения в приложении. Но что, если цель — информационная платформа с полноценной системой пользователей или даже более сложное сообщество с пользовательским контентом?
У Uni-App есть собственный сервис uniCloud. Серверную часть можно разрабатывать на JavaScript, а мини-программы и приложения могут пользоваться сервером без доменного имени.
Я выбрал другой подход: разместил данные на бессерверной платформе LeanCloud. Мини-программа и приложение обращаются к размещённой базе данных через JavaScript SDK LeanCloud.
Её тариф для разработки поддерживает 30 000 бесплатных API-запросов в день, а также предоставляет SMS-сервисы. Этого достаточно для создания системы пользователей, загрузки пользовательских данных и получения данных платформы.
Когда запросы превышают лимит тарифа для разработки, значит, у продукта уже есть определённая пользовательская база. Думаю, к этому моменту доход от трафика должен покрыть коммерческий тариф с оплатой по факту использования.
Хитрый способ добыть данные
Что делать, если вы хотите создать погодное или информационное приложение, но у вас нет данных о погоде или новостей?
В Китае много площадок с API, в том числе:
и другие.
На этих площадках есть и платные, и бесплатные API.
Если у продукта есть хороший способ монетизации трафика, рассмотрите платные API.
Если нет, можно использовать бесплатные лимиты. Но пробные 100 запросов легко потратить ещё при тестировании. Что тогда?
Можно объединить бессерверную базу данных LeanCloud с площадкой API. Например, для ежедневной погоды сначала запросите базу. Если данных нет, получите их на площадке, а затем сохраните в базе.
Но что, если 100 запросов всё равно не хватит на все города? Не изменяйте духу бесплатных возможностей и зарегистрируйтесь на нескольких платформах.
6. Запуск и эксплуатация
К этому моменту разработка мини-программы, приложения и сервера закончена. Как всё запустить?
С мини-программами сравнительно просто: на платформе официальных аккаунтов WeChat следуйте инструкциям по оформлению мини-программы.
Для выпуска на iOS нужен платный аккаунт разработчика. Это барьер, но для долгосрочной работы я рекомендую оформить его на сайте Apple для разработчиков. Сейчас это просто: скачайте приложение Developer на iPhone и оплатите там.
Для распространения на Android нужна регистрация авторского права на ПО. Обычная заявка может занять 1-2 месяца; также можно заплатить стороннему посреднику за оформление.
Продолжая тему бесплатных возможностей: где хранить изображения, аудио и видео для рекламно-информационных блоков в приложении и мини-программе?
Медиатека официального аккаунта может решить эту задачу. Сохраните там изображения, аудио и видео, получите их исходные URL, и приложение с мини-программой смогут к ним обращаться.
7. Получение дохода
Простой способ монетизировать трафик — реклама.
Однако требования платформ к участию издателей постоянно растут, из-за чего независимым разработчикам трудно подключить рекламу.
Uni-App предлагает подключение в один клик; смотрите документацию.
Когда официальный аккаунт наберёт аудиторию, он может включить рекламные места внутри статей.
Мини-программа может включить монетизацию для издателей после достижения 1000 уникальных посетителей.
8. Итоги
Теперь мы построили экосистему из официального аккаунта WeChat, мини-программы и приложения, о которой говорили в начале.
Следуя этим шагам, я прошёл этот процесс для трёх продуктов. Отсканируйте коды, чтобы попробовать:
