Вторая часть моей серии о разработке независимых продуктов

Предыдущая статья описывала ресурсы для определения потребности, разработки независимого приложения и его выпуска с точки зрения 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 Добавление сканирования документов
  • …

Исходный снимок File Manager: просмотр файлов и функции управления

Исходный снимок File Manager: дополнительные инструменты для файлов и интерфейс

Выберите цель. Она не обязана быть большой, но должна быть выполнимой. Сосредоточьтесь на чём-то одном и продолжайте, даже если кажется, что это ошибка: как узнать, не закончив ◔ ‸◔? Сначала закончите, потом разберите результат.

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 Alibaba Cloud

Маркетплейс API Tencent Cloud

Маркетплейс API Baidu Cloud

Juhe Data

EastApi

и другие.

На этих площадках есть и платные, и бесплатные API.

  • Если у продукта есть хороший способ монетизации трафика, рассмотрите платные API.

  • Если нет, можно использовать бесплатные лимиты. Но пробные 100 запросов легко потратить ещё при тестировании. Что тогда?

Можно объединить бессерверную базу данных LeanCloud с площадкой API. Например, для ежедневной погоды сначала запросите базу. Если данных нет, получите их на площадке, а затем сохраните в базе.

Но что, если 100 запросов всё равно не хватит на все города? Не изменяйте духу бесплатных возможностей и зарегистрируйтесь на нескольких платформах.

6. Запуск и эксплуатация

К этому моменту разработка мини-программы, приложения и сервера закончена. Как всё запустить?

С мини-программами сравнительно просто: на платформе официальных аккаунтов WeChat следуйте инструкциям по оформлению мини-программы.

Для выпуска на iOS нужен платный аккаунт разработчика. Это барьер, но для долгосрочной работы я рекомендую оформить его на сайте Apple для разработчиков. Сейчас это просто: скачайте приложение Developer на iPhone и оплатите там.

Для распространения на Android нужна регистрация авторского права на ПО. Обычная заявка может занять 1-2 месяца; также можно заплатить стороннему посреднику за оформление.

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

Медиатека официального аккаунта может решить эту задачу. Сохраните там изображения, аудио и видео, получите их исходные URL, и приложение с мини-программой смогут к ним обращаться.

7. Получение дохода

Простой способ монетизировать трафик — реклама.

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

  • Uni-App предлагает подключение в один клик; смотрите документацию.

  • Когда официальный аккаунт наберёт аудиторию, он может включить рекламные места внутри статей.

  • Мини-программа может включить монетизацию для издателей после достижения 1000 уникальных посетителей.

8. Итоги

Теперь мы построили экосистему из официального аккаунта WeChat, мини-программы и приложения, о которой говорили в начале.

Следуя этим шагам, я прошёл этот процесс для трёх продуктов. Отсканируйте коды, чтобы попробовать:

Исходные QR-коды исторических продуктов; доступность могла измениться