CocktailApp to aplikacja w kotlin multiplatform (KMM) do technologii i odkrywania nowych możliwości programistycznych. Dzięki niej możesz przeglądać przepisy na drinki z bazy TheCocktailDB, a jej działanie opiera się na nowoczesnym frameworku Kotlin Multiplatform, co zapewnia płynne działanie zarówno na Androidzie, jak i iOS.

Podjąłem się stworzenia takiej aplikacji, by poeksperymentować z Swiftem oraz SwiftUI. Trafiłem na proste API z bazą danych różnorodnych drinków i ich zdjęć, co wydało mi się idealnym przypadkiem do testowania nowej technologii, frameworka i środowiska. Przy okazji chciałem sprawdzić, jak Kotlin Multiplatform radzi sobie w projektach cross-platformowych oraz przetestować kilka ciekawych bibliotek, takich jak Room multiplatform. Oprócz testowania nowych technologii chciałem poszerzyć także wiedzę dotyczą zarządzaniem repozytorium. Wykorzystałem code formattery takie jak ktlint i swift-format wraz z pre-commit hook.

Moje odczucia z użycia Kotlin Multiplatform Mobile (KMM) w połączeniu ze Swiftem są w większości pozytywne. Dla osoby, która wcześniej skupiała się głównie na tworzeniu aplikacji na Androida, KMM znacząco ułatwiło wejście w nowy ekosystem i skróciło czas potrzebny na naukę specyfiki środowiska iOS. Jednak nie obyło się bez wyzwań – jednym z obszarów do usprawnienia jest mechanizm sealed classes. Często korzystam z klasy Result, bazując na podejściu Philippa Lacknera do obsługi zdarzeń jednorazowych (one-time events). Niestety, w Swifcie przekładanie tego mechanizmu nie zawsze działa idealnie, ponieważ odpowiednikiem sealed classes można uznać typ wyliczeniowy enum, co wymaga dodatkowych modyfikacji i nieco komplikuje kod. Mimo tych trudności KMM zdecydowanie przyspiesza pracę i daje spójność między platformami.

Room od dawna jest dobrze znany w środowisku Androida jako sprawdzone narzędzie do przechowywania danych w formacie SQLite. Przed rozpoczęciem projektu zauważyłem, że zespół Androida pracuje nad wersją multiplatformową Room, co wzbudziło moje zainteresowanie. Pojawia się jednak pytanie – czy warto jej używać?

Dla środowiska produkcyjnego zdecydowanie jeszcze nie, ponieważ wersja multiplatformowa nadal znajduje się w fazie alfa. Podczas pracy można napotkać różne problemy, takie jak błędy kompilacji, mimo że sama baza danych działa poprawnie. W moim przypadku korzystałem z wersji 2.7.0-alpha06. Pomimo obiecujących możliwości, obecny stan biblioteki wskazuje, że najlepiej nadaje się ona na razie do eksperymentów i nauki, a nie do zastosowań produkcyjnych.

Ostatnie wpisy

Poprzedni:

Formularz kontaktowy