Dzięki popularyzacji technologii mobilnej i coraz większej dostępności developerów, możliwe jest obniżenie kosztów przygotowania aplikacji, dzięki czemu w ślad za gigantami mogą iść małe i średnie firmy.
Obecnie na rynku istnieje kilka technologii pozwalających na budowanie aplikacji mobilnych. Każda z nich posiada wady i zalety, różnią się też cenowo. Jak odnaleźć się w technologicznych meandrach rynku aplikacji? Jak wybrać rozwiązanie optymalne dla potrzeb firmy, a jednocześnie mieszczące się w - ograniczonym czasem przecież - budżecie? Moim dzisiejszym artykułem chciałbym rzucić nieco światła na ten problem tak, aby pomóc Ci, drogi Czytelniku, zrozumieć czym różnią się poszczególne rozwiązania, z czego wynikają różnice i jakie konsekwencje niosą. Pozwoli Ci to - mam nadzieję - podjąć decyzję i uchronić przed zbyt dużym wydatkiem albo zbyt niską jakością aplikacji. A najlepiej jednym i drugim :)
Zaczniemy od krótkiej charakterystyki poszczególnych technologii oraz porównania ich wad i zalet.
Aplikacje Natywne
Obecnie mamy na rynku 2 platformy: najbardziej rozpowszechnioną, czyli Android oraz nieco mniej popularną ale równie istotną - iOS. Do obu producenci dostarczają rozbudowane narzędzia pozwalające na budowę aplikacji; są one jednak diametralnie różnie i bazują na zupełnie innych językach programowania. Dla klienta taka sytuacja oznacza konieczność zatrudniania równolegle 2 programistów, dla każdej z platform - niewielu developerów znaobie platformy na tyle dobrze, aby tworzyć aplikacje natywne na wysokim poziomie, co w oczywisty sposób winduje koszty.
Z drugiej strony największą zaletą aplikacji natywnych jest ich wydajność i elastyczność możliwości, jakie za nimi idą. Dlatego do gier, wymagających dużych zasobów, lub zaawansowanych aplikacji analizujących dane, rekomenduję wybór aplikacji natywnej.
Aplikacje Hybrydowe (web view)
Pod tym hasłem kryją się aplikacje stworzone w technologiach webowych, czyli takich samych jak witryny internetowe. Przy pomocy specjalnego programu, my programiści, jesteśmy w stanie przetransferować nasz kod pisany pod przeglądarki i stworzyć z niego aplikacje.
Technologie, o których mowa to na przykład Apache Cordova lub Titanium - tworzone są do nich liczne frameworki (czyli “nakładki” na kod, ułatwiające tworzenie stron i aplikacji), takie jak na przykład Ionic. W dużym uproszczeniu aplikacja wyświetla specjalnie przygotowaną stronę Internetową imitując działanie natywnej aplikacji mobilnej.
Dzięki takiemu rozwiązaniu aplikacja jest rozwiązaniem tańszym - między innymi dzięki łatwiejszemu wykonaniu i szerszemu dostępowi do specjalistów tworzących strony internetowe. Dodatkowo piszemy ją tylko jeden raz - a działać będzie na obu platformach, więc koszty wyprodukowania i utrzymania aplikacji spadają o połowę.
Aplikacje tworzone w ten sposób są jednak mniej wydajne niż natywne, nie działają tak płynnie oraz nie posiadają dostępu do wszystkich możliwości urządzenia. Jest to na pewno dobry wybór dla biznesów, chcących przetestować pomysł na produkt. Aplikację hybrydową można potraktować jako MVP (minimum viable product) do zbudowania początkowej bazy użytkowników i sprawdzenia zainteresowania produktem bazujących na webowej aplikacji stworzonej wcześniej (część jej kodu możemy przetransferować do rozwiązania mobilnego, obniżając koszty i czas wykonania wersji mobilnej).
Aplikacje hybrydowe kompilowane do natywnych
Technologia ta rozwijana jest od niedawna, a jej głównymi przedstawicielami są React Native oraz NativeScript (o tym, dlaczego jesteśmy fanami tego drugiego, napisaliśmy tutaj: Hybrydowe aplikacje mobilne? Tylko w NativeScript!). Jest to połączenie zalet technologii natywnych z hybrydowymi. Dzięki sprytnemu zabiegowi twórców możemy programować aplikacje w znanych szerokiemu gronu developerów technologiach: HTML/CSS oraz Angular, JavaScript czy też TypeScript lub React. Podobnie jak w przypadku aplikacji hybrydowych, programujemy tylko jeden raz i działa ona na obu platformach.
Cała sztuczka polega na wykorzystaniu natywnych elementów dostarczonych przez producentów iOSa i Androida, nadaniu im wyglądu za pomocą HTML/CSS oraz wykorzystaniu na przykład Angulara do zbudowania jądra aplikacji, czyli tego jak działa. Programista najpierw pisze kod w popularnym i niedrogim w utrzymaniu języku programowania, a następnie kompiluje go do aplikacji natywnej zyskując dużą wydajność.
Technologia ta pozwala developerom tworzącym strony www na szybkie wdrożenie w środowisko programistyczne. Sprawny front-end developer już po miesiącu jest w stanie tworzyć samodzielne proste aplikacje.
Technologia ta jest ciągle mniej wydajna niż aplikacje natywne ale różnica przy dobrej optymalizacji kodu jest niezauważalna; wyjątek stanowią gry, w których wykorzystujemy silnik 3D.
Co zatem wybrać? Przygotowałem małe - bardzo subiektywne ale mam nadzieję, że mimo to przydatne - porównanie opisanych technologii (wyjaśnienia poniżej):
Punktacja 1-5 |
Natywne |
Hybrydowe |
Hybrydowe |
Koszt |
1 |
5 |
4 |
Czas |
1 |
5 |
5 |
Możliwości |
5 |
1 |
4 |
Wydajność |
5 |
1 |
4 |
Dostępność na rynku |
2 |
5 |
1 |
Suma |
14 |
17 |
19 |
Koszt i czas: przyjmijmy, że aplikacje hybrydową zrobimy w ciągu 100 godzin. Koszt roboczogodziny w tym wypadku załóżmy na 50 zł netto (na podstawie średnich ofert rynkowych), co daje koszt całości na poziomie ok. 5000zł netto. Dla aplikacji hybrydowej kompilowanej do natywnej czas to również około 100h, przy nieco wyższym koszcie na poziomie 60zł mamy 6000zł netto (ci sami programiści, ale po dodatkowym przeszkoleniu). Aplikacja natywna: koszt godziny pracy to już minimum 100zł, do tego dochodzi konieczność utrzymania 2 linii produkcyjnych, co otwiera budżet na poziomie 20 000 zł.
Możliwości: najwięcej możliwości dają nam aplikacje natywne, które nie niosą ze sobą praktycznie żadnych ograniczeń. Jeśli producent sprzętu pozwala na zastosowanie określonych rozwiązań - to rozwiązanie takie pojawia się najpierw w środowisku natywnym, zaś programiści aplikacji hybrydowych muszą poczekać na wdrożenie nowych elementów we framework. Ponadto implementacja dostępu do czujników czy silnika 3d jest najlepsza i bezpośrednia przy rozwiązaniach natywnych. Pozwala to na najbardziej elastyczne tworzenie kodu - w efekcie możemy zaprogramować wszystko, co tylko sobie wymyślimy.
Wydajność: podczas gdy wydajność aplikacji hybrydowych pozostawia wiele do życzenia, aplikacje natywne są najszybsze - wynika to wprost z ich charakteru. W przypadku aplikacji hybrydowych mamy do czynienia z pośrednikiem, którym jest mikroserwer. Natomiast w aplikacjach hybrydowych kompilowanych kod przetwarzany jest przez automat, i na samym procesie tłumaczenia kodu mamy pewne straty związane z jego słabą optymalizacją. Człowiek jest w stanie zoptymalizować kod lepiej niż maszyna (przynajmniej obecnie).
Dostępność na rynku: cały czas mamy do czynienia z dominacją firm tworzących aplikacje w technologiach hybrydowych. Software House’y, które tworzą strony internetowe i aplikacje webowe, często mają w ofercie również aplikacje hybrydowe a tego typu firm jest znacznie więcej niż specjalizujących się w rozwiązaniach natywnych. Dużo łatwiej więc znaleźć taką firmę z wolnymi w danym momencie zasobami, przez co czas oczekiwania na aplikację jest niższy a koszty mniejsze.
Podsumowanie - co i dla kogo?
Jeżeli masz do wykonania aplikację lub grę, w której konieczne będzie wykorzystanie silnika 3D telefonu, jesteś skazany na aplikację natywną.
W pozostałych przypadkach (czyli w olbrzymiej większości) polecam jednak zdecydować się na rozwiązanie hybrydowe kompilowane do natywnego. Spośród wszystkich dostępnych technologii najpopularniejsze są NativeScript i React Native, pozwalające na stworzenie taniej a zarazem wydajnej appki.
Zero spamu - tylko wartościowe treści!: