← Natrag na blog

Od komada drveta do App Storea

Otprilike dvadeset godina temu, moj cimer na sveučilištu i ja izvukli smo komad drveta iz kontejnera, nacrtali mrežu na njemu ravnalom, kupili stakleno kamenje iz kreativne radnje za otprilike tri funte i počeli igrati go. Nisam imao pojma što radim. Zapravo ni sada. Ali nešto u toj igri me odmah privuklo — način na koji nešto naizgled jednostavno može biti nevjerojatno duboko. Mreža od 19×19. Crno i bijelo kamenje. Pravila koja možete naučiti za pet minuta. A opet, u to vrijeme, najmoćnija računala na zemlji nisu mogla pobijediti jakog ljudskog igrača. To me fasciniralo.

Rana opsesija

Ta fascinacija bila je dovoljno duboka da je moj završni projekt na Kingston Universityu bio iz računalnog vida — rukom sam kodirao algoritam za čitanje stanja ploče za go s fotografije, postižući više od 87% točnosti. Za rano 2000-te, prije eksplozije dubokog učenja, bio sam tiho ponosan na to.

Otprilike u isto vrijeme, posjetio sam Japan na dva tjedna specifično da bih doživio kulturu goa iz prve ruke i igrao protiv lokalnih igrača. Izgubio sam svaku partiju. Jedna mi se igra posebno ističe: mladi čovjek, vjerojatno dan-razina, vrlo stidljiv, s upečatljivo dugim noktima, u pratnji oca. Bio sam potpuno uništen prije nego sam shvatio što se dogodilo — trebalo mi je neko vrijeme da primijetim da trebam predati.

Svaki salon goa koji sam posjetio bio je toliko pun cigaretnog dima da je bilo gotovo nemoguće odigrati partiju bez svježeg zraka — i sam sam pušač. Igrači su bili gotovo isključivo stariji. Go se činio zabavom za one u zlatnim godinama, što me zbunjivalo s obzirom na japanski ugled za tehnologiju i inovacije. Nitko nije činio vezu između goa i računalstva. Još ne.

Dugi razmak

Život je krenuo dalje. Radio sam kao Java razvojni programer, proveo godinu u Accentureu za vrijeme sveučilišta (tijekom koje su mi svi ispadali kosu od stresa) i naposljetku se zatekao nezaposlenim dugo vremena zbog zdravstvenih poteškoća. Moje Java vještine postajale su sve manje relevantne kako je industrija napredovala bez mene. Pokušao sam uhvatiti korak, ali jaz je bio prerastao — i otkrio da su plaće u tom dijelu industrije zapravo pale. Nije se isplatilo.

Kroz sve to, nastavio sam igrati go. Ne ozbiljno — pohađam Exeter Go Club s prekidima već oko petnaest godina i prosječan sam igrač u najboljem slučaju. Ali igra me nikada nije pustila.

Sve se spojilo odjednom

Zatim se, u izuzetno kratkom razdoblju, nekoliko stvari dogodilo odjednom.

Udario je COVID lockdown. Penjao sam se po zidovima bez ičega da radim, ali bio sam dovoljno sretan da imam tri Apple uređaja — poklone obitelji i partnera. Pogledao sam dokumentarac AlphaGo i bio elektrificiran. Stvar koja me fascinirala na sveučilištu — nemogućnost da stroj svlada go — bila je riješena. A AI revolucija koju je pokrenula tek je počinjala. Stigao je ChatGPT. Zatim Claude. Zatim je Apple najavio Vision Pro.

Počeo sam se igrati s KataGo i primijetio da nema pravo App Store® sučelje. Pogledao sam dostupne aplikacije za go za iPhone® i iPad® i bile su... solidne. Funkcionalne. Ali nijedna od njih nije imala nikakve značajke pristupačnosti. Niti jedna aplikacija za go na cijelom App Storeu nije prijavila podršku za VoiceOver, Voice Control, Dynamic Type ili bilo koji od Appleovih standarda pristupačnosti. Ni jedna.

Za igru koju su slijepi ljudi igrali desetljećima — koristeći taktilne ploče s uzdignutim linijama u Japanu, pri Francuskoj federaciji goa, u Koreji — potpuno odsustvo ikakve digitalno pristupačne verzije osjećalo se kao jaz koji ne bi trebao postojati. Slijepi igrači goa bili su potpuno isključeni iz ekosustava aplikacija.

Sve se složilo odjednom i kliknulo na mjesto. Naučit ću iOS razvoj od nule, koristeći AI alate za ubrzanje učenja, i izgradit ću aplikaciju za go koju svi mogu igrati — videći ili ne.

Polazak od nule

1. srpnja 2024. stvorio sam prazan Xcode projekt koji sam nazvao "RenderedGoApp" — ne baš nadahnjujuće ime. Nisam znao ništa o Swiftu, SwiftUI-ju, RealityKitu ili bilo kojoj od Appleovih razvojnih tehnologija. Sve sam naučio sam kroz Appleovu službenu dokumentaciju i besplatne WWDC sesije, bez formalnog treninga, bootcampova ili razvojnih događaja.

Dva tjedna kasnije, 17. srpnja, preimenovao sam ga u "Goban3D". Goban je tradicionalni japanski naziv za debelu drvenu ploču s nogama na kojoj se igra go. Naziv se osjećao ispravno — usklađivao se s Appleovim standardima imenovanja i govorio točno što aplikacija jest.

Primao sam podršku za disleksiju od osnovne škole sve do srednje škole. Znam kako je kada alati nisu izgrađeni imajući vas na umu. Stoga od samog prvog retka koda, pristupačnost nije bila naknadna misao — bila je razlog zašto projekt postoji.

Katastrofa SceneKita

Jedan od najtežih trenutaka došao je kada je Apple zastarilo SceneKit — 3D okvir na kojemu sam izgradio cijelu scenu ploče. Bio sam dobar u njemu. Scena je imala leptira koji leti okolo, travu koja se njiše, fizički zasnovano osvjetljenje. Radila je prekrasno s minimalnim CPU-om. Zatim je Apple objavio da ga RealityKit zamjenjuje.

Bio sam bijesan. Ali s predanošću isporuci nečega reznog i nultom tolerancijom za tehnički dug, znao sam da svaki redak SceneKita mora biti istrgan i zamijenjen. Leptir nije preživio. RealityKit je Appleovo novo dijete, ali mnogo je gladnija zvijer od svog prethodnika — nešto što bih volio raspraviti s Apple inženjerom jednog dana.

Gdje se stvari nalaze

Danas, Goban3D je u vanjskoj beti na App Storeu za iOS i macOS. Ima 100% pokrivenost pristupačnosti u svim sedam Appleovih kategorija pristupačnosti — VoiceOver, Dynamic Type, Voice Control, Reduce Motion, Reduce Transparency, Sufficient Contrast i Differentiate Without Color. Radi na svakom iPhoneu od 3,5" SE do 6,9" Pro Maxa, svakom iPadu od 9,7" do 13" i nativno na Macu putem Catalysta. 3D ploča renderira se u RealityKitu s fizički zasnovanim materijalima koji hvataju svjetlost poput pravog drveta i kamena. Tu je i čisti 2D način za kada želite jednostavnost ili trajanje baterije.

Nitko izvan razvojnog procesa ne zna da postoji. Nema medijske pokrivenosti, nema svjesnosti zajednice, nema vanjskih beta testera. Ovaj blog post je, na neki način, prvi put da javno govorim o tome.

Što slijedi

Najveći prioritet je pronalaženje beta testera sa stvarnim potrebama pristupačnosti — slijepi igrači, osobe sa slabim vidom, motoričkim oštećenjima. Aplikacija je izgrađena prema Appleovim standardima, ali standardi su samo početak. Trebam stvarne ljude koji će mi reći što radi, što ne radi i što nisam pomislio. Pronalazak njih bit će poput pronalaska jednoroga, ali neću odustati. Svi trebaju biti uključeni.

Ako biste voljeli isprobati Goban3D ili znate nekoga tko bi imao koristi od pristupačne aplikacije za go, rado ću čuti od vas. Pošaljite e-poštu na support@goban3d.com s predmetom "Beta Tester" i adresom Apple ID e-pošte za vaš iPhone, iPad ili Mac®. Uskoro ćete primiti pozivnicu za TestFlight®.

Ovo je bila najteža i najnagrađivajuća stvar koju sam ikada učinio. Od komada drveta u sveučilišnom stanu do App Storea — trebalo je dvadeset godina, ali stigli smo.