Bir Tahta Parçasından App Store'a
Yaklaşık yirmi yıl önce, üniversitedeki oda arkadaşım ve ben bir çöpten tahta bir parça çıkardık, üzerine cetvel yardımıyla ızgara çizdik, bir el sanatları dükkanından yaklaşık üç sterline cam taşlar aldık ve Go oynamaya başladık. Ne yaptığımı bilmiyordum. Hâlâ tam olarak bildiğimi söyleyemem. Ama oyun beni anında büyüledi — görünürde bu kadar basit bir şeyin nasıl bu denli akıl almaz bir derinliğe sahip olabildiği. 19×19 ızgara. Siyah ve beyaz taşlar. Beş dakikada öğrenebileceğiniz kurallar. Ve yine de o dönemde dünyanın en güçlü bilgisayarları güçlü bir insan oyuncuyu yenemiyordu. Bu beni büyüledi.
Erken Bir Tutku
Bu hayranlık o kadar derindi ki Kingston Üniversitesi'ndeki son yıl projem bilgisayarlı görü üzerineydi — bir fotoğraftan Go tahtasının durumunu okuyan bir algoritmayı elle kodladım ve %87'nin üzerinde doğruluk elde ettim. Derin öğrenme patlamasından önce, 2000'lerin başında bu başarıdan sessizce gurur duyuyordum.
Aynı dönemde, Go kültürünü bizzat yaşamak ve yerel oyuncularla oynamak için özellikle iki haftalığına Japonya'ya gittim. Her maçı kaybettim. Bir oyun özellikle aklımda kaldı: muhtemelen dan seviyesinde, çok çekingen, çarpıcı uzun tırnaklı ve yanında babasıyla gelen genç bir adam. Ne olduğunu fark etmeden önce tamamen mahvettim — istifa etmem gerektiğini anlamam biraz zaman aldı.
Ziyaret ettiğim her Go salonu o kadar sigarayla doluydu ki kendim de sigara içmeme rağmen temiz havaya çıkmadan oyunu bitirmek neredeyse imkânsızdı. Oyuncuların neredeyse tamamı yaşlıydı. Japonya'nın teknoloji ve inovasyon konusundaki itibarı düşünüldüğünde, Go'nun altın çağını yaşayan insanlar için bir hobi gibi görünmesi beni şaşırttı. Kimse Go ile bilgisayarı ilişkilendirmiyordu. Henüz değil.
Uzun Ara
Hayat devam etti. Java geliştiricisi olarak çalıştım, üniversitede bir yılı Accenture'da geçirdim (o dönemde stres yüzünden tüm saçlarım döküldü) ve sonunda sağlık sorunlarının ardından uzun bir işsizlik sürecine girdim. Java becerilerim sektör bensiz ilerlediği için giderek daha geçersiz hale geldi. Yetişmeye çalıştım ama uçurum artık çok büyümüştü — üstelik sektörün o alanındaki ücretlerin gerçekten düştüğünü fark ettim. Değmezdi.
Tüm bu süreçte Go oynamaya devam ettim. Ciddi anlamda değil — yaklaşık on beş yıldır aralıklı olarak Exeter Go Kulübü'ne gidiyorum ve en iyi ihtimalle ortalama bir oyuncuyum. Ama oyun beni hiç bırakmadı.
Her Şey Bir Anda Yerine Oturdu
Sonra, dikkat çekici derecede kısa bir sürede, birkaç şey aynı anda gerçekleşti.
COVID kapanması başladı. Yapacak bir şey olmadan duvarlara tırmanıyordum ama şans eseri elimde aile ve partnerimden hediye üç Apple cihazı vardı. AlphaGo belgeselini izledim ve derinden etkilendim. Üniversitede beni büyüleyen şey — bir makinenin Go'da ustalaşmasının imkânsızlığı — çözülmüştü. Ve bunun başlattığı yapay zeka devrimi henüz başlıyordu. ChatGPT geldi. Ardından Claude. Sonra Apple Vision Pro'yu duyurdu.
KataGo ile oynamaya başladım ve App Store'da düzgün bir arayüzü olmadığını fark ettim. iPhone ve iPad için mevcut Go uygulamalarına baktım; iyi bir şeyler vardı. İşlevsel. Ama hiçbirinde erişilebilirlik özelliği yoktu. App Store'daki tek bir Go uygulaması VoiceOver, Ses Kontrolü, Dynamic Type veya Apple'ın erişilebilirlik standartlarından herhangi biri için destek bildirmiyordu. Hiçbiri.
Onlarca yıldır görme engelli insanlar tarafından oynanan bir oyun için — Japonya'daki yükseltilmiş çizgili dokunsal tahtalar, Fransız Go Federasyonu, Kore — dijital olarak erişilebilir hiçbir sürümün bulunmaması kapatılmaması gereken bir boşluk gibiydi. Görme engelli Go oyuncuları uygulama ekosisteminden tamamen dışlanmıştı.
Her şey aynı anda yerli yerine oturdu. iOS geliştirmeyi sıfırdan kendi kendime öğrenecektim — yapay zeka araçlarını öğrenmeyi hızlandırmak için kullanarak — ve herkesin oynayabileceği, gören ya da göremeyen, bir Go uygulaması yapacaktım.
Sıfırdan Başlamak
1 Temmuz 2024'te "RenderedGoApp" adlı boş bir Xcode projesi oluşturdum — pek ilham verici bir isim değil. Swift, SwiftUI, RealityKit veya Apple'ın geliştirme teknolojilerinden hiçbirini bilmiyordum. Her şeyi Apple'ın resmi belgeleri ve ücretsiz WWDC oturumları aracılığıyla — herhangi bir eğitim, öğrenci kampı veya geliştirici etkinliği olmaksızın — kendi kendime öğrendim.
İki hafta sonra, 17 Temmuz'da adını "Goban3D" olarak değiştirdim. Goban, Go'nun üzerinde oynadığı geleneksel ahşap tahtanın Japonca adıdır. İsim doğru hissettirdi — Apple'ın adlandırma standartlarına uyuyordu ve uygulamanın ne olduğunu tam olarak söylüyordu.
İlkokuldan liseye kadar disleksi desteği aldım. Araçların sizin için tasarlanmadığında nasıl hissettirdiğini biliyorum. Bu yüzden kodun ilk satırından itibaren erişilebilirlik sonradan düşünülmüş bir şey değildi — projenin var olma nedeni buydu.
SceneKit Felaketi
En zorlu anlardan biri, Apple'ın tüm 3D tahta sahnesini üzerine inşa ettiğim framework olan SceneKit'i kullanımdan kaldırdığını açıklamasıyla geldi. Artık bunda iyiydim. Sahne, etrafta uçuşan bir kelebek, dalgalanan çimler, fizik tabanlı aydınlatmaya sahipti. Minimal CPU ile mükemmel çalışıyordu. Ardından Apple RealityKit ile değiştirileceğini duyurdu.
Çok sinirlendim. Ama son teknoloji bir şey yayınlama taahhüdüyle ve teknik borca sıfır toleransla, her SceneKit satırının söküp değiştirilmesi gerektiğini biliyordum. Kelebek hayatta kalamadı. RealityKit, Apple'ın yeni gözdesi ama öncülüne kıyasla çok daha aç bir canavar — bir gün bir Apple mühendisiyle tartışmak isteyeceğim bir konu.
Mevcut Durum
Bugün Goban3D, iOS ve macOS için App Store'da harici beta aşamasında. Apple'ın yedi erişilebilirlik kategorisinin tamamında — VoiceOver, Dynamic Type, Ses Kontrolü, Hareketi Azalt, Şeffaflığı Azalt, Yeterli Kontrast ve Renk Olmadan Ayırt Et — %100 erişilebilirlik kapsamına sahip. 3,5" SE'den 6,9" Pro Max'e kadar her iPhone'da, 9,7"'den 13"'e kadar her iPad'de ve Catalyst aracılığıyla Mac'te yerel olarak çalışıyor. 3D tahta, gerçek ahşap ve taş gibi ışık yansıtan fizik tabanlı malzemelere sahip RealityKit ile render ediliyor. Sadelik veya pil ömrü istediğinizde temiz bir 2D mod da var.
Geliştirme sürecinin dışındaki hiç kimse bunun varlığından haberdar değil. Basın haberi yok, topluluk farkındalığı yok, harici beta test kullanıcısı yok. Bu blog yazısı bir anlamda, bunu kamuoyuna ilk kez anlattığım an.
Bundan Sonra
En büyük öncelik, gerçek erişilebilirlik ihtiyaçları olan beta test kullanıcıları bulmak — görme engelli oyuncular, az görenler, motor engelli bireyler. Uygulama Apple'ın standartlarına göre inşa edildi ama standartlar sadece bir başlangıç. Neyin işe yaradığını, neyin yaramadığını ve düşünemediğim şeyleri bana söyleyecek gerçek insanlara ihtiyacım var. Onları bulmak efsane bir yaratık bulmak gibi olacak ama vazgeçmeyeceğim. Herkes dahil edilmelidir.
Goban3D'yi denemek isterseniz ya da erişilebilir bir Go uygulamasından yararlanacak birini tanıyorsanız sizden haber almayı çok isterim. support@goban3d.com adresine "Beta Test Kullanıcısı" konu başlığıyla ve iPhone, iPad veya Mac'iniz için Apple ID e-posta adresinizle birlikte e-posta gönderin. Kısa süre içinde bir TestFlight daveti alacaksınız.
Bu, şimdiye kadar yaptığım en zor ve en ödüllendirici şeydi. Bir üniversite dairesindeki tahta parçasından App Store'a — yirmi yıl sürdü ama geldik.