← Назад к блогу

От куска дерева до App Store

Около двадцати лет назад мы с соседом по комнате вытащили кусок дерева из мусорного контейнера, нарисовали сетку с помощью линейки, купили стеклянные камни в магазине для рукоделия примерно за три фунта и начали играть в Го. Я понятия не имел, что делаю. Если честно, не знаю до сих пор. Но игра захватила меня мгновенно — то, как нечто кажущееся простым может быть такой непостижимой глубины. Сетка 19×19. Чёрные и белые камни. Правила, которые можно выучить за пять минут. И всё же в то время самые мощные компьютеры на Земле не могли победить сильного человека. Это завораживало меня.

Ранняя одержимость

Это увлечение оказалось достаточно серьёзным, чтобы мой дипломный проект в Кингстонском университете был посвящён компьютерному зрению — я вручную написал алгоритм, распознающий состояние доски для Го по фотографии, достигнув точности более 87%. Для начала 2000-х, до взрыва глубокого обучения, я был тихо горд этим.

Примерно тогда же я провёл две недели в Японии специально для того, чтобы познакомиться с культурой Го и сыграть с местными игроками. Я проиграл все партии. Одна запомнилась особо: молодой человек, наверное, уровня дана, очень застенчивый, с поразительно длинными ногтями, пришедший с отцом. Я был полностью разгромлен прежде, чем успел понять, что произошло — мне потребовалось некоторое время, чтобы осознать необходимость сдаться.

Каждый игорный клуб Го, который я посещал, был так наполнен сигаретным дымом, что почти невозможно было доиграть партию без глотка свежего воздуха — а я сам курильщик. Игроки были почти исключительно пожилыми. Го казалось времяпровождением на золотые годы, что озадачивало меня, учитывая репутацию Японии в области технологий и инноваций. Никто, казалось, не связывал Го с вычислениями. Пока что.

Долгий перерыв

Жизнь шла своим чередом. Я работал Java-разработчиком, провёл год в Accenture во время учёбы (за это время у меня выпали все волосы от стресса) и в итоге остался без работы на долгий срок из-за проблем со здоровьем. Мои навыки Java становились всё менее востребованы — индустрия двигалась без меня. Я пытался наверстать, но разрыв стал слишком велик — и обнаружил, что зарплаты в этой части отрасли фактически снизились. Не стоило усилий.

Сквозь всё это я продолжал играть в Го. Не серьёзно — я хожу в Экзетерский клуб Го время от времени уже около пятнадцати лет, и я средний игрок в лучшем случае. Но игра не отпускала меня.

Всё совпало разом

Затем за удивительно короткий период произошло сразу несколько вещей.

Наступил карантин из-за COVID. Я сходил с ума от безделья, но мне повезло иметь три устройства Apple — подарки от семьи и партнёра. Я посмотрел документальный фильм AlphaGo и был поражён. То, что захватывало меня в университете — невозможность машины овладеть Го — было решено. И революция ИИ, которую оно запустило, только начиналась. Появился ChatGPT. Потом Claude. Потом Apple анонсировала Vision Pro.

Я начал играть с KataGo и заметил, что у него нет нормального интерфейса для App Store. Я посмотрел на доступные приложения для Го на iPhone и iPad — они были... нормальными. Функциональными. Но ни одно из них не имело функций доступности. Ни одно приложение для Го во всём App Store не заявляло о поддержке VoiceOver, Voice Control, Dynamic Type или каких-либо стандартов Apple по доступности. Ни одно.

Для игры, в которую слепые люди играли десятилетиями — с тактильными досками с выпуклыми линиями в Японии, в Французской федерации Го, в Корее — полное отсутствие какой-либо цифровой доступной версии казалось пробелом, которого не должно существовать. Слепые игроки в Го были полностью отрезаны от экосистемы приложений.

Всё сошлось воедино и встало на своё место. Я обучу себя разработке iOS с нуля, используя инструменты ИИ для ускорения обучения, и создам приложение для Го, в которое сможет играть каждый — зрячий или нет.

Начиная с нуля

1 июля 2024 года я создал пустой проект Xcode под названием «RenderedGoApp» — не очень вдохновляющее название. Я ничего не знал о Swift, SwiftUI, RealityKit или каких-либо инструментах разработки Apple. Я обучился всему через официальную документацию Apple и бесплатные сессии WWDC, без формального обучения, курсов или конференций разработчиков.

Две недели спустя, 17 июля, я переименовал проект в «Goban3D». Гобан — традиционное японское название толстой деревянной доски на ножках, на которой играют в Го. Название казалось правильным — оно соответствовало стандартам именования Apple и говорило именно то, чем является приложение.

Я получал поддержку из-за дислексии с начальной школы и вплоть до колледжа. Я знаю, каково это — когда инструменты создаются без тебя в уме. Поэтому с самой первой строки кода доступность не была запоздалой мыслью — это была причина существования проекта.

Катастрофа со SceneKit

Один из самых трудных моментов наступил, когда Apple объявила об устаревании SceneKit — 3D-фреймворка, в котором я построил всю сцену доски. Я хорошо освоил его. Сцена включала летающую бабочку, колышущуюся траву, физически корректное освещение. Всё работало красиво при минимальной нагрузке на ЦП. Затем Apple объявила о замене на RealityKit.

Я был взбешён. Но с обязательством создать что-то современное и нулевой терпимостью к техническому долгу, я знал, что каждую строку SceneKit нужно вырвать и заменить. Бабочка не выжила. RealityKit — новый любимец Apple, но он гораздо прожорливее предшественника — что я был бы рад обсудить с инженером Apple когда-нибудь.

Где мы сейчас

Сегодня Goban3D находится во внешней бете в App Store для iOS и macOS. У него 100% покрытие доступности по всем семи категориям Apple — VoiceOver, Dynamic Type, Voice Control, Reduce Motion, Reduce Transparency, Sufficient Contrast и Differentiate Without Color. Работает на каждом iPhone от SE 3,5" до Pro Max 6,9", каждом iPad от 9,7" до 13" и нативно на Mac через Catalyst. 3D-доска отрисована в RealityKit с физически корректными материалами, отражающими свет как настоящее дерево и камень. Есть также чистый 2D-режим для простоты или экономии батареи.

За пределами процесса разработки никто ещё не знает о его существовании. Никаких публикаций в прессе, никакой осведомлённости сообщества, никаких внешних бета-тестеров. Этот пост в блоге — это, в каком-то смысле, первый раз, когда я говорю об этом публично.

Что дальше

Главный приоритет — найти бета-тестеров с реальными потребностями в доступности — слепых игроков, людей со слабым зрением, двигательными нарушениями. Приложение создано по стандартам Apple, но стандарты — это только начало. Мне нужны реальные люди, которые скажут, что работает, что нет и о чём я не подумал. Найти их будет как найти единорога, но я не сдамся. Каждый должен быть включён.

Если вы хотите попробовать Goban3D или знаете кого-то, кому поможет доступное приложение для Го, я рад услышать от вас. Напишите на support@goban3d.com с темой письма «Beta Tester» и адресом Apple ID для вашего iPhone, iPad или Mac. Вы получите приглашение на TestFlight вскоре после этого.

Это самое трудное и самое rewarding, что я когда-либо делал. От куска дерева в студенческой квартире до App Store — это заняло двадцать лет, но мы добрались.