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

Как разработчик мобильных приложений, я, конечно, больше всего мечтаю написать приложение и спокойно смотреть, как капают деньги ( ͡° ͜ʖ ͡°).

С какими проблемами можно столкнуться, создавая приложение в одиночку? Недавно я выпустил собственное приложение и хочу поделиться проблемами, которые встретил, и своими решениями.

1. Определите потребность

У каждого немного своя причина для создания независимого приложения.

Если мыслить масштабно, вы можете увидеть острую потребность людей, решение которой изменит мир; не хватает только программиста.

А если скромнее — возможно, вам просто хочется увидеть своё приложение в App Store. Это может быть эксперимент с новой технологией: после появления расширений Today в iOS 8 вышло много необычных приложений на их основе. Или это может быть утилита, устраняющая неудобство в вашей жизни, например файловый менеджер или погодное приложение с продуманными функциями.

Найдите потребность, большую или маленькую. Она даст вам мотивацию продолжать.

Я создал приложение для управления файлами под названием File Manager, исходя из потребностей своей жены.

File Manager превращает телефон в сервер. Другие устройства в той же сети Wi-Fi могут управлять его файлами через браузер: организовывать папки, копировать и перемещать файлы, загружать и скачивать их.

Определившись с этой потребностью, я потратил примерно три месяца на доведение проекта до выпуска. По пути немного изучил Swift.

2. Прототипы и взаимодействия в приложении

Когда есть потребность и её решение, у вас, вероятно, уже складывается примерное представление о прототипе и действиях пользователей. Следующий шаг — определить конкретные экраны и взаимодействия.

Я попробовал несколько инструментов прототипирования, а затем отказался от них.

Оказалось, что за время освоения инструмента прототипирования и создания макетов я успел бы собрать экраны с помощью xib. В итоге проблему прототипа я решил набросками от руки.

Позже, создавая другие продукты, я понял, что прототипы необходимы. Прототипирование — это на самом деле процесс упорядочивания логики и проверки её внутренней согласованности.

3. Что делать со всеми маленькими иконками?

После подготовки прототипа у меня появилось общее представление о структуре проекта. Но помимо кода оставалась проблема, с которой неизбежно сталкивается каждый независимый разработчик!

Где взять все маленькие иконки для проекта?

Вот несколько библиотек иконок, которыми я пользовался:

  • Библиотека иконок Alibaba → Полные наборы векторных иконок со свободно настраиваемыми цветами и размерами — щедрый ресурс. Для коммерческого использования всё же нужно разрешение автора.
  • icons8 → 56 500 бесплатных плоских иконок! Есть иконки для разных платформ и даже приложение для Mac.
  • iconfinder → Тоже предлагает полные наборы иконок, с более явно выраженной коммерческой моделью.

4. Тестирование и бета-тестирование

В компании тестировщики, коллеги по продукту и другие участники команды помогают улучшать приложение. Как независимому разработчику находить и предотвращать как можно больше ошибок как можно раньше?

4.1 Самостоятельное тестирование

Теперь работу, которую я раньше передавал тестировщикам, приходится делать самому. Помимо ручного тестирования можно вырастить и тестовую обезьянку, которая поможет с проверками.

4.2 Поиск бета-тестировщиков

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

Бета-пользователи не только находят ошибки. Их новые запросы и предложения могут ещё больше помочь расширить и улучшить приложение.

4.3 Распространение тестовых сборок

Если получить идентификаторы устройств бета-тестировщиков несложно, можно воспользоваться платформой для размещения бета-сборок, например Pgyer или fir.im. Действуют ограничения по устройствам.

Если идентификаторы устройств получить трудно, можно использовать Apple TestFlight, открытый после iOS 8, с числом мест для бета-тестирования до 10 000.

5. Снимки экрана для App Store

Почему снимкам экрана для выпуска посвящён отдельный раздел? У независимых разработчиков сравнительно мало каналов продвижения. Снимки и описание на странице продукта в App Store — это вход и витрина приложения.

Если эти снимки выглядят плохо, мы можем потерять посетителя, который только что нашёл приложение.

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

5.1 Снимки в симуляторе

Можно снимать экраны приложения прямо в симуляторе, хотя результат может выглядеть немного грубовато.

5.2 Немного оформления

Рекомендую бесплатный сайт shotbot. Загрузите материалы, и он создаст полный набор снимков продукта в едином оформлении.

Примечание от 2022-04-11: Позже я написал приложение для Mac специально для создания снимков к собственным выпускам в App Store.

6. Другие использованные ресурсы

При работе над определёнными взаимодействиями и дизайном сторонние инструменты и готовые иконки иногда не вполне соответствуют вашим желаниям.

Тогда редактируйте изображения сами!

Конечно, большинство разработчиков не особенно сильны в Photoshop, а некоторые вообще им не пользовались. Что делать?

Вот два сайта: Online PS и веб-редактор Meitu

Простую обработку изображений можно выполнить в браузере, не скачивая тяжёлое ПО Adobe. Для тех из нас, кто не очень дружит с Photoshop, это хорошая новость.

Помимо редактирования изображений, головной болью может стать и сама иконка приложения. Ещё один сайт, который я рекомендую, — MakeIcon: загрузите логотип 1024×1024, и он автоматически создаст иконки всех остальных размеров. Поддерживается даже iMessage в iOS 10.

7. Итоги

Я завершил разработку с помощью имеющихся ресурсов, без дизайнера интерфейса. Если у вас есть дизайнер, можете спокойно направляться к выходу  ̄ヘ ̄.

Я давно хотел сделать собственное приложение. По-настоящему взялся за него лишь недавно, когда разобрался со всем необходимым. Главное — наконец появилась чёткая потребность, которую нужно решить, а по пути я немного изучил Swift.

Во время разработки у меня была даже неделя, когда я почти не писал код. Я понял, что при создании независимого приложения именно потребность помогает не бросать работу. Её масштаб не важен; важно решить проблему.

По мере разработки требований становилось больше: обмен через AirDrop, интеграция iCloud и разработка ShareExtension всё ещё не были закончены. Вперёд, улучшайте понемногу! ʘʚʘ (Я ни за что не признаюсь, что изначально делал это приложение, чтобы делиться своей «коллекцией.avi» между ПК, телефоном и iPad.)

Вот ссылка на моё приложение: Самый простой способ управления файлами — File Manager

Примечание от 2022-04-11: Приложение больше не находится через поиск. Не найдя хорошего способа монетизации, я продал его аутсорсинговой компании. Продажа дала много поводов для размышлений; подробнее об этом в следующей статье.

Исходная статья была опубликована на Jianshu. Позже мой аккаунт Jianshu взломали, а другие статьи постоянно блокировались. Теперь я переношу все записи блога на github.io.