WWDC 2018 Pamiętnik programisty iOS

Opublikowany: 2022-03-10
Szybkie podsumowanie ↬ Od 1987 roku corocznie odbywa się konferencja Apple Worldwide Developers Conference (WWDC), która utrzymuje programistów iOS w ryzach. Lou Franco obejrzał tegoroczne wydarzenie i dzieli się swoimi notatkami i odniesieniami na wypadek, gdybyś go przegapił.

Tradycyjne granice lata w USA to Memorial i Labor Day, ale programiści iOS zaznaczają lato przez WWDC i wydanie iPhone'a. Mimo że w tym tygodniu w Nowym Jorku jest chłodno i deszczowo, jestem w letnim nastroju i nie mogę się doczekać odnowienia tego lata i obietnicy WWDC.

Zdjęcie przed centrum kongresowym San Jose McEnery
WWDC (źródło obrazu) (duży podgląd)

Jest ranek 4 czerwca i przeglądam moje notatki z WWDC 2017. W zeszłym roku napisałem, że ARKit i Core ML to dwie z największych atrakcji. To było odświeżające, gdy Apple skupiło się na uczeniu maszynowym (ML), ale nie było zbyt wiele kontynuacji w pozostałej części 2017 roku. ARKit wzbudził pewne zainteresowanie, ale nie ma zabójczej aplikacji (być może Pokemon Go, ale była popularna przed ARKit) . Apple nie dodało do swojej początkowej biblioteki modeli Core ML do pobrania po ogłoszeniu Core ML.

Apple wypuściło Turi Create, a Lobe wypuściło nowego, interesującego producenta modeli Core ML w zeszłym miesiącu. W przestrzeni Apple/ML twórca Swift, Chris Lattner, stosuje inne podejście do Swift dla TensorFlow. Ale z zewnątrz Core ML wydaje się mieć głównie jedno oczywiste zastosowanie: klasyfikację obrazów. Wydaje się, że nie ma zbyt wiele energii wokół odkrywania szalenie różnych zastosowań (chociaż wszyscy wiemy, że ML jest podstawą autonomicznych samochodów i niesamowitych demonstracji, takich jak Google Duplex).

Więcej po skoku! Kontynuuj czytanie poniżej ↓

Innym sposobem, w jaki Apple używa ML, jest Siri, a na początku tego roku pisałem o SiriKit i wspomniałem o jego postrzeganych i rzeczywistych wadach w porównaniu z Alexą i Google. Jedną z kwestii, którą zbadałem, było to, w jaki sposób nacisk Siri na predefiniowane intencje ogranicza jego zasięg, ale nie zapewnia obiecanej dokładności, którą można uzyskać z ograniczonego skupienia.

Wprowadzenie HomePoda w zeszłym roku tylko podkreśliło nieszczęście Siri, a szeroko komentowane badanie satysfakcji klientów wykazało 98% zadowolenia z iPhone'a X, ale tylko 20% zadowolenia z Siri.

Mając to wszystko w pamięci, osobiście miałem nadzieję usłyszeć, że Apple zamierza wprowadzić kilka poważnych ulepszeń w AR, ML i Siri. W szczególności, jako programista iOS, chciałem zobaczyć znacznie więcej modeli Core ML, obejmujących więcej niż tylko klasyfikację obrazów i większą pomoc w tworzeniu modeli. W przypadku Siri chciałem zobaczyć o wiele więcej intencji i być może jakąś wskazówkę, że intencje będą rzeczą, która będzie dodawana przez cały rok. To była długa szansa, ale w przypadku AR kolejnym krokiem jest urządzenie. Ale w międzyczasie liczyłem na większą dokładność przestrzenną.

Wreszcie, uwielbiam książki Xcode Playgrounds i iPad Playground, ale muszą być o wiele szybsze i stabilne, więc też miałem nadzieję, że coś tam znajdzie.

Rankiem WWDC napisałem na Twitterze:

Obraz tweeta z moimi życzeniami z WWDC
Mój tweet opisujący, na co liczyłem z WWDC 2018 (duży podgląd)

To nie była przepowiednia. To tylko lista rzeczy, których chciałem użyć w 2017 roku, ale uznałem, że są one zbyt słabe lub zbyt trudne do rozpoczęcia i miałem nadzieję, że Apple wprowadzi pewne ulepszenia.

Moim planem na ten dzień jest obejrzenie przemówienia na żywo, a następnie obejrzenie Platformy Stanu Unii. Dają one dobry przegląd tego, na czym należy się skoncentrować przez resztę tygodnia.

Koniec dnia 1: Przemówienie i platformy Stan Unii

Pierwszy dzień WWDC to przemówienie, które jest przeznaczone do użytku publicznego, oraz Platforms State of the Union, które jest przeglądem całego wydarzenia, z pewnymi szczegółami dla programistów, aby mogli wybrać, w których sesjach chcą uczestniczyć.

Podsumowanie znaczących ogłoszeń programistów innych niż iOS

WWDC nie dotyczy wyłącznie rozwoju iOS, więc oto krótka lista innych rzeczy, które wydarzyły się na innych platformach lub które nie są zbytnio skupione na programistach.

  • Aby usunąć to z drogi, w ogóle nie było ogłoszeń dotyczących sprzętu . Bez podglądów i bez aktualizacji na Macu Pro. Jesienią będziemy musieli poczekać na iPhone'a i kolejne wydarzenia.
  • iOS 12 ma nową aplikację Skróty, która wydaje się być wynikiem przejęcia Workflow. Jest to sposób na „skryptowanie” serii kroków poprzez przeciąganie i upuszczanie . Możesz także przypisać skrót do słowa kluczowego Siri, które omówię poniżej.
  • iOS automatycznie grupuje powiadomienia pochodzące z tej samej aplikacji i pozwala działać na nich jako na grupie.
  • Animojis może teraz naśladować, jak wystawiasz język, a nowe Memoji to ludzkie twarze , które można dostosować do własnych upodobań.
  • FaceTime obsługuje grupowy czat wideo do 32 osób.
  • Dostępna jest nowa aplikacja Czas przed ekranem, która dostarcza raporty na temat korzystania z telefonu i aplikacji (aby pomóc Ci kontrolować siebie i być mniej rozproszonym). Jest to również podstawa nowej kontroli rodzicielskiej.
  • Apple TV otrzymał małą aktualizację: wsparcie dla Dolby Atmos i nowe wygaszacze ekranu zaczerpnięte z Międzynarodowej Stacji Kosmicznej .
Zdjęcie nowego wygaszacza ekranu Apple TV Space
Wygaszacz ekranu Apple TV Space (duży podgląd)
  • Zegarek otrzymał tryb rywalizacji, aby rzucić wyzwanie innym wyzwaniom związanym z treningiem. Będzie również próbował automatycznie wykryć początek i koniec treningów na wypadek, gdybyś zapomniał je rozpocząć lub zatrzymać, a teraz ma treningi Wędrówka i Joga.
  • Zegarek ma również nowy tryb Walkie-Talkie, który możesz włączyć dla zaufanych kontaktów.
  • W Watch dostępnych jest więcej zestawów audio SDK , a aplikacja Apple Podcasts jest już dostępna. Spodziewam się, że aplikacje do podcastów innych firm również skorzystają z tych nowych zestawów SDK.
  • Mac znalazł miejsce zakotwiczenia wydarzenia (co, miejmy nadzieję, wskazuje na ponowne zainteresowanie). Będzie nosił nazwę macOS Mojave i będzie wyposażony w tryb ciemny .
  • W Mac App Store pojawiły się duże aktualizacje, ale w szczególności jest on teraz traktowany tak samo pod względem wizualnym i treści, jak iOS App Store w zeszłym roku. W piaskownicy jest wystarczająco dużo zmian, że Panic postanowiła przenieść tam Transita z powrotem .
  • Szybki przegląd w Finderze zawiera teraz kilka prostych czynności , które możesz wykonać na pliku (np. obracanie obrazu) i można go dostosować za pomocą Automatora.
  • Mojave będzie ostatnią wersją systemu macOS obsługującą 32-bitowe aplikacje i frameworki, co oznacza, że ​​Quick Time Framework odejdzie. Podobno został zastąpiony niektórymi funkcjami przechwytywania wideo w samym systemie operacyjnym.
  • Apple ogłosił, że wewnętrznie używa portu UIKit do tworzenia aplikacji na Maca i pokazał porty Giełda, Wiadomości, Dom i Notatki głosowe. Nowe ramy zostaną wydane w 2019 roku.

Ogłoszenia programistów iOS, które mnie najbardziej ekscytują

Deweloperzy iOS również otrzymali dobre wieści. Natrafili na cztery główne obszary, w których chciałem poprawić:

  • SiriKit ma teraz niestandardowe intencje , co znacznie otwiera możliwości.
  • Create ML to nowy sposób używania Xcode Playgrounds do trenowania modeli za pomocą uczenia transferu , który umożliwia rozszerzanie istniejących modeli o własne dane treningowe .
  • Place zabaw Xcode umożliwiają teraz dodawanie kodu na dole strony i uruchamianie go bez ponownego uruchamiania . Trudno powiedzieć, czy Playgrounds będzie bardziej stabilny, dopóki nie otrzymamy prawdziwej wersji we wrześniu, ale to znacznie przyspieszy testowanie kodu.
  • ARKit 2 został ogłoszony wraz z nowym formatem plików Augmented Reality o nazwie USDZ , który jest otwarty i został opracowany przez Adobe i Pixar. Adobe już zapowiedział wsparcie dla narzędzi. Umożliwi użytkownikom i programistom przechowywanie i udostępnianie zasobów i doświadczeń AR. Ponadto ARKit 2 pozwala wielu urządzeniom znajdować się w tym samym środowisku AR i obsługuje wykrywanie obiektów 3D.

Nie dostaliśmy urządzenia AR, ale wydaje się, że wkrótce dostaniemy. I musi pochodzić od Apple (nie stron trzecich), ponieważ uruchomienie ARKit wymaga urządzenia z systemem iOS.

Konfigurowanie urządzenia

Wszystko, czego potrzebujesz, jest teraz dostępne w portalu dla programistów. Aby użyć kodu w artykule, potrzebujesz Xcode 10 Beta. Nie polecałbym jeszcze korzystania z iOS 12 Beta, ale jeśli naprawdę chcesz, przejdź do portalu na swoim urządzeniu i pobierz profil konfiguracji beta iOS 12.

Jedyną ważną rzeczą, do której potrzebujesz urządzenia z wersją beta, jest ARKit 2. Wszystko inne powinno działać wystarczająco dobrze w symulatorze Xcode 10. W pierwszej wersji beta obsługa skrótów Siri w symulatorze jest ograniczona, ale jest wystarczająco dużo, by sądzić, że zostanie to naprawione w przyszłych wydaniach.

Koniec dnia 2: Gra z niestandardowymi intencjami Siri

W zeszłym roku pisałem, jak musisz dopasować się do jednej z predefiniowanych intencji Apple, aby korzystać z SiriKit w swojej aplikacji. Mechanizm ten został wprowadzony w 2016 r. i dodany w 2017 r., a nawet między wydarzeniami WWDC. Ale było jasne, że podejście Amazona do niestandardowych zamiarów było lepsze, jeśli chodzi o sterowanie głosowe w bardziej zróżnicowanych aplikacjach, a Apple dodał to do SiriKit w zeszłym tygodniu.

Żeby było jasne, jest to pierwsza implementacja, więc nie jest jeszcze tak rozbudowana jak Alexa Skills, ale otwiera całkiem możliwości Siri. Jak wspomniałem w poprzednim artykule, głównym ograniczeniem niestandardowych intencji jest to, że programista musi wykonać całe tłumaczenie języka. SiriKit trochę to omija, prosząc użytkownika o podanie frazy, której chciałby użyć, ale wciąż potrzeba więcej tłumaczenia dla intencji niestandardowych niż dla intencji predefiniowanych.

Zbudowali się na tym samym fundamencie, co predefiniowane intencje, więc wszystko, co omówiłem, nadal obowiązuje. W rzeczywistości pokażę ci, jak dodać nową niestandardową intencję do List-o-Mat, aplikacji, którą napisałem do oryginalnego artykułu SiriKit.

(Bezpłatna) Obsługa skrótów Siri, jeśli już obsługujesz Spotlight

Jeśli używasz NSUserActivity do wskazywania rzeczy w swojej aplikacji, które użytkownik może zainicjować za pomocą funkcji przekazywania lub wyszukiwania, łatwo jest udostępnić je również Siri.

Wszystko, co musisz zrobić, to dodać następujący wiersz do obiektu aktywności:

 activity.isEligibleForPrediction = true

Będzie to działać tylko w przypadku działań z włączonym Spotlight (gdzie isEligibleForSearch ma wartość true ).

Teraz, gdy użytkownicy wykonują tę czynność, jest ona uważana za przekazaną do użytku w Siri. Siri poleci bardzo często wykonywane czynności lub użytkownicy mogą je znaleźć w aplikacji Skróty. W obu przypadkach użytkownik będzie mógł przypisać własną wypowiadaną frazę, aby ją uruchomić. Twoja pomoc w rozpoczęciu aktywności za pomocą Spotlight jest wystarczająca, aby wesprzeć jej rozpoczęcie za pomocą skrótu.

W List-o-Mat możemy udostępnić poszczególne listy Spotlight i Siri, konstruując obiekty aktywności i przypisując je do ListViewController . Użytkownicy mogli je otwierać za pośrednictwem Siri z własną frazą.

W naszym przypadku jest to zbędne, ponieważ mieliśmy wstępnie zdefiniowany zamiar otwarcia listy, ale większość aplikacji nie ma tyle szczęścia i ma teraz ten prosty mechanizm. Jeśli więc Twoja aplikacja zawiera działania, które nie są obsługiwane przez predefiniowane intencje Siri (np. odtwarzanie podcastu), możesz po prostu umożliwić im przewidywanie i nie martwić się niestandardowymi intencjami.

Konfigurowanie SiriKit do korzystania z niestandardowych zamiarów

Jeśli musisz użyć niestandardowej intencji, do Twojej aplikacji należy dodać SiriKit, co wymaga niewielkiej konfiguracji.

Wszystkie kroki konfiguracji SiriKit dla intencji niestandardowych są takie same, jak dla intencji predefiniowanych, co zostało szczegółowo omówione w moim artykule SiriKit na temat Smashing. Podsumowując:

  1. Dodajesz rozszerzenie, więc potrzebujesz nowego identyfikatora aplikacji, a profil aprowizacji i potrzeby związane z uprawnieniami aplikacji mają dodane Siri.
  2. Prawdopodobnie potrzebujesz grupy aplikacji (w ten sposób komunikują się rozszerzenie i aplikacja).
  3. Będziesz potrzebować rozszerzenia Intents w swoim projekcie
  4. Istnieją specyficzne dla Siri klucze .plist i uprawnienia projektu, które musisz zaktualizować.

Wszystkie szczegóły można znaleźć w moim artykule SiriKit, więc omówię tylko to, czego potrzebujesz, aby wesprzeć niestandardową intencję w List-o-Mat.

Dodawanie polecenia kopiowania listy do List-o-Mat

Intencje niestandardowe mają być używane tylko tam, gdzie nie ma wstępnie zdefiniowanej intencji, a Siri faktycznie oferuje wiele obsługi list i zadań w swojej domenie Listy i Notatki Siri.

Ale jednym ze sposobów użycia listy jest jako szablon dla powtarzającej się procedury lub procesu. Aby to zrobić, będziemy chcieli skopiować istniejącą listę i odznaczyć wszystkie jej pozycje. Wbudowane intencje List nie obsługują tej akcji.

Najpierw musimy dodać sposób, aby zrobić to ręcznie. Oto demonstracja tego nowego zachowania w List-o-Mat:

Animowany GIF z demonstracją list kopiowania
Kopiowanie listy w List-o-Mat

Aby to zachowanie było możliwe do wywołania przez Siri, „przekażemy intencję”, co oznacza, że ​​poinformujemy iOS za każdym razem, gdy to zrobisz. Wtedy w końcu dowie się, że rano chcesz skopiować tę listę i zaoferować ją jako skrót. Użytkownicy mogą również wyszukiwać darowizny i ręcznie przypisywać frazy.

Tworzenie własnej intencji

Następnym krokiem jest utworzenie niestandardowej intencji w Xcode. Jest nowy szablon pliku, więc:

  1. Wybierz Plik → Nowy plik i wybierz „Plik definicji intencji SiriKit”.
    Zrzut ekranu okna dialogowego Nowy plik
    Wybierz, aby dodać plik definicji intencji (duży podgląd)
  2. Nazwij plik ListOMatCustomIntents.intentdefinition i wybierz umieszczenie pliku w celach aplikacji i rozszerzenia intencji. Spowoduje to automatyczne wygenerowanie klas do obu celów, które implementują protokoły intencji, ale mają zaimplementowane niestandardowe zachowanie.
  3. Otwórz plik definicji .
  4. Użyj przycisku + w lewym dolnym rogu, aby dodać intencję i nazwij ją „CopyList”.
  5. Ustaw kategorię na „Utwórz” i wypełnij tytuł i podtytuł, aby opisać zamiar:
    Zrzut ekranu z niestandardowym opisem intencji
    Dodaj kategorię, tytuł i podtytuł do intencji (duży podgląd)
  6. Dodaj parametr ciągu o nazwie „lista”.
    Zrzut ekranu sekcji parametrów
    Dodaj parametr ciągu o nazwie „lista” (duży podgląd)
  7. Dodaj typ skrótu z parametrem listy i nadaj mu tytuł o nazwie „Kopiuj listę”.
    Zrzut ekranu sekcji typu skrótu
    Dodaj typ skrótu o nazwie „Kopiuj listę” (duży podgląd)

Jeśli spojrzysz na listę intencji, zobaczysz, że ta intencja została już dla Ciebie skonfigurowana:

Przekazanie intencji

Kiedy wykonujemy interakcję z użytkownikiem w naszej aplikacji, o której chcemy, aby Siri wiedziała, przekazujemy ją Siri. Siri śledzi informacje kontekstowe, takie jak godzina, dzień tygodnia, a nawet lokalizacja, a jeśli zauważy wzór, zaoferuje użytkownikowi skrót.

Kiedy klikamy menu Kopiuj, dodaj ten kod:

 @available(iOS 12, *) func donateCopyListInteraction(listName: String) { let copyListInteraction = CopyListIntent() copyListInteraction.list = listName copyListInteraction.suggestedInvocationPhrase = "Copy \(listName)" let interaction = INInteraction(intent: copyListInteraction, response: nil) interaction.donate { [weak self] (error) in self?.show(error: error) } }

To po prostu tworzy obiekt automatycznie generowanej klasy CopyListIntent i przekazuje go Siri. Zwykle system iOS zbiera te informacje i czeka na odpowiedni czas, aby je pokazać, ale w przypadku programowania możesz otworzyć aplikację Ustawienia, przejść do sekcji Deweloper i włączyć ustawienia debugowania skrótu Siri.

Uwaga : w chwili pisania tego tekstu, w pierwszych wersjach beta, to ustawienie debugowania działa tylko na urządzeniach, a nie na symulatorze. Ponieważ ustawienie już istnieje, spodziewam się, że zacznie działać w kolejnych wersjach beta.

Zrzut ekranu ustawień debugowania Siri
Włącz debugowanie skrótów Siri

Gdy to zrobisz, Twój przekazany skrót pojawi się w sugestiach Siri w Spotlight.

Zrzut ekranu podarowanego skrótu w Siri
Możesz debugować swój podarowany skrót w wyszukiwarce

Kliknięcie, które wywoła Twoje rozszerzenie Intent, ponieważ zezwalamy na wykonywanie w tle. Dodamy wsparcie dla tego w następnej kolejności.

Obsługa niestandardowej intencji

Mamy już rozszerzenie Intents, a ponieważ plik definicji niestandardowych intencji jest już dodany do pliku, zawiera on również wygenerowane klasy intencji. Wszystko, co musimy zrobić, to dodać obsługę.

Pierwszym krokiem jest dodanie do rozszerzenia nowej klasy o nazwie CopyListIntentHandler . Oto jego kod:

 import Intents @available(iOS 12, *) class CopyListIntentHandler: ListOMatIntentsHandler, CopyListIntentHandling { func handle(intent: CopyListIntent, completion: @escaping (CopyListIntentResponse) -> Void) { // Find the list var lists = loadLists() guard let listName = intent.list?.lowercased(), let listIndex = lists.index(where: { $0.name.lowercased() == listName}) else { completion(CopyListIntentResponse(code: .failure, userActivity: nil)) return } // Copy the list to the top, and respond with success copyList(from: &lists, atIndex: listIndex, toIndex: 0) save(lists: lists) let response = CopyListIntentResponse(code: .success, userActivity: nil) completion(response) } }

Intencje niestandardowe mają tylko fazę potwierdzenia i obsługi (niestandardowa rozdzielczość parametrów nie jest obsługiwana). Ponieważ domyślne confirm() zwraca sukces, po prostu zaimplementujemy handle() , które musi przejrzeć listę, skopiować ją i poinformować Siri, czy się udało, czy nie.

Musisz również wysłać do tej klasy z zarejestrowanego programu obsługi intencji, dodając ten kod:

 if #available(iOS 12, *) { if intent is CopyListIntent { return CopyListIntentHandler() } }

Teraz możesz dotknąć tej sugestii Siri i wywoła to:

Zrzut ekranu aktywowanego skrótu
Aktywuj skrót (duży podgląd)

Dotknięcie przycisku Utwórz spowoduje skopiowanie listy. Przycisk mówi „Utwórz” ze względu na kategorię, którą wybraliśmy w pliku definicji intencji.

Uff, to było dużo. Te nowe skróty Siri są główną funkcją iOS 12, która ma nową, dużą powierzchnię programisty do zbadania. Ponadto, ponieważ miałem dobry (i udokumentowany) przykład Siri do pracy, rozsądne było dodanie do niego nowych funkcji w tym tygodniu.

Możesz zobaczyć aktualizację List-o-Mat w GitHub. Do czasu wydania Xcode 10 i iOS 12 znajduje się we własnej gałęzi.

Przez następne kilka dni będę głównie przyglądał się przykładowemu kodowi Apple lub robił znacznie mniejsze projekty.

Koniec dnia 3: Place zabaw Xcode

Cały poprzedni dzień spędziłem w Xcode 10 beta, który ani razu się nie zawiesił i wydawał się gotowy do rozwoju. Więc teraz chciałem poznać nowe funkcje Playgrounds.

Najważniejszą rzeczą, jakiej chciałem od placów zabaw, jest uczynienie ich bardziej stabilnymi i znacznie szybszymi. Aby przyspieszyć, Apple dodał dużą funkcję — tryb REPL.

Przed Xcode 10, gdy byłeś w Playground, który miał automatyczne uruchamianie (co jest ustawieniem domyślnym), każdy wiersz kodu faktycznie odbudował cały plik i uruchomił go od początku. Jeśli zbudowałeś jakieś państwo, było stracone. Ale prawdziwym problemem było to, że było to zbyt wolne dla iteracyjnego rozwoju. Kiedy używam Playgrounds, ustawiam je do ręcznego uruchamiania, ale nawet to jest powolne.

W Xcode 10 ręczne uruchamianie jest bardziej normą, ale po uruchomieniu możesz dodać więcej wierszy na dole strony i kontynuować wykonywanie. Oznacza to, że możesz eksplorować dane i rysować widoki iteracyjnie bez ciągłego przebudowywania i zaczynania od zera.

Aby rozpocząć, stworzyłem plac zabaw dla systemu iOS (Plik → Nowy → Plac zabaw) z szablonem Single View.

Włącz bieg ręczny, schodząc w dół menu poniżej przycisku Odtwórz (trójkąt w lewym dolnym rogu). Spowoduje to umieszczenie pionowego paska po lewej stronie, który pokazuje bieżącą pozycję głowicy Play (coś w rodzaju punktów przerwania).

Możesz dotknąć dowolnej linii, a następnie dotknąć przycisku odtwarzania po jej lewej stronie. Spowoduje to uruchomienie Placu zabaw do tego momentu. Następnie możesz przejść dalej, dotykając linii znajdujących się niżej na placu zabaw. Co ważne, możesz dodać więcej linii na dole i wpisać Shift + Enter po każdym, aby przesunąć głowę Play do tego punktu.

Oto GIF, w którym zmieniam etykietę widoku bez konieczności ponownego uruchamiania Placu zabaw. Po każdej wpisanej linii naciskam Shift + Enter .

GIF z Playground z trybem REPL
Dodaj więcej kodu i uruchom go bez ponownego uruchamiania

Playgrounds obsługuje teraz niestandardowe renderowanie twoich typów, a Apple robi duży nacisk na to, aby każda platforma Swift zawierała Playground, aby to udokumentować.

Zdjęcie WWDC przedstawiające slajd, aby zachęcić do większej liczby placów zabaw
TJ Usiyan prosi uczestników WWDC o dodanie placów zabaw do swoich projektów. (duży podgląd)

Koniec dnia 4: Utwórz ML

W zeszłym roku Apple zrobił duży krok naprzód w programowaniu uczenia maszynowego na swoich urządzeniach. Pojawił się nowy format pliku modelu ML i bezpośrednia obsługa go w Xcode.

Potencjał polegał na tym, że istniałaby duża biblioteka tych plików modeli, że istniałyby narzędzia, które by je tworzyły, i że znacznie więcej programistów aplikacji byłoby w stanie włączyć ML do swoich projektów bez konieczności tworzenia modeli.

To nie do końca się zmaterializowało. Apple nie dodało do repozytorium modeli po WWDC i chociaż istnieją repozytoria innych firm, w większości mają one modele, które są odmianami demonstracji klasyfikacji obrazów. ML jest używany nie tylko do klasyfikacji obrazów, ale nie pojawił się szeroki wybór przykładów.

Stało się więc jasne, że każda prawdziwa aplikacja będzie potrzebowała swoich programistów do trenowania nowych modeli. Apple wypuściło Turi Create w tym celu, ale nie jest to proste.

Na WWDC 2018 Apple zrobił kilka rzeczy dla Core ML:

  1. Rozszerzyli część Core ML dotyczącą przetwarzania języka naturalnego (NLP), co daje nam nową główną domenę przykładów.
  2. Dodali koncepcję Transfer Learning do Core ML, która umożliwia dodawanie danych szkoleniowych do istniejącego modelu . Oznacza to, że możesz pobierać modele z biblioteki i dostosowywać je do własnych danych (na przykład pozwalać im na rozpoznawanie nowych obiektów na dostarczonych obrazach).
  3. Wydali Create ML, który jest zaimplementowany w Xcode Playgrounds i umożliwia przeciąganie i upuszczanie danych do szkolenia oraz generowanie rozszerzeń modelu (przy użyciu Transfer Learning).

To kolejny miły krok w demokratyzacji ML. Nie ma tu dużo kodu do napisania. Aby rozszerzyć klasyfikator obrazu, wystarczy zebrać i oznaczyć obrazy. Gdy już je masz, po prostu przeciągnij je do Create ML. Demonstrację można zobaczyć w tym filmie dotyczącym tworzenia ML WWDC.

Koniec tygodnia: Zagraj w nowe wersje demonstracyjne AR

ARKit był kolejnym dużym dodatkiem w zeszłym roku i wydaje się jeszcze bardziej jasne, że nadchodzi urządzenie AR.

Mój kod ARKit z zeszłorocznego artykułu to wciąż dobry sposób na rozpoczęcie pracy. Większość nowych funkcji ma na celu zwiększenie dokładności i szybkości AR.

Następnie, jeśli zainstalowałeś wersję beta, na pewno zechcesz pobrać nową aplikację demonstracyjną SwiftShot ARKit. Ta aplikacja korzysta z nowych funkcji ARKit, zwłaszcza z trybu wieloosobowego. Co najmniej dwa urządzenia w tej samej sieci i w tym samym miejscu mogą komunikować się ze sobą i widzieć to samo doświadczenie AR.

Oczywiście, aby w to zagrać, potrzebujesz dwóch lub więcej urządzeń, które chcesz zainstalować w wersji beta iOS 12. Czekam na publiczną wersję beta, ponieważ mam tylko jedno urządzenie z bezpieczną wersją beta.

Łatwiejszą do zabawy aplikacją AR jest nowa aplikacja Measure, która pozwala mierzyć długość rzeczywistych obiektów, które widzisz w widoku z kamery AR. Istnieją aplikacje innych firm, które to robią, ale Apple jest dopracowany i preinstalowany z iOS 12.

Linki do filmów WWDC i przykładowego kodu

Tak więc nie mogę się doczekać, aby tego lata zrobić więcej z Xcode 10 i iOS 12, podczas gdy czekamy na nowe telefony i inne urządzenia, które Apple wyda pod koniec lata. W międzyczasie programiści iOS mogą cieszyć się słońcem, śledzić nasze wędrówki dzięki naszej nowej wersji beta Watch OS i oglądać te filmy WWDC, gdy tylko nadarzy się okazja.

Możesz przesyłać strumieniowo filmy WWDC 2018 z portalu dla programistów Apple. Istnieje również ta nieoficjalna aplikacja Mac do oglądania filmów WWDC.

Oto filmy, o których mowa w tym artykule:

  • Przemówienie WWDC 2018
  • Platformy WWDC 2018 Stan Unii
  • Wprowadzenie do skrótów Siri
  • Jak najlepiej wykorzystać place zabaw w Xcode
  • Przedstawiamy Create ML, a jeśli chcesz czegoś bardziej zaawansowanego, przewodnik po Turi Create

Aby rozpocząć grę z Xcode 10 i iOS 12:

  • Pobierz wersje beta (odwiedź na urządzeniu, aby uzyskać profil beta)
  • List-o-Mat z aktualizacjami skrótów Siri
  • Swift Shot (wieloosobowa gra ARKit 2)