← Späť na blog

Z kusu dreva do App Store

Asi pred dvadsiatimi rokmi sme s mojím spolubývajúcim na univerzite vytiahli z kontajnera kus dreva, nakreslili naň pravítkom mriežku, kúpili sme si v obchode s umeleckými potrebami sklenené kamene za asi tri libry a začali sme hrať Go. Netušil som, čo robím. Vlastne to stále neviem. Ale niečo na tejto hre ma okamžite chytilo – ako niečo zdanlivo jednoduché môže byť tak neuveriteľne hlboké. Mriežka 19 × 19. Čiernobiele kamene. Pravidlá, ktoré sa naučíte za päť minút. A predsa v tom čase najvýkonnejšie počítače na Zemi nedokázali poraziť silného ľudského hráča. To ma fascinovalo.

Raná posadnutosť

Táto fascinácia bola taká hlboká, že môj posledný ročník na Kingston University sa venoval počítačovému videniu – ručne som naprogramoval algoritmus na čítanie stavu hracej dosky Go z fotografie s presnosťou viac ako 87 %. Začiatkom prvého desaťročia 21. storočia, pred explóziou hlbokého učenia, som na to bol ticho hrdý.

Približne v rovnakom čase som na dva týždne navštívil Japonsko, aby som na vlastnej koži zažil kultúru hry Go a hral proti miestnym hráčom. Prehral som všetky zápasy. Jedna hra vyniká: mladý muž, pravdepodobne na úrovni dan, veľmi hanblivý, s nápadne dlhými nechtami, v sprievode svojho otca. Bol som úplne zničený skôr, ako som si uvedomil, čo sa stalo – chvíľu mi trvalo, kým som si uvedomil, že musím vzdať angažmán.

Každý Go salón, ktorý som navštívil, bol taký hustý od cigaretového dymu, že bolo takmer nemožné hrať bez čerstvého vzduchu – a to sám fajčím. Hráči boli takmer výlučne starší ľudia. Go sa zdalo byť zábavou pre ľudí v zlatom veku, čo ma miatlo vzhľadom na povesť Japonska v oblasti technológií a inovácií. Zdá sa, že nikto nespája Go s výpočtovou technikou. Aspoň nie zatiaľ.

Dlhá medzera

Život išiel ďalej. Pracoval som ako vývojár v Jave, počas štúdia na univerzite som strávil rok v spoločnosti Accenture (počas ktorého mi od stresu vypadali všetky vlasy) a nakoniec som sa kvôli zdravotným problémom na dlhé obdobie ocitol bez práce. Moje znalosti Javy sa stávali čoraz menej relevantnými, keďže sa odvetvie posúvalo ďalej bezo mňa. Snažil som sa dobehnúť zameškané, ale rozdiel sa príliš zväčšil – a zistil som, že mzdy v tejto časti odvetvia v skutočnosti klesli. Nestálo to za to.

Počas toho všetkého som stále hral Go. Nie vážne – navštevujem Exeter Go Club s prestávkami už asi pätnásť rokov a som v najlepšom prípade priemerný hráč. Ale hra ma nikdy nepustila.

Všetko naraz kliklo

Potom sa v pozoruhodne krátkom čase stalo niekoľko vecí naraz.

Udrel ma lockdown kvôli COVIDu. Liezol som po stenách a nemal som čo robiť, ale mal som to šťastie, že som mal tri zariadenia Apple – dary od rodiny a môjho partnera. Pozrel som si dokument AlphaGo a bol som nadšený. Vec, ktorá ma fascinovala na univerzite – nemožnosť stroja ovládať Go – bola vyriešená. A revolúcia umelej inteligencie, ktorú to odštartovalo, sa práve začínala. Prišiel ChatGPT. Potom Claude. Potom Apple oznámil Vision Pro.

Začal som sa hrať s KataGo a všimol som si, že nemá poriadne rozhranie App Store®. Pozrel som sa na aplikácie Go dostupné pre iPhone® a iPad® a boli... v poriadku. Funkčné. Ale žiadna z nich nemala žiadne funkcie prístupnosti. Ani jedna aplikácia Go v celom App Store nedeklarovala podporu pre VoiceOver, hlasové ovládanie, Dynamické písmo alebo ktorýkoľvek zo štandardov prístupnosti od spoločnosti Apple. Ani jedna.

V hre, ktorú hrajú nevidiaci ľudia už desaťročia – s použitím vyvýšených hmatových dosiek v Japonsku, vo Francúzskej federácii Go, v Kórei – sa úplná absencia akejkoľvek digitálne dostupnej verzie javila ako medzera, ktorá by nemala existovať. Hráči Go naslepo boli úplne vylúčení z ekosystému aplikácie.

Všetko sa zrazu sprisahalo a jednoducho zapadlo na svoje miesto. Naučil by som sa vývoj pre iOS od základov, s využitím nástrojov umelej inteligencie na urýchlenie učenia, a vytvoril by som aplikáciu Go, ktorú by mohol hrať ktokoľvek – či už vidí alebo nie.

Začíname od nuly

1. júla 2024 som vytvoril prázdny projekt Xcode s názvom „RenderedGoApp“ – nie veľmi inšpiratívny názov. Nevedel som nič o Swift, SwiftUI, RealityKit ani o žiadnej z vývojových technológií spoločnosti Apple. Všetko som sa naučil sám prostredníctvom oficiálnej dokumentácie spoločnosti Apple a bezplatných stretnutí WWDC, bez formálneho školenia, bootcampov alebo vývojárskych podujatí.

O dva týždne neskôr, 17. júla, som ho premenoval na „Goban3D“. Goban je tradičný japonský názov pre hrubú drevenú dosku s nohami, na ktorej sa hrá Go. Názov sa mi zdal správny – zodpovedal štandardom pomenovania spoločnosti Apple a presne hovoril, o akú aplikáciu ide.

Podporu s dyslexiou som dostával od základnej školy až po vysokú školu. Viem, aké to je, keď sa nástroje nevytvárajú s ohľadom na vás. Takže od prvého riadku kódu nebola prístupnosť až druhoradá – bola dôvodom existencie projektu.

Katastrofa SceneKit

Jeden z najťažších momentov nastal, keď Apple zrušil podporu SceneKitu – 3D frameworku, v ktorom som vytvoril celú scénu s doskou. Bol som v tom dobrý. Scéna mala poletujúceho motýľa, hojdajúcu sa trávu a fyzikálne osvetlenie. Bežala nádherne s minimálnym CPU. Potom Apple oznámil, že ho nahrádza RealityKit.

Bol som zúrivý. Ale s odhodlaním dodať niečo špičkové a s nulovou toleranciou voči technickému dlhu som vedel, že každý riadok SceneKitu musí byť vytrhnutý a nahradený. Motýľ neprežil. RealityKit je novým poznávacím znamením spoločnosti Apple, ale je to oveľa hladnejšia beštia ako jej predchodca – niečo, o čom by som sa jedného dňa rád porozprával s inžinierom spoločnosti Apple.

Kde sa veci majú

Goban3D je momentálne v externej beta verzii v App Store pre iOS a macOS. Má 100 % pokrytie prístupnosti vo všetkých siedmich kategóriách prístupnosti od spoločnosti Apple – VoiceOver, Dynamické písmo, Hlasové ovládanie, Znížiť pohyb, Znížiť priehľadnosť, Dostatočný kontrast a Rozlišovať bez farby. Funguje na každom iPhone od 3,5" SE do 6,9" Pro Max, na každom iPade od 9,7" do 13" a natívne na Macu prostredníctvom Catalyst. 3D doska je vykreslená v RealityKite s fyzikálne založenými materiálmi, ktoré zachytávajú svetlo ako skutočné drevo a kameň. K dispozícii je aj čistý 2D režim, keď chcete jednoduchosť alebo dlhšiu výdrž batérie.

Nikto mimo vývojového procesu ešte nevie o jeho existencii. Žiadne mediálne pokrytie, žiadna komunitná informovanosť, žiadni externí beta testeri. Tento blogový príspevok je v istom zmysle prvýkrát, čo o tom niekomu hovorím verejne.

Čo bude ďalej

Najväčšou prioritou je nájsť beta testerov so skutočnými potrebami v oblasti prístupnosti – nevidiacich hráčov, ľudí so slabým zrakom alebo motorickým postihnutím. Aplikácia bola vytvorená podľa štandardov spoločnosti Apple, ale štandardy sú len začiatok. Potrebujem skutočných ľudí, ktorí mi povedia, čo funguje, čo nie a na čo som ešte nepomyslel. Nájsť ich bude ako nájsť jednorožca, ale nevzdám sa. Zahrnúť by mali všetci.

Ak by ste si chceli vyskúšať Goban3D alebo poznáte niekoho, komu by prospela prístupná aplikácia Go, rád sa s vami spojím. Pošlite e-mail na adresu support@goban3d.com s predmetom „Beta Tester“ a e-mailovou adresou Apple ID pre váš iPhone, iPad alebo Mac®. Krátko nato dostanete pozvánku na TestFlight®.

Toto bola najťažšia a zároveň najodmeňujúca vec, akú som kedy urobil. Od kusu dreva v univerzitnom byte až po App Store – trvalo to dvadsať rokov, ale dostali sme sa až sem.