Aplikacje mobilne – trendy na 2020

 

Miniony rok przyniósł bardzo wiele nowości na rynku produkcji aplikacji mobilnych. Jesienny sezon konferencyjny również dobiega końca, dlatego warto spróbować wyłowić z mnogości nowinek rzeczywiste trendy, które będą się rozwijać w kolejnych latach.

SwiftUI – nowość od Apple

Jeśli chodzi o platformę iOS to ten obszar zdecydowanie został zdominowany przez SwiftUI – nową bibliotekę, która została zaprezentowana przez firmę Apple podczas czerwcowej konferencji technologicznej WWDC. Służy ona do tworzenia funkcjonalnego interfejsu, który będzie działał nie tylko na systemie iOS, ale także na nowo stworzonym systemie operacyjnym iPadOS. SwiftUI to framework, który powstał, aby w pełni wykorzystać potencjał języka Swift5.

Zdjęcie z konferencji Mobiconf. Widoczny ekran prelekcji. Na slajdzie napis: There is always more to learn.

Co ciekawe, mimo że temat ten był motywem przewodnim kilku prelekcji, każda z nich pokazywała inny aspekt jej wykorzystania. Jakub Kornatowski przedstawił miejsce SwiftUI w całym ekosystemie oprogramowania Apple i pokazał tę bibliotekę w ujęciu globalnym. O podstawach korzystania z biblioteki SwiftUI mówiła Timirah James, która na praktycznych przykładach pokazała także jak tworzyć widoki mieszane, dynamiczne listy, statyczne zmienne oraz jak używać layoutów HStack i VStack. Andrzej Zuzak opowiedział o zasadach działania i najważniejszych różnicach między SwiftUI i UIKit, Paul Hudson przybliżył zastosowanie SwiftUI w tworzeniu Collection View, natomiast Jan Kaltoun w trakcie live codingu zademonstrował jak napisać i modyfikować kod, który funkcjonuje na wszystkich platformach z rodziny Apple. Warto zaznaczyć, że SwiftUI już w tym momencie pozwala tworzyć stabilne interfejsy, jednak na pewno pozostaną takie obszary, w których nie będzie możliwe zastąpienie UIKita tą biblioteką.

Jakub Kornatowski zwrócił uwagę na pewne problemy, jakie niesie ze sobą framework SwiftUI. Przede wszystkim są to problemy z iOS i Xcode 11, niezbyt rozbudowany support i niepełna dokumentacja oraz ograniczone pokrycie natywnego API. Nie jest to zatem biblioteka idealna, ale można przypuszczać, że z czasem będzie się rozwijać w dobrym kierunku.

Design Thinking – projektowanie od podstaw

Kolejnym ważnym aspektem, na jaki coraz częściej zwraca się uwagę, okazały się nie tylko kwestie techniczne, ale cały proces projektowania – już od etapu pomysłu. Idea sama w sobie powinna być dobrze zaplanowana i przemyślana. Nie chodzi tutaj tylko o wygląd i oprawę graficzną aplikacji mobilnych. Chodzi o zwrócenie uwagi na potrzeby klienta, potrzeby rynku i dostosowanie produktu do zdefiniowanych oczekiwań. Ten sposób myślenia powinien być widoczny już na etapie wyboru podejścia (natywne, hybrydowe lub PWA). Warto także zastanowić się nad strategią utrzymania użytkowników aplikacji. Kaja Toczyńska pokazała wykorzystanie psychologicznego procesu tworzenia nawyków jako narzędzia marketingowego, które sprawia, że użytkownicy chętnie korzystają z naszej aplikacji i lubią jej używać.

Widoczna sala pełna uczestników, prelegent, a na ekranie prelekcji wyświetlony slajd z napisem: Architecting Android and iOS apps in 2020.

Projektowanie aplikacji mobilnych to nie tylko aspekt wizualny. To także dobór właściwej architektury, wzorców projektowych i rozwiązań technicznych, które będą w najlepszy możliwy sposób odpowiadały potrzebom danego projektu.

Temat projektowania aplikacji mobilnych nie jest wolny od problemów. Projektowanie UI, debugowanie i testowanie są trudne, a stworzenie aplikacji mobilnej, która jest dostosowana do funkcjonowania na platformach iOS i Android jest bardzo czasochłonne. Stosując architektury MVVM/MVI należy pamiętać, aby odpowiednio dopasować je do potrzeb projektu – tak, by funkcje aplikacji były przejrzyste, testowalne i zgodne z zasadami bezpieczeństwa aplikacji.

Testing – nowe oblicze testowania

Duży nacisk kładziony jest na testowanie oprogramowania. W świecie IT ten aspekt tworzenia aplikacji mobilnych ma coraz większe znaczenie. Testowanie wcale nie jest nudnym i niepotrzebnym zajęciem. Pisanie testów jednostkowych nie jest już tylko dobrą praktyką, ale wręcz wymogiem i integralną częścią procesu tworzenia oprogramowania. Dodatkowo może to pomóc w znacznym obniżeniu kosztów utrzymania kodu. W jaki sposób to osiągnąć? Przede wszystkim należy pisać testy, które są naprawdę wartościowe – pomagają zlokalizować i uniknąć potencjalnych błędów oraz słabych punktów w kodzie.

Poza testami jednostkowymi popularność zdobywa podejście TDD – Test-driven development, gdzie testy są planowane jeszcze przed napisaniem kodu. Oddzielne miejsce mają także testy integracyjne i testy UI. 

Sala konferencyjna, prelekcja o testowaniu, na ekranie prelekcji zapalona żarówka i napis Writing Unit Testable Code.

Jayesh Kawli mówił o tym, że w obliczu konieczności szybkiego dostarczenia produktu, testy jednostkowe są często pomijane lub są słabej jakości. Przesada w drugą stronę, czyli dążenie do stuprocentowego pokrycia kodu testami również nie jest właściwym podejściem. Pisanie testów jednostkowych powinno być zintegrowane z przepływem pracy. Jayesh pokazał w jaki sposób napisać testowalny kod, w którym testowane są naprawdę istotne aspekty, ale omówił także często popełniane błędy i pułapki, które czyhają na programistów i testerów.

Flutter – jeden by rządzić wszystkimi

Flutter to kolejny temat, który wprawdzie nie jest już nowością, ale jest coraz stabilniejszy i nie przestaje się rozwijać. W sentymentalną podróż po historii Fluttera zabrali nas Michał Baran i Rafał Wachol. Po dwóch latach od powstania, ta technologia jest coraz chętniej wykorzystywana do tworzenia aplikacji mobilnych. Dzisiaj, przyglądając się drodze, jaką przebył ten język, można śmiało stwierdzić, że Flutter poczynił ogromne postępy. Łukasz Wiśniewski pokazał w jaki sposób Voyager pozwala na tworzenie czytelnych wymagań w postaci kodu, które mogą zostać przekształcone w komponenty Fluttera. Dzięki temu rozwiązaniu można bez problemu monitorować wymagania w całej historii różnych gałęzi gita i tworzyć testy A/B różnych rodzajów nawigacji bez zaśmiecania kodu.

Jednak Flutter to nie tylko wspomnienia – to także nieustanny rozwój. Dylan Drost zwrócił uwagę na rolę testowania i automatyzacji w tworzeniu cross-platformowych aplikacji, które nie tylko prawidłowo działają na systemach iOS i Android, ale także cechują się wysoką jakością kodu i architektury.

Opinie odnośnie przyszłości Fluttera są mieszane – szybki rozwój pozwala przypuszczać, że ta technologia stanie się niebawem jedną z ważniejszych w obszarze developmentu aplikacji mobilnych na wiele platform. Zawsze jednak będą istniały pewne ograniczenia, z którymi poradzić sobie można jedynie wykorzystując technologie natywne.

Nowoczesny agile

Metodyki agile nie trzeba nikomu przedstawiać – jest jedną z najpopularniejszych technik zarządzania projektami. Sprawdza się w wielu branżach, przede wszystkim jednak znana jest w kontekście obszaru IT. Odpowiednio dostosowana do potrzeb zespołu pozwala na zoptymalizowanie codziennej pracy developerów i niesie ze sobą wiele innych korzyści. Manifest agile powstał jednak wiele lat temu, co poddaje w wątpliwość aktualność pierwotnych zasad agile. Czy nadal znajdują one zastosowanie w stale zmieniającym się środowisku biznesowym? Jak w dzisiejszych czasach i realiach wykorzystać agile, aby w pełni wyzwolić potencjał zespołów? Na te pytania odpowiedź próbował znaleźć Peter Stevens. Przedstawił on nowoczesne i bardziej spersonalizowane podejście do wdrażania metodyki agile oraz zadbał, żeby uczestnicy wynieśli z prelekcji wartościową wiedzę – również w postaci drukowanego kompendium.

Książka - materiał promocyjny po konferencji: Ten Contracts for your Next Agile Project. A practicioner’s Guide to Creating the Right Contract. - Peter Stevens. Na okładce osoba przeskakująca przepaść.

Konferencje technologiczne

Przekrój tematów poruszanych na konferencjach technologicznych, które w moim przypadku były poświęcone przede wszystkim aplikacjom mobilnym, jest naprawdę ogromny. Dzięki temu każdy może znaleźć tam coś dla siebie. Świat IT nieustannie się zmienia, każdego dnia oferuje nam nowe rozwiązania i pomysły. Ważne jest jednak, że obecnie zdolności techniczne nie są już wystarczające, aby odnieść sukces – równie istotne są umiejętności biznesowe, komunikacyjne oraz zarządzanie zespołami.