Chcesz wypuścić na rynek aplikację mobilną dla systemu Android i iOS? Stoisz przed wyborem wykonawcy? Technologii? A może chcesz zaprogramować ją na własną rękę? W tym artykule pokażę Ci, jak zaoszczędzić 35% czasu i pieniędzy wybierając odpowiednie narzędzia.
Rodzaje aplikacji mobilnych
Na początek ustalmy, czym charakteryzuje się natywna aplikacja mobilna. Jest to aplikacja, która wykorzystuje specyficzne dla danej platformy elementy interfejsu użytkownika (kontrolki), ma dostęp do wszystkich funkcji określonej platformy lub urządzenia oraz zapewnia wydajność na poziomie natywnym – tyle mocy i pamięci ile fabryka dała 😀 W przeciwieństwie do aplikacji hybrydowych, które najczęściej są aplikacjami internetowymi uruchamianymi wewnątrz kontenerów.
Technicznie hybryda to natywna aplikacja mobilna z jednym widokiem (kontener), który wyświetla aplikację internetową – taka przeglądarka opakowana w nazwę, ikonę i ekran startowy.
Natywne aplikacje swoim wyglądem, zachowaniem i działaniem nie odbiegają od aplikacji dostarczanych przez Google oraz Apple, które są domyślnie zainstalowane w Twoim telefonie. Zazwyczaj to właśnie taką aplikację chcesz stworzyć dla swoich klientów/użytkowników – native look and feel 🙂
Wynik procesu wytwórczego, czyli aplikacja, a konkretniej plik lub zestaw plików to jedno, a drugie to sposób, w jaki tę aplikację wyprodukujesz. Możesz rozwijać aplikację natywnie, czyli korzystać z natywnych narzędzi i języków programowania. W przypadku Androida będzie to Android Studio i język Java, dla iOS środowisko Xcode i język Objective-C lub Swift.
Jeśli wybierzesz w pełni natywną drogę – budujesz natywną aplikację natywnymi narzędziami, to masz dwa zupełnie oddzielne, niepowiązane ze sobą projekty. Chcesz mieć niemalże identyczną aplikację na obu platformach? Potrzebujesz dwóch zespołów programistów z dwóch zupełnie różnych światów (Google vs. Apple). Inne narzędzia, inne języki programowania, różne błędy i nieuniknione rozjazdy w logice Twojego produktu.
One language to rule them all
Czy jest inna droga? Alternatywnym rozwiązaniem, które sprawdziłem w boju przy dziesiątkach biznesowych aplikacji mobilnych jest Xamarin. Jest to darmowa, otwarta platforma (zestaw narzędzi i bibliotek), która umożliwia tworzenie natywnych aplikacji mobilnych dla systemu Android i iOS w języku C# – w technologii .NET.
Co to oznacza w praktyce? Jeżeli programujesz, to znając jeden język programowania możesz przygotować aplikacje dla wszystkich wiodących platform w tym samym środowisku programistycznym, a następnie wydzielić powtarzający się kod do osobnej biblioteki. Część wspólna rozwiązania (współdzielona biblioteka) zawiera kod odpowiedzialny np. za połączenie z usługami sieciowymi, dostęp do bazy danych czy logikę biznesową poszczególnych widoków – stanowi znaczną część całego projektu.
Trochę bardziej technicznie: piszemy w C#, który jest transpilowany do natywnego kodu i finalnie kompilowany natywnie ahead of time (AOT) do w pełni natywnej binarki dla iOS i just in time (JIT) na urządzeniu z systemem Android. Dotyczy to klasycznego podejścia Xamarin realizowanego np. z wykorzystaniem frameworka MvvmCross, czyli masz natywne widoki (XIB dla iOS i XML dla Android) + współdzielone biblioteki z kodem C# (.NET Standard, kiedyś PCL). Aktualnie promowane rozwiązanie Xamarin.Forms jest biblioteką, która dostarcza abstrakcji do tworzenia współdzielonego interfejsu użytkownika (największy wspólny mianownik). Przypomina bardziej hybrydę – więcej współdzielonego kodu, ale jeden kontroler (kontener) i gorsza wydajność.
Co to oznacza dla Twojego biznesu?
Jesteś przedsiębiorcą i zlecasz wykonanie aplikacji zewnętrznej firmie? Wystarczy Ci jeden zespół programistów .NET (jedna firma), którzy będą rozwijać oraz utrzymywać aplikację mobilną dla obu platform. Dodatkowo w zależności od ilości współdzielonego kodu większość poprawek i zmian będzie wykonywana w części wspólnej (tylko raz). Oszczędzasz czas oraz pieniądze zyskując spójność i łatwość zarządzania swoim rozwiązaniem.
Ile tych oszczędności? Załóżmy, że na stworzenie aplikacji dla jednego systemu operacyjnego Twój wykonawca lub Ty potrzebujesz 1000 godzin. Współdzieląc 70% rozwiązania, możesz dostawić kolejną z platform w czasie 300 godzin (zaimplementować natywny interfejs użytkownika i spiąć z istniejącą logiką). Przygotowanie aplikacji na obie platformy zajmie łącznie 1300 godzin – nie 2000 jak w klasycznym podejściu.
Gratulacje właśnie zaoszczędziłeś 700 godzin, czyli jakieś 35% swojego czasu lub czasu swoich programistów. Pomnóż to razy stawkę godzinową, a wyjdzie niezła sumka. Oczywiście ilość współdzielonego kodu zależy od rodzaju aplikacji oraz użytych technik współdzielenia. Im więcej logiki biznesowej, tym większa część wspólna.
Xamarin został wykupiony przez Microsoft w 2016 roku. Pamiętam czasy, gdy płaciliśmy za pojedynczą licencję na jedną z platform $999 rocznie, a i tak było warto. Teraz możesz wykorzystywać ten framework komercyjnie całkowicie za darmo!
Napisz w komentarzu, jakie podejście preferujesz i dlaczego nie Xamarin? 😉