1. iOS developer fundamentálne základy


- základy, ktoré musí ovládať každý iOS developer

iOS developer fundamentálne základy

Lámali ste si niekedy hlavu nad tým aké tooly používajú ostatní iOS developeri? Možno si začínajúci iOS developer alebo sa pýtaš čo ti chýba v tvojom arzenáli? Tu je môj krátky zoznam nevyhnutných vecí, s ktorými by mal byť zoznámený každý iOS developer.

XCode

Začneme pekne od podlahy. XCode je IDE kde strávime podstatnú časť nášho developerského života. Tu ožívajú naše projekty a vytvárame naše super apky. Možno ste sa ale nikdy nezamýšľali čo všetko sa skrýva v tomto prostredí. Okrem editačných schopností obsahuje aj peknú sadu fíčur ktoré sa vám môžu hodiť počas developmentu alebo po ňom. Musím ale podotknúť, že nie všetky fíčury sú úplne intuitívne alebo že sa s nimi pracuje jednoducho. Pokiaľ by som to mal zhrnúť tak je to taká všehochuť, a nie je to úplne dotiahnuté do konca. Niekedy ma konkurencia lepšie riešenia ale znamená to nainštalovať nový tool do systému. Ale o tom niekedy v ďalších článkoch.

XCode fíčury:

  • Schopnosť verzovať kód (git)
  • Profilovacie nástroje pre alokáciu pamäte/vyťaženie procesoru/...
  • Simulátory pre iPady, iPhony
  • UI editor nazvaný Interface builder
  • Testovací runner pre Unit/UI testy

Pre začínajúcich developerov by som odporučil sa zoznámiť so všetkými fíčurami, pretože to dokáže uľahčiť developerskú prácu a vo viacerých ohľadoch vylepšiť našu aplikáciu. Napríklad profilovacie nástroje umožnia poukázať na problémy s alokáciou pamäte, spočítajú ako dlho trvá asynchrónne volanie, prípadne vyťaženie procesoru. Tieto fíčury nie sú len Apple alebo iOS špecifické. Je to niečo čo sa používa v celom developerskom odvetví a je jedno či píšete v C++ alebo v Jave. Používať tieto nástroje sa vám bude hodiť všade.

Ďalšou dôležitou súčasťou, s ktorou je nutné sa zoznámiť je samotný build proces. Pokiaľ buildujete apku len pomocou Cmd+B (F5) a nikdy ste nepotrebovali nijak upraviť build process, tak je to len otázka času pretože som si istý, že to príde s tým ako narastie vaša apka. Prípadne ak budete vytvárať dve verzie vašej apky free/pro vyžaduje dobre pochopenie čo je target, scheme, build configuration etc.

Balíčky

Ak si myslíte, že dokážete všetko vyvinúť sami alebo, že apple API poskytuje všetko čo potrebujete tak ste na omyle. V súčasnosti existujú veľké developerské komunity, ktoré vyvíjajú rôzne frameworky, ktoré sú dostupne v podobe balíčkov a existujú také 3 balíčkovacie systémy. Zoznámte sa s coapodscarthage a swift package managerom.

Všetko balíčkovacie systémy majú svoje pro a proti ale najlepšie je sa zoznámiť so všetkými. Moja preferencia je carthage lebo baličky je možné pred-buildovať a pri kompilácii apky buildovací proces nijak ďalej nekompiluje čo bolo raz skompilované. Na druhú stranu cocoapods je veľmi jednoduché používať ale pri buildení aplikácie sa buildujú aj závislosti, čo môže trvať pomerne dlho. (neskúmal som to do detailov ale určite existuje aj nejaký flag, ktorý tomu zabráni). Moje pravidlo je, že keď to nájdem v carthage balíčkoch, tak to použijem, ak nie použijem cocoapod.

S tretím balíčkovacím systémom swift package manager som sa stretol iba pri vývoji Vapor aplikácie a v iOS aplikácii som ju ešte nepoužil ale je to len otázkou času.

Github - git

 

Dôvody prečo aj jednotlivec verzuje svoj kód asi nemusím vysvetľovať. V podstate celá iOS developerská komunita je na github-e a ani vy nebudete výnimkou. Github nie je len služba na verzovanie kódu ale je to "komunitné centrum", kde developeri vylepšujú svoje kódy a spoločnými silami vytvárajú príjemne podmienky pre vývoj našich aplikácii. Github umožňuje vytvárať privátne aj verejné repozitáre. Taktiež umožňuje jednoduchý manažment nad týmito repozitármi v podobe zadávania "issues" pod daný repozitár, označovať ktoré issues sú vo fázi vývoja a ktoré sú už dokončené. Ďalej umožňuje vytvárať readme súbory, ktoré umožňujú jednoducho popísať o čom ten projekt je prípadne vytvoriť wiki stránky (premium). Všetko je intuitívne a veľmi jednoducho sa používa.

Github poskytuje aj výborne integrácie do iných služieb. Príkladom môže byť Toggl, ktorý umožní sledovať čas strávený nad daným issue.

Takže na začiatok si vytvorte niekoľko projektov, skúste si push-núť niekoľko zmien do repozitára, vytvoriť automated kanban dashboard, fork-núť niekoľko verejných projektov a nezabudnúť push-núť zmeny do originálneho repozitára aby aj komunita benefitovala z vášho kódu.

Čo sa týka samotného git-u, tak je namieste sa zamyslieť akú merge-ovaciu stratégiu zvoliť. Overená stratégia je, že máme jeden master branch a developerský branch. Do developerského branch-u push-ujeme pomerne často a keď sme s výsledkom spokojný, tak to merge-neme do master branche. Vyhodnotenie či sme spokojný s výsledkom developerského branchu môžeme automatizovať a použiť na to nejaký CI/CD službu, ktorá nám nezávisle zbuildiť náš projekt, spustí unit testy a UI testy a keď je to v poriadku tak to automatický namergeuje do master branche. Môžeme releasovat!

CI/CD

Ako som spomenul v predchádzajúcom odstavci CI/CD teda continuous integration/continuous delivery je spôsob ako každú zmenu, ktorú doručím do repozitára a hneď (<10 min.) nezávisle otestovať. Takto mame zaistené, že sme nezabudli doručiť nejaký dôležitý súbor a že testy, ktoré sme napísali sú zelené. Dobrým kandidátom je služba Bitrise. Je to za free pre začínajúcich developerov a umožní vám to buildovať/testovať až 200 buildov v 10 min oknách za mesiac. Dokonca som bol schopný zaintegrovať Vapor projekt, takže to nemusí byť len iOS aplikácia.

Záver

Je to len vrchol ľadovca. Ako developeri sa musíme učiť každý deň a je nutné naštudovať množstvo informácii okolo toho ktorý tool je dobrý na ten daný problém, aký framework použiť ale toto by vás mohlo nasmerovať a dať vám ideu ako správne začať. Ako developeri musíme robiť úplný opak toho čo nás učili v školách. Nesnažte si zapamätať čo najviac, buďte lenivý a neopakujete svoj kód. Nechajte tooly robiť svoju prácu a nebojte sa experimentovať.