Az Apple a múlt héten tartotta meg idei fejleszői konferenciáját, a WWDC-t. A rendezvénysorozatot megnyitó előadás – a keynote – során számos érdekes újítást árultak el a macOS és az iOS következő generációjával kapcsolatban. Ezek többsége szinte minden felhasználót érint, ilyen volt például a macOS Mojave éjszakai módja, vagy a csoportos FaceTime-beszélgetések lehetősége.
Az Apple szoftverfejlesztésért felelős alelnöke, Craig Federighi azonban kollégáival együtt néhány olyan részletre is kitért, amelyek kifejezetten az almás platformokat megcélzó programozók számára érdekesek. Lássunk tehát ezekre néhány, olykor talán kicsit szubjektíven kiválasztott példát!
Az első technológia, amit Craig célkeresztbe vett, a Metal. Ez a keretrendszer a macOS és az iOS legalacsonyabb szintű grafikai képességeit hivatott kezelni, hasonlóan például a grafikai és játékfejlesztők számára ismert OpenGL-hez.
A Metal sokat fejlődött 2014-es bejelentése óta, és idén is sok hasznos funkcióval bővült. Az egyik legjelentősebb fejlesztés, ahogyan az az iOS 12-vel kapcsolatban is többször elhangzott, a sebesség. A grafikailag különösen erőforrásigényes alkalmazások készítését a macOS külső grafikus kártyák, azaz eGPU-k támogatásával segíti. Az eGPU-k használatát is a Metal végzi, méghozzá nevéhez hűen nagyon kicsi számítási többletköltséggel: a keynote-on bemutatott példa szerint egy 13″-os MacBook Pro esetében három külső GPU hozzákapcsolása 6,5-szeres sebességnövekedést eredményezett a DaVinci Resolve videószerkesztő program filterjeinek futtatásában.
A Metal továbbfejlesztésével egyidőben a nála a macOS-en kevésbé gyors számítást nyújtó OpenGL-t és OpenCL-t az Apple elavultnak (“deprecated”) deklarálta, használatuk az almás eszközökön innentől kezdve nem javasolt, támogatásuk pedig várhatóan a jövőben meg fog szűnni.
Manapság igen népszerűek és informatikai berkekben köznyelvben forognak a különféle gépi tanulási (machine learning) technológiák. Az ezen alapuló technikák és algoritmusok bizonyos, “mesterséges intelligenciát” igénylő feladatok egyfajta megoldását jelentik. A machine learning algoritmusok betanítását tipikusan valamelyik népszerű, külső gépi tanulási eszközkészlet segítségével, nagyteljesítményű szervereken végzik. Ilyen rendszerek például az IBM Watson, a TensorFlow, a Keras, vagy a Turi Create.
Craig szerint “mi az Apple-nél úgy gondoltuk, ennél jobban is lehet ezt csinálni”, ezért létrehoztak egy olyan keretrendszert, amelyet egy már meglévő Mac gépünkön lehet futtatni, és nagyon gyors, így nem szükséges külön külső, nagyteljesítményű szervert venni vagy bérelni. Ez a keretrendszer a Create ML.
A Create ML használata egyszerű, eleve képes vizuális vagy nyelvi információt feldolgozni, tehát a tanításhoz nem szükséges, hogy a használója mélyebben értsen a gépi tanuláshoz. További érdekesség, hogy a Create ML az első olyan (nyilvános) framework a macOS-ben, amely teljesen Swift alapú, és csak Swiftből használható, Objective-C-ből nem.
Az új tanítási metódus sebességét és kompaktságát mutatja a Memrise-zal való együttműködésük eredménye. A Memrise egy nyelvtanulást segítő szoftver, amelyben a gépi tanulást képfelismerésre használják. Eredeti modelljük 90 MB volt, és 24 órába került a betanítása. A Create ML segítségével a tanítási idő 48 percre csökkent, a modell mérete pedig mindössze 3 MB lett.
A Create ML dokumentációja az érdeklődők számára már el is érhető: erre tessék!
Habár a számításigényes grafika és a gépi tanulás gyorsítása nagyon ígéretesnek és modernnek hangzik, az átlagfejlesztő nem biztos, hogy minden nap ezeket a technológiákat fogja használni. A macOS Mojave azon fejlesztők számára is tartogatott egy kellemes meglepetést, akik csupán iOS-alkalmazásaikat szeretnék elérhetővé tenni Macen. Az új macOS ugyanis tartalmaz egy UIKit-kompatibilitási réteget, amelyet adaptáltak az érintőképernyő helyett egérrel és billentyűzettel vezérelt környezetre. Segítségével elviekben sokkal egyszerűbb lesz eredetileg iOS-re készült alkalmazások felhasználói felületét portolni az asztali rendszerre. Hogy a gyakorlatban ez mennyire igazolódik be, azt meglátjuk pár hónap múlva. Az is elképzelhető, hogy lesznek olyan fejlesztők, akik eleve UIKit-tel kezdik majd a projektjeiket macOS-en is, hiszen ez a UI library jóval modernebb, kényelmesebb és konzisztensebb, mint eredeti macOS-es megfelelője, az AppKit.
Az Apple az idén is nagyon sok magasszintű, érdekes, újszerű képességgel ruházta fel kedvenc készülékeinket, azonban úgy gondolom, hogy néhány, a WWDC keynote során nem említett változtatás is érdemel néhány szót. Nem nagy dolog ugyan, de valószínűleg jópár programozónak megkönnyíti majd az életét a Network.framework, amely alacsonyszintű hálózati műveleteket tesz elérhetővé. Ha eddig macOS-en vagy iOS-en mondjuk egy TCP vagy UDP portot szerettünk volna közvetlenül használni, akkor ahhoz például a BSD socketeket használhattuk. A BSD socket API egy ősrégi unixos specifikációnak felel meg, és egy nem túl szép vagy kényelmes C interfészt ad. A Network framework ugyan még mindig C alapú, de sokkal kényelmesebb, szebb, és nehezebb helytelenül használni, mint a BSD socket API-t. A Network dokumentációját itt tekinthetjük meg.
Természetesen sokak számára a legérdekesebb újdonságok azok, amiket az Apple nem is dokumentált. Ezek sokszor betekintést nyújthatnak a rendszer belsőségeibe, információval szolgálhatnak arról, hogy hogyan is működik mindaz, ami a “motorháztető alá” van rejtve. Jonathan Levin, akiről korábban a TaiG jailbreak visszafejtése kapcsán írtunk, most közzétett egy listát azokról a dokumentálatlan változásokról, amelyeket eddig a macOS High Sierra és Mojave, illetve az iOS 11 és 12 között talált.
Láthatjuk, hogy Craig és csapata az elmúlt egy évben sem lustálkodtak szoftverfejlesztés terén.
Nektek lett fejlesztői szemszögből olyan kedvencetek, amit itt nem említettünk?
Szólj hozzá: Hozzászólok