Coraz więcej mówi się o możliwości wprowadzenia przez Apple aplikacji uniwersalnych, które będą pracować na iOS oraz macOS. Aplikacje z iOS na Mac wydają się bardzo interesującym rozwiązaniem, jednak wcale nie takim łatwym do realizacji i niosącym pewne zagrożenia.

Aplikacje z iOS na Mac, co ułatwia realizację pomysłu?

Po pierwsze iOS powstał na bazie macOS (wtedy OS X). Bardzo wiele podstawowych funkcji nazywa się i działa tak samo w obu systemach. Te same są typy zmiennych i operacje na nich. Podobnie wykonuje się połączenia sieciowe (macOS potrafi znacznie więcej, to co jest na iOS w zdecydowanej większości działa identycznie). Operacje na plikach też. Nowe silniki graficzne jak Metal są niemal wspólne. Odtwarzanie multimediów bardzo podobne. Grafika 2D również jest obsługiwana w większości za pomocą tych samych obiektów. Zresztą trudno się dziwić. iOS to wycinek macOS.

Różne procesory to obecnie żaden problem. Apple od lat ma opanowane techniki kompilacji tego samego projektu na całkiem różne architektury. Przypomnę PowerPC i Intel. Teraz gdy programista testuje aplikację na iOS w symulatorze, to Xcode nie generuje kodu na ARM, który jest emulowany w symulatorze, ale od razu powstaje kod na Intela. Czyli od początku istnienia iOS 2.0, Xcode potrafił kompilować programy iOS na procesory Intela.

Jest jeszcze jedno ważne ułatwienie. Autolayout i promowanie wśród deweloperów tworzenia uniwersalnych (iPhone, iPad) aplikacji, których interfejs dostosowuje się do wielkości ekranu. Takie programy znacznie łatwej będzie można umieścić w oknie lub na ekranie komputera. Obsługa rozdzielczości retina również sprzyja uniwersalności. iPady mają ilości piksli na ekranie zbliżone do tych w komputerach. Dzielenie ekranu i inne funkcje macOS też są ułatwieniem.

Problemy i różnice

Największym problemem jest interfejs. Nie tylko całkowicie różna obsługa za pomocą dotyku lub kursora, ale również drogi, jakimi się rozwinął. iOS bazuje na ekranach, macOS na oknach. W iOS można dotykać ekranu w wielu miejscach naraz. W macOS pozwala na to tylko gładzik i to w ograniczony sposób (nie widzimy miejsca dodatkowych dotknięć na ekranie).

Złożoność budowy interfejsu macOS jest znacznie większa. Choć wiele elementów działa podobnie, jak np. przesuwane listy i kolekcje obiektów, to w szczegółach mocno się różnią. Inna jest obsługa klawiatury. W iOS musimy tak konstruować interfejs, aby klawiatura nam nie zasłoniła miejsc, gdzie wprowadzamy tekst. W macOS nie ma tego problemu. Przenoszenie elementów również przebiega inaczej za pomocą palca i myszy (gładzika).

Najwięcej jednak problemów może sprawdzić inna hierarchia interfejsu i inne zasady umieszczania elementów. Nie chodzi o to, co widzi użytkownik, ale o organizację tego od strony programisty.

Jednak się da

Jak wiele plotek i przecieków wskazuje, Apple nie porzucił projektu Marcepan i umożliwi już w tym roku tworzenie uniwersalnych aplikacji. Jak pisałem, problemem jest „tylko” interfejs.

Na szczęście można wybrać sporą część wspólną. Wiele elementów interfejsu iOS jest i działa bardzo podobnie na macOS. Wiele innych można dość szybko dostosować.

Gdybym był na miejscu wykonawców projektu Marcepan, wybrałbym elementy działające prawie identycznie. W macOS dodałbym nowe klasy dziedziczące po macOS’owych i nadał im nazwy takie same jak w iOS. Wybrałbym też inne najważniejsze i najpopularniejsze w aplikacjach iOS elementy interfejsu i w macOS stworzył odpowiednie nakładki na najbliższe im klasy lub w ostateczności napisał nowe.

Brzmi to prosto, ale naprawdę wymaga dużego nakładu pracy, a co ważniejsze wybranie właściwej drogi, która nie stanie się w przyszłości wąską lub ślepą uliczką i mam nadzieję, że na to projektanci poświęcili najwięcej czasu. Znając życie, podczas WWDC dowiem się, że „Apple pracowało nad tym projektem do x lat”, gdzie x zawiera się w przedziale od 7 do 10.

Tylko w jedną stronę.

Moim zdaniem projekt Marcepan nie pozwoli na przeniesienie żywcem gotowych aplikacji z iOS na macOS. Istniejące aplikacje trzeba będzie mniej lub bardziej dostosować. Możliwe, że trafią się szczęściarze, którym wystarczy, że dodadzą w projekcie „target” macOS i ponownie wykonają kompilacje. Tak czy siak, wiele projektów z iOS powinno dać się zaadaptować do aplikacji uniwersalnych bardzo niewielkim nakładem pracy.

Jednak jestem przekonany, że w drugą stronę tak łatwo się nie da. Projekty na macOS, nawet gdy nie są złożone, to muszą używać wielu całkiem innych elementów interfejsu, do tego zagnieżdżonych w inny niż w iOS sposób.

Pamięć RAM. To też istotne. W macOS pamięci mamy pod dostatkiem. Nie chodzi tylko o pamięć fizyczną, ale rownież o wirtualną, której system może dostarczyć sporo. W iOS nie ma na razie i raczej szybko nie będzie obsługi pamięci wirtualnej. Do tego fizycznej jest zazwyczaj mniej.

Jednak właśnie kierunek z iOS do macOS przyniesie użytkownikom, deweloperom i Apple największe korzyści. W końcu może przestaną straszyć na macOS tak kiepsko napisane aplikacje, jak Slack, których odpowiedniki na iOS działają całkiem przyzwoicie. Nawet leniwy deweloper, jeżeli poświęcając kilka godzin pracy, zyska możliwość sprzedaży programu na nowej platformie, skorzysta z tej szansy. Dzięki temu, na macOS pojawi się więcej zazwyczaj prostych, ale przydatnych programów.

To nie koniec, a nowy początek komputerów Apple

Wbrew temu, co zdarzyło mi się przeczytać w internecie, Apple w ten sposób „nakręci” sprzedaż komputerów, a nie ją osłabi. Jak pisałem, to macOS odczuje zdecydowany wzrost ilości aplikacji, a nie iOS. iOS również zyska, ale pośrednio. Na iPad’a aplikacje pisane z myślą o uniwersalności mogą być lepiej dopracowane i pojawią się też jakieś nowe bardziej zaawansowane projekty.

Nie ulega wątpliwości, że największymi beneficjentami projektu Marcepan (vel Marzipan) będą użytkownicy, zwłaszcza macOS.

Przeczytaj więcej o tym co w nowych systemach iOS 12 i macOS 10.14.

Może Cię zainteresować: