나무 조각에서 App Store까지
약 20년 전, 대학 룸메이트와 저는 쓰레기 더미에서 나무 조각을 꺼내 자로 격자를 그리고, 공예 상점에서 약 3파운드짜리 유리 돌을 사서 바둑을 시작했습니다. 뭘 하는지 몰랐습니다. 지금도 사실 잘 모릅니다. 하지만 게임이 즉시 저를 사로잡았습니다 — 이렇게 단순해 보이는 것이 이렇게 불가능할 만큼 깊을 수 있다는 것. 19×19 격자. 흑과 백 돌. 5분이면 배울 수 있는 규칙. 그런데 그 당시 지구상에서 가장 강력한 컴퓨터도 강한 인간 플레이어를 이길 수 없었습니다. 그것이 저를 매료시켰습니다.
초기의 집착
그 매력은 깊어서 킹스턴 대학교 졸업 논문 주제를 컴퓨터 비전으로 선택했습니다 — 사진에서 바둑판 상태를 읽는 알고리즘을 손으로 코딩하여 87% 이상의 정확도를 달성했습니다. 딥러닝 폭발 이전인 2000년대 초반으로서는 조용히 자랑스러웠습니다.
같은 시기에 바둑 문화를 직접 경험하고 현지 선수들과 대국하기 위해 2주간 일본을 방문했습니다. 단 한 번도 이기지 못했습니다. 한 대국이 특히 기억에 남습니다: 손톱이 유난히 길었던, 아버지와 함께 온 아마도 단급의 수줍은 청년. 무슨 일이 일어났는지 깨닫기도 전에 완전히 격파당했습니다 — 기권해야 한다는 걸 깨닫는 데도 꽤 걸렸습니다.
방문한 모든 바둑 살롱은 담배 연기가 너무 짙어서 신선한 공기 없이는 게임을 끝내기 어려울 정도였습니다 — 저도 흡연자인데도 말이죠. 선수들은 거의 모두 노인이었습니다. 바둑이 노년층의 취미처럼 보였는데, 일본의 기술과 혁신에 대한 명성을 생각하면 의아했습니다. 아무도 바둑과 컴퓨팅을 연결하지 않는 것 같았습니다. 아직은.
긴 공백
삶은 계속됐습니다. Java 개발자로 일하고, 대학 중 Accenture에서 1년을 보냈으며(그동안 스트레스로 머리가 빠졌습니다), 결국 건강 문제로 인한 오랜 실직 기간을 겪었습니다. Java 기술이 산업이 앞서나가면서 점점 무관해졌습니다. 따라잡으려 했지만 격차가 너무 커졌습니다 — 그 분야의 임금이 실제로 내려갔다는 것도 알게 되었습니다. 가치가 없었습니다.
그 모든 시간 동안 바둑은 계속 뒀습니다. 진지하게는 아니었습니다 — 약 15년간 엑서터 바둑 클럽을 드나들었고, 기껏해야 평균 수준의 선수입니다. 하지만 게임은 저를 놓아주지 않았습니다.
모든 것이 한꺼번에 맞아떨어지다
그리고 놀랍도록 짧은 기간 동안 여러 일이 한꺼번에 일어났습니다.
COVID 봉쇄가 닥쳤습니다. 할 일이 없어 답답했지만, 다행히도 가족과 파트너에게서 받은 세 대의 Apple 기기가 있었습니다. AlphaGo 다큐멘터리를 보고 전율했습니다. 대학 시절 저를 매료시켰던 것 — 기계가 바둑을 마스터하는 것의 불가능성 — 이 해결되었습니다. 그리고 그것이 촉발한 AI 혁명은 이제 막 시작되고 있었습니다. ChatGPT가 등장했습니다. 그다음 Claude가. 그다음 Apple이 Vision Pro를 발표했습니다.
KataGo를 가지고 놀기 시작했고 제대로 된 App Store 인터페이스가 없다는 것을 알았습니다. iPhone과 iPad용 바둑 앱들을 살펴보니... 괜찮았습니다. 기능적이었습니다. 하지만 접근성 기능을 가진 앱이 하나도 없었습니다. 전체 App Store에서 VoiceOver, Voice Control, Dynamic Type 또는 Apple의 접근성 표준을 지원한다고 선언한 바둑 앱은 단 하나도 없었습니다. 하나도.
수십 년간 시각 장애인이 즐겨온 게임 — 일본, 프랑스 바둑 연맹, 한국에서 촉감 점자 바둑판을 사용하여 — 에서 디지털로 접근 가능한 버전이 전혀 없다는 것은 존재해서는 안 되는 공백처럼 느껴졌습니다. 시각 장애인 바둑 플레이어들은 완전히 앱 생태계에서 배제되어 있었습니다.
모든 것이 한꺼번에 맞아떨어졌습니다. AI 도구를 사용하여 학습을 가속화하고 iOS 개발을 처음부터 독학하여, 누구나 — 시각 장애인이든 아니든 — 즐길 수 있는 바둑 앱을 만들겠다고 결심했습니다.
제로에서 시작하다
2024년 7월 1일, "RenderedGoApp"이라는 빈 Xcode 프로젝트를 만들었습니다 — 그다지 영감을 주는 이름은 아닙니다. Swift, SwiftUI, RealityKit 또는 Apple의 개발 기술에 대해 아무것도 몰랐습니다. 공식 교육, 부트캠프, 개발자 행사 없이 Apple의 공식 문서와 무료 WWDC 세션만으로 모든 것을 독학했습니다.
2주 후인 7월 17일, 이름을 "Goban3D"로 변경했습니다. 고반(goban)은 바둑이 두어지는 두꺼운 나무 다리 달린 바둑판의 전통 일본어 이름입니다. 이름이 맞는 것 같았습니다 — Apple의 명명 기준을 따르면서 앱이 무엇인지 정확히 말해주었습니다.
초등학교부터 대학까지 난독증 지원을 받았습니다. 자신을 위해 만들어지지 않은 도구를 사용할 때 어떤 느낌인지 압니다. 그래서 첫 번째 코드 줄부터 접근성은 나중에 추가된 것이 아니었습니다 — 그것이 프로젝트가 존재하는 이유였습니다.
SceneKit 재앙
가장 힘든 순간 중 하나는 Apple이 SceneKit을 deprecated할 때였습니다 — 전체 3D 보드 씬을 구축한 프레임워크였습니다. 그것을 잘 다루게 되었습니다. 씬에는 날아다니는 나비, 흔들리는 풀, 물리 기반 조명이 있었습니다. 최소한의 CPU로 아름답게 실행되었습니다. 그런데 Apple이 RealityKit으로 교체된다고 발표했습니다.
화가 났습니다. 하지만 최첨단 기술을 출시하겠다는 다짐과 기술 부채에 대한 무관용으로, SceneKit의 모든 코드를 뜯어내고 교체해야 한다는 것을 알았습니다. 나비는 살아남지 못했습니다. RealityKit은 Apple의 새로운 주력 기술이지만 전임자보다 훨씬 배고픈 짐승입니다 — 언젠가 Apple 엔지니어와 이야기 나누고 싶은 주제입니다.
현재 상황
현재 Goban3D는 iOS 및 macOS용 App Store에서 외부 베타로 진행 중입니다. Apple의 7가지 접근성 범주 전반에 걸쳐 100% 접근성 적용 범위를 갖추고 있습니다 — VoiceOver, Dynamic Type, Voice Control, Reduce Motion, Reduce Transparency, Sufficient Contrast, Differentiate Without Color. 3.5" SE부터 6.9" Pro Max까지 모든 iPhone, 9.7"부터 13"까지 모든 iPad, 그리고 Catalyst를 통해 Mac에서 네이티브로 실행됩니다. 3D 바둑판은 실제 나무와 돌처럼 빛을 받는 물리 기반 재질로 RealityKit에 렌더링됩니다. 단순함이나 배터리 수명이 필요할 때를 위한 깔끔한 2D 모드도 있습니다.
개발 과정 외부에서는 아무도 이것의 존재를 모릅니다. 언론 보도도, 커뮤니티 인식도, 외부 베타 테스터도 없습니다. 어떤 의미에서 이 블로그 포스트가 처음으로 공개적으로 알리는 것입니다.
다음 단계
가장 큰 우선순위는 실제 접근성 필요가 있는 베타 테스터 찾기입니다 — 시각 장애인 플레이어, 저시력자, 운동 장애가 있는 분들. 앱은 Apple의 기준에 맞게 구축되었지만 기준은 시작일 뿐입니다. 무엇이 작동하고, 무엇이 작동하지 않으며, 무엇을 생각하지 못했는지 알려줄 실제 사람들이 필요합니다. 유니콘 찾기처럼 어렵겠지만 포기하지 않을 것입니다. 모두가 포함되어야 합니다.
Goban3D를 사용해 보고 싶으시거나 접근 가능한 바둑 앱의 혜택을 받을 수 있는 분을 아신다면 꼭 연락해 주세요. 제목을 "베타 테스터"로 하여 iPhone, iPad 또는 Mac의 Apple ID 이메일 주소와 함께 support@goban3d.com으로 이메일을 보내주세요. 곧 TestFlight 초대장을 받으실 것입니다.
이것은 제가 해본 것 중 가장 힘들고 가장 보람 있는 일이었습니다. 대학 기숙사의 나무 조각에서 App Store까지 — 20년이 걸렸지만, 우리는 여기까지 왔습니다.