OffshoreLabs Studio
RUEN
Меню

Разработка приложений с ИИ · Часть 2

Жена попросила приложение. Пришлось осваивать iOS

После ManiTalk у меня появилось одно очень полезное знание: я могу придумать приложение и с помощью ИИ довести его до рабочего состояния, пусть через ошибки, копирование кода туда-сюда и несколько месяцев возни. Но могу — на телефоне стоит, работает, люди пользуются.

Для человека, у которого в голове годами лежит список из ста идей, это довольно опасное открытие))

Раньше очередное «а вот бы сделать…» можно было спокойно отправить в ту же мысленную папку, где уже лежали предыдущие девяносто девять, а теперь у этой мысли появилось продолжение: а почему, собственно, я до сих пор этого не сделал?

Но своя голова — хорошо, а две головы — хорошо-хорошо. Главный генератор простых идей, которые потом превращаются в непростые задачи — моя жена А.

В тот раз она попросила приложение-напоминалку. Простенькое такое, прям на 10 строчек кода тебе, дорогой)))

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

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

За годы жизни мы уже достаточно хорошо разобрались, что и как делается, многое просто лежало где-то на подкорке. Только у этой системы хранения был один недостаток: она иногда забывала напомнить хозяину, что пора шевелиться, а каждый такой пропуск стоил нам денег или беготни.

Например, учебные визы детей заканчиваются в разное время: одному оформляли раньше, другому позже, разница в несколько месяцев. Чтобы проверить дату, надо найти паспорт, найти в нём нужный штамп и разглядеть, что там написано. Допустим, нашёл, посмотрел — вроде ещё есть время.

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

И это мы пока посмотрели только один документ и только одного ребёнка.

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

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

А. это надоело, и она сказала, что заколебалась держать всё в голове: давай сделай приложение, которое будет это всё учитывать.

Логично. Я же теперь умею делать приложения, а она стала «женой айтишника». Сам виноват, нечего было показывать))

С Android я уже немного освоился, но у всей семьи айфоны, а делать семейную аппку, которую никто дома не сможет поставить на свой телефон — явно фиговая затея. Соответственно, пришлось скачивать Xcode и знакомиться с разработкой под iOS.

С техникой Apple у нас давно сложились хорошие отношения: MacBook, часы, телефоны, привычная экосистема. Только знакомство с айфоном в качестве пользователя мало помогало понять, как теперь самому сделать для него приложение, это я уже проходил с Android, и, похоже, предстояло ещё одно такое развлечение.

Зато был и приятный момент: к этому времени я нашёл Claude Code.

Ещё пока возился с ManiTalk, я начал пробовать инструменты, которые могли работать с кодом напрямую. Клод у меня работал через консоль: сам открывал файлы, читал, вносил изменения, запускал проверки. После моих бесконечных рейсов между чатом и Android Studio смотреть на это было очень приятно — значительная часть работы "мясным прокси" наконец отпала.

Я давал ему и ManiTalk на проверку: он находил ошибки, предлагал исправления, а я смотрел, что именно он нашёл и почему решил это менять. Где-то соглашался, где-то нет.

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

Так что от обязанности думать, переход на консоль меня не освободил, но хотя бы файлы теперь можно было не перекладывать руками))

С этим опытом мы и начали EasyStayTH.

Причём я с самого начала думал о коммерческом продукте: среди знакомых экспатов постоянно видел ту же историю со сроками, документами и календарями. Если нам это неудобно, наверняка и другим хотелось бы как-то облегчить себе жизнь.

И тут стало понятно, сколько всего спрятано внутри просьбы «сделай напоминалку».

Для своей семьи мы знаем привычные процедуры, а у другого человека может быть совсем другая виза, у третьего — ещё какие-то условия: где-то надо учитывать депозит, где-то — заранее готовить бумаги. Чтобы приложение действительно помогало, ему нужно знать, как всё это связано и в какой последовательности человек должен действовать, а визовые правила и бюрократия в Таиланде дадут фору по запутанности кому угодно, поверьте на слово!

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

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

И вот угадайте, что оказалось самым сложным в дизайне EasyStayTH под iOS? Прозрачные карточки. Liquid Glass этот их фирменный, блин!

Объяснить агенту, что карточки должны быть прозрачными, оказалось отдельным приключением. Это был вообще трэш: меняли параметры по одному, смотрели на каждую цифру, и примерно десять часов реального времени ушло на то, чтобы прикрутить liquid glass на iOS.

Десять часов. Карточки. Прозрачные.

А на Андроиде потом я на это потратил три слова: «Сделай карточки прозрачными» ))

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

Пока мы возились со всем этим, в проекте начали появляться документы.

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

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

Никакой большой системы документирования я тогда не проектировал, мы просто завели место для информации, без которой было неудобно работать: приложению понадобились правила — пришлось их собрать.

Примерно тогда же я начал записывать и собственные предпочтения: здесь делаем так, вот это учитываем, об этом каждый раз заново спрашивать не надо. В голове я воспринимал такие записи как свои скиллы: собрал в файлик, дал агенту прочитать, можно работать дальше. Скиллы агентов я тоже подгружал, их там в папке штук 500 было, вот только толку от них... ведь бОльшая часть самого приложения всё ещё жила только у меня в голове.

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

При этом приложение получалось: мы долго разрабатывали, тестировали, исправляли, потом перенесли EasyStayTH и на Android. В итоге аппка вышла в продажу, появились благодарные отзывы и даже первые платные подписчики!

Это тоже было очень приятное ощущение: ManiTalk уже показал, что я могу сделать работающую аппку, а здесь люди ещё и платили за то, что мы сделали. Семейное «заколебалась всё помнить» оказалось не только нашей болью))

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

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

И здесь напрашивается вопрос: если код пишет ИИ, то что именно делаю я?

В следующей серии — «Кто тут интеллект?». Поговорим, чем занят человек, пока машина прогромировывает))

Все части

  1. Работа мясным прокси: как я сделал первое приложение с помощью ИИ
  2. Жена попросила приложение. Пришлось осваивать iOS