← Zpět na blog

Od kusu dřeva po App Store

Přibližně před dvaceti lety vytáhl můj spolubydlící z kolejí a já kus dřeva z kontejneru, nakreslili jsme mřížku pravítkem, koupili jsme skleněné kameny v obchodě s uměleckými potřebami za pár korun a začali hrát go. Netušil jsem, co dělám. Vlastně ani teď ne, upřímně řečeno. Ale něco na té hře mě okamžitě uchvátilo — způsob, jakým něco zdánlivě tak jednoduchého mohlo být tak nekonečně hluboké. Mřížka 19×19. Černé a bílé kameny. Pravidla, která se naučíte za pět minut. A přesto, v té době, nejvýkonnější počítače na světě nedokázaly porazit silného lidského hráče. To mě fascinovalo.

Raná posedlost

Ta fascinace šla dostatečně hluboko, že mým závěrečným projektem na Kingston University bylo počítačové vidění — ručně jsem napsal algoritmus pro čtení stavu desky go z fotografie a dosáhl přesnosti přes 87 %. Na začátek 2000. let, před explozí hlubokého učení, jsem na to byl tiše hrdý.

Přibližně ve stejnou dobu jsem navštívil Japonsko na dva týdny specificky za účelem prvního setkání s kulturou go a hry s místními hráči. Prohrál jsem každý jediný zápas. Jeden zápas vyčnívá: mladý muž, pravděpodobně na úrovni dan, velmi plachý, s nápadně dlouhými nehty, v doprovodu svého otce. Byl jsem totálně zničen dříve, než jsem si vůbec uvědomil, co se děje — chvíli mi trvalo, než jsem si všiml, že musím vzdát.

Každý salon go, který jsem navštívil, byl tak hustý cigaretovým dýmem, že bylo téměř nemožné dohrát hru bez čerstvého vzduchu — a sám jsem kuřák. Hráči byli téměř výhradně starší lidé. Go mi připadalo jako koníček pro lidi v důchodovém věku, což mě překvapilo vzhledem k japonské pověsti v technologiích a inovacích. Zdálo se, že nikdo nespojuje go s výpočetní technikou. Zatím ne.

Dlouhá pauza

Život šel dál. Pracoval jsem jako Java vývojář, strávil rok v Accenture během studia (během nějž mi od stresu vypadaly všechny vlasy) a nakonec jsem se ocitl nezaměstnaný na dlouhé období po zdravotních potížích. Moje Java dovednosti se stávaly čím dál tím méně relevantními, jak průmysl postupoval bez mě. Pokoušel jsem se dohnat, ale propast se příliš rozevřela — a zjistil jsem, že mzdy v té části průmyslu ve skutečnosti klesly. Nestálo to za to.

Přes to vše jsem stále hrál go. Ne vážně — navštěvuji Exeter Go Club sem a tam asi patnáct let a jsem průměrný hráč přinejlepším. Ale hra mě nepustila.

Všechno zapadlo najednou

Pak, během pozoruhodně krátké doby, se stalo několik věcí najednou.

Zasáhl covidový lockdown. Šílel jsem v bytě a neměl co dělat, ale měl jsem to štěstí mít tři Apple zařízení — dárky od rodiny a partnera. Sledoval jsem dokumentární film AlphaGo a byl jsem elektrizován. Ta věc, která mě fascinovala na univerzitě — nemožnost toho, aby stroj zvládl go — byla vyřešena. A revoluce AI, kterou to odstartovalo, teprve začínala. Přišel ChatGPT. Pak Claude. Pak Apple oznámil Vision Pro.

Začal jsem si hrát s KataGo a všiml jsem si, že nemá pořádné rozhraní pro App Store®. Podíval jsem se na dostupné aplikace go pro iPhone® a iPad® a byly... v pořádku. Funkční. Ale žádná z nich neměla žádné funkce přístupnosti. Ani jedna aplikace go v celém App Store nedeklarovala podporu VoiceOver, Voice Control, Dynamic Type ani žádného jiného Appleova standardu přístupnosti. Ani jedna.

Pro hru, která se hraje nevidomými hráči po desetiletí — s hmatovými deskami se zdviženými liniemi v Japonsku, u Francouzské federace go, v Koreji — byl kompletní absence jakékoliv digitálně přístupné verze mezera, která by neměla existovat. Nevidomí hráči go byli zcela vyloučeni z ekosystému aplikací.

Všechno se najednou sešlo a zapadlo na místo. Naučím se vývoj pro iOS od nuly, použiji nástroje AI k urychlení učení a postavím aplikaci go, kterou může hrát každý — vidící i nevidoucí.

Začínám od nuly

1. července 2024 jsem vytvořil prázdný projekt Xcode s názvem "RenderedGoApp" — ne příliš inspirativní jméno. Nevěděl jsem nic o Swift, SwiftUI, RealityKit ani žádné z Appleových vývojových technologií. Všechno jsem se naučil prostřednictvím Appleovy oficiální dokumentace a bezplatných relací WWDC, bez formálního školení, bootcampů nebo vývojářských akcí.

O dva týdny později, 17. července, jsem ho přejmenoval na "Goban3D". Goban je tradiční japonský název pro tlustou dřevěnou desku s nohami, na které se hraje go. Jméno se zdálo správné — splňovalo Appleovy standardy pojmenování a říkalo přesně, co aplikace dělá.

Dostával jsem podporu pro dyslexii od základní školy až po střední. Vím, jaké to je, když nástroje nejsou vytvořeny s ohledem na vás. Takže od prvního řádku kódu přístupnost nebyla dodatečnou myšlenkou — byla důvodem, proč projekt existoval.

Katastrofa SceneKit

Jeden z nejtěžších momentů přišel, když Apple deprecoval SceneKit — 3D framework, ve kterém jsem postavil celou scénu desky. Byl jsem v tom dobrý. Scéna měla motýla poletujícího kolem, trávu se kývající, fyzikálně věrné osvětlení. Běželo to krásně s minimálním zatížením CPU. Pak Apple oznámil, že bude nahrazen RealityKit.

Byl jsem zuřivý. Ale se závazkem vydat něco moderního a nulovou tolerancí technického dluhu jsem věděl, že každý řádek SceneKit musí být vytrhaný a nahrazený. Motýl to nepřežil. RealityKit je nové Appleovo dítě, ale je to daleko nenasytnější zvíře než jeho předchůdce — něco, o čem bych rád jednoho dne diskutoval s Appleovým inženýrem.

Kde věci stojí

Dnes je Goban3D v externí betě v App Store pro iOS a macOS. Má 100% pokrytí přístupnosti napříč všemi sedmi kategoriemi přístupnosti Apple — VoiceOver, Dynamic Type, Voice Control, Reduce Motion, Reduce Transparency, Sufficient Contrast a Differentiate Without Color. Běží na každém iPhonu od 3,5" SE po 6,9" Pro Max, každém iPadu od 9,7" do 13" a nativně na Macu přes Catalyst. 3D deska je vykreslena v RealityKit s fyzikálně věrnými materiály, které odrážejí světlo jako skutečné dřevo a kámen. Je tu také čistý 2D režim pro případ, kdy chcete jednoduchost nebo šetřit baterii.

Nikdo mimo vývojový proces o tom zatím neví. Žádné mediální pokrytí, žádné povědomí komunity, žádní externí beta testeři. Tento blogový příspěvek je, jistým způsobem, poprvé, kdy to komukoli veřejně říkám.

Co přijde dál

Největší prioritou je najít beta testery se skutečnými potřebami přístupnosti — nevidomé hráče, lidi se slabým zrakem, motorickými postiženími. Aplikace byla postavena podle Appleových standardů, ale standardy jsou jen začátek. Potřebuji skutečné lidi, kteří mi řeknou, co funguje, co ne a na co jsem nepomyslel. Najít je bude jako hledat jednorožce, ale nevzdám se. Každý by měl být zahrnut.

Pokud byste chtěli vyzkoušet Goban3D nebo znáte někoho, kdo by měl prospěch z přístupné aplikace go, rád bych od vás slyšel. Pošlete e-mail na support@goban3d.com s předmětem "Beta Tester" a e-mailovou adresou Apple ID pro váš iPhone, iPad nebo Mac®. Brzy obdržíte pozvánku TestFlight®.

Toto bylo nejtěžší a nejvíce odměňující, co jsem kdy dělal. Od kusu dřeva na kolejním pokoji po App Store — trvalo to dvacet let, ale dostali jsme se sem.