Väiksemas ringis väiksemalt tuntud õlleäpi kõrval on mul tegelikult peas mõlkunud ka mõte üldisemast loendamise äpist. Juba ammu on mõlkunud. Et kui parajasti õlut pole, mida loendada, siis loendad vähemalt muid asju. Järel olevaid matepakke, mahutisse valatud pelletikotte, ostukontrollidesse sattumisi ja muid selliseid juhtumisi. On juba aru saada, et kõik see eeldab väiksemat või suuremat loendamise kiiksu. Võimalik, et sellele on mingi peenem nimi ka pandud, ladina keeles ja puha – ei tea. Aga ju mul siis kiiks on. Või on mul koodamise kiiks. Emb-kumb igatahes on. Lihtsalt kirjutamine läheb ka siia ritta arvesse. Kokkuvõtvalt – mingi kiiks on ja sellega loen teema – “Appi miks küll selline äpp!” – laualt maas olevaks.

Aastal 2025 sain lõpuks istuda rahulikult tootejuhi tooli ja anda arendajale töö ette. Jah, LLM on kohal ja see postitus ongi tegelikult sellest. Korra juba alustasin selle arensusprotsessi ülevaate/kokkuvõtte kirjutamist, aga see läks selliseks romaaniks kätte, et muutsin lähenemist ja teen lühidalt.
Jah, see on AppStores olemas. See oli omaette mentaalne eesmärk, et ma ei jää mingit seda väikest featuuri ja toda väikest muudatust lõputult nikerdama, vaid ühel hetkel on vahefiniš ja panen lihtsalt poodi üles.
Nüüd see lühike osa, et kuidas see arendusprotsess käis:
- SPEKK: ChatGPT-ga vestlemine, mille tulemus oli markdown formaadis spekk ja arendusplaan. Viimane on suht oluline, et saaks tükk-haaval liikuda. Päris nii ei saa, et annad paar laused LLM-ile ette ja ta teeb sulle mõtteid lugedes soovitud asja valmis. Samm-haaval liikumine on ka tehniliselt oluline – kontekstiaken ei ole väga avar.
- ARENDUS: Cloude Code käsurealt ise möllab koodibaasis. “implement gh issue #89”. Claude ise vaatab, mis githubis kirjas on, ise koodab valmis, ise jooksutab teste, ise parandab vigu, ise commitib. Klassikuid tsiteerides: “KOCMOC”!
- Miks üksi arendades github issued? Sest mõtteid on peas kogu aeg, mida veel ja mis järgmiseks. Nende kaudu on mingigi võimalus mingit ülevaadet säilitada ja plaane teha. Milestone v1.1, valin pikast rivist sinna minevad muudatused, Claude’le ette, et tee nüüd #100 kuni #110. Test. Screenshotid. Poodi. Valmis. Vinge.
- DISAIN ja UX: Siin ei ole eriti midagi öelda, ainult äpi ikoon on mingi graafiline element (ok, welcome screeni oma ka) – Adobe Firefly ja Nano Banana. Milline neist ja mitme iteratsiooniga praegu kehtiva ikooniga valmis sai, ei mäleta. Versioon katalooginimes on igatahes v5.1 nii et üsna mitu ringi sai tehtud sellega. Ja muud disaini pole, ülejäänuga on Claude ise hakkama saanud. UX-i olen nii palju mudinud kui endale parasjagu kuskil midagi ette on jäänud, süsteemne lähenemine puudub. Lihtsalt, et endal ok kasutada oleks.
- DEPLOYMENT: Claude ehitas fastlane-põhise beta ja release build protsessi; kõik funktsionaalsus peaks unit-testidega kaetud olema; screenshottide jaoks on UI testid koos snapfile-ga (need käivad ka peamised happy-pathid läbi kiireks kontrolliks). Testflight, tag, done.
Kas see tähendab siis, et ükskõik kes võib need 4 sammu ette võtta ja ükskõik mida valmis kirjutada? Mul on seda raske hinnata, ma natuke saan aru, mis seal kõhu pool toimub. Ja kuna ma sellest natuke aru saan, siis ma andsin LLM-ile paaris kohas ikka jalage p***e ka, et ta õiges suunas liiguks. Kas oleks saanud ka ilma selleta? Siiralt ei tea, võib-olla oleks.
Lisamärkus: see viimane miil, et äpp päriselt poodi saada, eeldab veel natuke ümbritsevat infrat – terms leht ja privacy policy ja support aadress ja kirjeldused jms.
Aga ma ei ole kogu selle äpi juures reaalselt mitte ühtegi sisulist rida koodi ise kirjutanud. Ja see on tegelikult muljetavaldav. Mulle vähemalt.
Mida ma ise siin projektis tehnilist teinud olen:
- Kõige tõsisem sekkumine oli vajalik kui mingis arendusetapis muutus andmete struktuur (SwiftData, VersionedSchema ja MigrationPlan). LLM ei olnud alguses kohe selle peale tulnud, et peaks versioneeritud modeleid kasutama ja siis sellele rajale suunamiseks tuli natuke käsipidi juures olla ning selgitama, mida ma täpselt arhitektuuriliselt seal andmemudeli juures tahaks. Typealias’n’s**t.
- Teine asi, mida ma paar korda vaatasin, olid mõned View paigutuse asjad – kuna Xcode preview on selleks okei asi, siis mõned korrad katsetasin erinevate paddingute vms asjadega.
- Ja kolmas, natuke suurem asi, oli UI testide tegemine screenshottide jaoks. Mingid UI testid tegi LLM alguses tegelikult ka valmis, aga kuna ma AppStore jaoks tahtsin mingeid konkreetseid screenshotte, siis nende tegemiseks salvestasin (Xcode-s olemas) mingeid klikkimiste jadasid. Ja siis üldine UI automaatne läbi klikkimine kiireks kontrolliks.
- Ja ok, bundle exec fastline ios beta olen ka käsureale kirjutanud. Või bundle exec fastline ios screenshots
Kalendriajas poolteist kuud – nädalavahetused ja õhtutunnid.
swift_files: 87
markdown_files: 17
swift_loc: 16641
total_loc: 22423
Nii on, ise olen rahul 🙃 Ikka tuli suht pikk postitus.