Kivy – wstęp do tworzenia aplikacji w Pythonie

Python promowany jest jako uniwersalny język programowania – do wszystkiego. W praktyce i powszechnym użyciu ma jednak zastosowanie głównie w usługach webowych takich jak strony internetowe, serwery sieciowe, restowe API dla aplikacji mobilnych, a także przy tworzeniu skryptów. Czy to znaczy, że programując w Pythonie jesteśmy skazani na backend? Nie!

 

Do niedawna Python ograniczał się głównie do webu. Powstało kilka znanych programów desktopowych, wchodzących w skład dystrybucji linuksowych (m.in. aktualizator systemu w Ubuntu) i na tym się skończyło – na githubie pustki w tej kategorii. Ostatnio rozpoczęto eksperymenty z uczeniem maszynowym, wykorzystując Pythona. Tylko co, gdy chcielibyśmy napisać aplikację mobilną, wykorzystując Pythona? Jeszcze kilka lat temu próżno było szukać aplikacji mobilnej stworzonej w tym języku. W 2011 roku powstał jednak framework umożliwiający tworzenie aplikacji mobilnych (i nie tylko) na androida i iOS w Pythonie. W tym roku (2017 r.) trafił on również na stronę główną python.org, gdzie wcześniej miejsce było głównie dla bibliotek webowych (Django, flask etc.) i sieciowych (takich jak Twisted).

 

Czym jest kivy i do czego służy?

Kivy jest biblioteką do tworzenia interfejsów graficznych. Oprogramowanie stworzone z użyciem tej biblioteki uruchomimy na Windowsie, Linuksie, MacOS, Androidzie i iOS, o ile nie skorzystamy z jakiejś biblioteki preferowanej do konkretnego środowiska uruchomieniowego. W kivy możemy stworzyć aplikacje mobilną i jednocześnie program komputerowy, który wszędzie może wyglądać tak samo lub inaczej. Oprócz zestawu bibliotek Kivy udostępnia też swój własny język do tworzenia interfejsu. Są oczywiście dwie metody tworzenia GUI – z poziomu Pythona oraz kvlang. Te dwie metody możemy dowolnie ze sobą łączyć.

 

Wady i zalety korzystania z Kivy

Jak każde oprogramowanie ma swoje wady oraz zalety. Framework istnieje od niedawna i mimo powolnego rozwoju, wszystko zmienia się na lepsze.

Wady:

  • Brak komponentów stylu material design – to jest jednocześnie zaletą. Dostajemy bardzo proste kontrolki, które łatwo ostylować w dowolny sposób. Niestety jeśli ktoś chciałby iść za trendami Androida, trzeba to robić „z palca”. Podobnie to działa w alternatywach typu „Qt”.
  • Niewielka ilość developerów korzystających z Kivy – z tego powodu próżno szukać pomocy np. na StackOverflow.
  • Brak niektórych bibliotek, które znajdziemy m.in. do Javy.
  • Buildozer – system do budowania paczek dla androida działa poprawnie tylko na linuksie – da się to ominąć, stawiając np. wirtualną maszynę na Windowsie/macOS.
  • Czasami trzeba użyć javy/obj c lub odnieść się do SDK androida bądź iOS i stworzyć oddzielny fragment kodu dla Androida i Javy.

Zalety:

  • Oprogramowanie tworzone za pomocą Kivy jest multiplatformowe.
  • Niewielka liczba programistów – to się znalazło również w wadach, natomiast należy pamiętać, że potrafiąc coś, czego inni nie znają, jesteśmy do przodu na rynku pracy i możemy dyktować warunki 🙂
  • Łatwo tworzyć niestandardowy wygląd aplikacji.
  • Aplikacje tworzy się szybko, prosto i stosunkowo przyjemnie.
  • UI może (ale nie musi) być takie samo na wszystkich platformach.
  • Przejrzysta i czytelna dokumentacja.
  • Framework tworzą twórcy aplikacji mobilnych.
  • Tworzony w Pythonie – to zaleta głównie w stosunku do alternatywnych rozwiązań, typu pyotherside (Qt i Python), gdzie jedynie wrapper tworzony jest w Pythonie, a jego przyszłość nie jest pewna.

 

Rynek pracy i zastosowanie

Kivy podobnie jak wszystkie inne narzędzie, ma jakieś swoje zastosowanie, w czym radzi sobie najlepiej. Nie sprawdzi się ono w tej chwili we wszystkim. Znając możliwości tego narzędzia potrafię ocenić, w jakim projekcie sprawdzi się ono najlepiej. Kivy w swoich zastosowaniach może konkurować z takimi rozwiązaniami jak React Native oraz Qt. Gdybym miał uogólnić:

  • oprogramowanie typu paint
  • UI na urządzenia wbudowane typu bankomaty, biletomaty itd.
  • aplikacje mobilne z interaktywnym UI (coś poza klikaniem w przyciski)

W tych zastosowaniach np. Java może być armatą na muchy i tworzenie w niej tego typu oprogramowania zwykle sprawdzi się gorzej, niż w przypadku kivy.

Jeśli chodzi o rynek pracy, to obserwuję kivy od 2 lat. Robiłem również ze znajomym (który swoją drogą jest ekspertem jeśli chodzi o Kivy i współpracuje z twórcami biblioteki – Polak) projekt komercyjny. Ogłoszeń konkretnie do Kivy jest na „UpWorku” po kilka tygodniowo (tendencja wzrostowa). Nie ma co się jednak do tego ograniczać. Należy pamiętać, że zwykle klient nie wie dokładnie czego chce i jakich technologii użyć, liczy się dla niego efekt końcowy i to w naszej kwestii leży doradztwo i wybór narzędzi, które można wykorzystać. Biorąc pod uwagę oferty typu „zlecę wykonanie aplikacji” bez podania konkretnych wymagań co do narzędzi, możemy rozszerzyć nieco zakres poszukiwań.

 

Oprogramowanie stworzone z użyciem Kivy

Z informacji które do mnie docierają m.in. z kanału irc kivy wynika, że aplikacje w kivy tworzone są głównie do celów „wewnętrznych”. Do urządzeń firmowych, gospodarczych itd. Znalazłem jednak trochę aplikacji stworzonych w Kivy, które przeznaczone są do użytku ogólnego-dostępnego. Niżej 6 moim zdaniem wartych uwagi:

PyWallet – portfel kryptowaluty Ethereum na komputer i Androida.

Wisielec – gra-zgadywanka, stworzona przez znajomego w Kivy na Androida.

Kognitivo – aplikacja trenująca nasz umysł, za pomocą licznych zgadywanek, na Androida oraz iOS.

Balls Gravity – gra w zbijanie kulek na Androida.

Flat Jewels – gra na Androida.

Kivy Showcase – aplikacja pokazująca działanie domyślnych widżetów z Kivy.

 

Seria wpisów

Ten artykuł jest wstępem do serii wpisów o Kivy, które będą wprowadzać programistów Pythona (nawet początkujących) do tworzenia aplikacji mobilnych i desktopowych z użyciem tego frameworka. W miarę dodawania nowych artykułów lista niżej będzie uzupełniana.

  • Kivy – wstęp do tworzenia aplikacji w Pythonie (aktualny)
  • Kivy – instalacja i konfiguracja potrzebnych narzędzi (w trakcie tworzenia)

 

  • Maciej Górecki

    Fajny, przyjemny artykuł. Polecam 🙂