Google 개발자 전문가인 라스 크누센은 10달러짜리 기기로 장애인이 컴퓨터를 더 쉽게 사용할 수 있는 방법에 대해 이야기해 주었습니다.

모니카: 개발자가 되신 계기는 무엇인가요? 현재 전문 분야는 무엇인가요?
라스: 저는 엔지니어링 석사 학위를 받았지만 사실 기술에 대한 관심은 훨씬 더 일찍 시작되었습니다. 제가 어렸던 80년대, 아버지는 그래픽 디자인을 다루는 컴퓨팅 회사를 운영하셨습니다. 특히 여름방학 때는 아버지가 나를 데리고 직장에 가곤 했습니다. 때로는 그의 직원들이 나를 주시하기도 했습니다. 한 번은 정말 똑똑한 사람이 제게 이렇게 말했습니다. “라스님, 제가 일을 해야 하는데 여기 C 매뉴얼이 있고 저기 컴퓨터가 있습니다. C 컴파일러를 시작하는 방법은 다음과 같습니다. 궁금한 점이 있으면 언제든지 물어보세요."라고 말하면서 컴퓨터가 이해할 수 있는 짧은 텍스트를 작성하기 시작했습니다. 마법처럼 보였어요. 저는 11살 때 프로그래밍을 시작했고, 중학교 7학년 때쯤에는 동급생을 위해 또는 학교에서 사용할 수 있는 소규모 애플리케이션을 만들 수 있었습니다. 그렇게 시작되었습니다.
저는 오랜 기간 동안 Nokia, Maersk, Openwave 등 여러 회사에서 근무했습니다. 처음에는 다른 많은 직업과 마찬가지로 조금만 알면 모든 것을 할 수 있을 것 같지만 시간이 지남에 따라 각 회사마다 특정 방식으로 일을 한다는 것을 알게 됩니다.
의료 회사에서 몇 년간 근무한 후 1999년에 창업했습니다. 저는 프리랜스 계약자로 일하면서 여러 조직을 빠르게 알아볼 수 있었습니다. 처음 5개 계약을 완료한 후 모든 회사가 완벽한 설정을 찾았다고 생각하지만 모두 완전히 다르다는 것을 알게 되었습니다. 그때 다양한 기술, 운영체제 등에도 많이 노출되었습니다. 20대 초반에 제 사고방식이 바뀌었습니다. 처음에는 한 가지 기술에만 집중하여 모든 것을 배우고 싶었습니다. 시간이 지남에 따라 기술을 결합하여 삶을 개선하는 방법을 생각하기 시작했습니다. 저는 전 세계에서 A팀과 B팀이라고 불리는 팀 간의 격차를 줄이는 데 특히 관심이 있습니다. 컴퓨터를 소유하거나 대학에서 무료로 공부할 수 없는 지역의 사람들에게 최대한 많은 지식을 전달하려고 합니다.
외부 파트너의 계약자로 계속 일하고 있지만 가능하면 환경이나 사회에 긍정적인 영향을 미치는 프로젝트를 선택하려고 합니다. 저는 현재 Oticon이라는 보청기 회사에서 삽입 소프트웨어를 개발하고 있습니다. 소프트웨어 측면에서는 초소형 마이크로컨트롤러부터 클라우드에 이르기까지 모든 작업을 해왔습니다. 주로 웹을 중심으로 작업합니다. 적절한 경우 기술을 결합하려고 합니다.
Monika: Google Developer Experts 프로그램에 참여하기 전에 개발자 커뮤니티에 참여하셨나요?
라스: 예, 모임과 컨퍼런스에 참여했습니다. Nokia에서 근무하면서 처음 커뮤니티와 소통하게 되었습니다. 2010년경에 저보다 먼저 GDE가 된 케네스 로데 크리스티안센을 만났습니다. 그의 이야기는 개발도상국에서 기술 전문가를 꿈꾸는 사람들에게 웹 기술이 얼마나 유용할 수 있는지 깨닫게 해 주었습니다. C++, C# 또는 Java를 사용하여 솔루션을 개발하고 배포하려면 몇 년의 경험이 필요하지만 컴퓨터, 브라우저, 메모장에 액세스할 수 있는 모든 사용자가 웹 기반 애플리케이션 개발을 시작하고 매우 빠르게 학습할 수 있습니다. 제한된 리소스로 완전한 기능을 갖춘 애플리케이션을 빌드하고 아무것도 없는 상태에서 확장할 수 있습니다. 이것이 제가 웹을 매우 민주화된 기술 스택이라고 부르는 이유입니다.
하지만 커뮤니티로 돌아가서, 얼마 후 웹 표준화와 최신 웹 기술로 해결할 수 있는 문제에 관심을 갖게 되었습니다. 출시 전에 브라우저에서 새로운 기능을 실험했습니다. 당시 저는 Nokia에서 Linux 기반 플래그십 기기인 N9을 개발하고 있었습니다. 빌드한 브라우저는 WebKit 기반이었고 대규모 오픈소스 프로젝트의 기능을 개발하면서 좋은 경험을 얻었습니다. Nokia를 떠난 후 웹 컨퍼런스와 미팅에 참여해 왔기 때문에 2017년에 GDE 커뮤니티에 참여하게 되었습니다.
커뮤니티 활동과 함께하는 모든 활동을 즐기고 있습니다. 특히 팬데믹 이전의 Chrome 개발자 서밋에서 멋진 Google 엔지니어와 다른 GDE와 함께 부스 업무를 도와드릴 수 있었던 것이 기억에 남습니다.
모니카: 전문적인 경력을 막 시작하고 어떤 길을 선택해야 할지 잘 모르는 젊은 개발자에게 어떤 조언을 해 주고 싶으신가요?
Lars: 가능하다면 여러 회사에서 프리랜서로 일해 보세요. 제 경험에 비추어 볼 때, 이렇게 하면 다양한 형태와 개발 단계의 코드를 접할 수 있습니다. 다양한 운영체제와 언어를 알아보고 다양한 방법으로 문제를 해결하는 방법을 배웁니다. 이 경험이 큰 도움이 되어 20대에는 선임 개발자로서의 경험을 쌓을 수 있었습니다. 이 접근 방식을 사용하면 전문적인 목표를 더 빠르게 달성할 수 있습니다.
그 외에도 하드웨어와 소프트웨어를 탐색하고 즐기세요. 친구, 가족 또는 지역 비즈니스의 실제 문제를 해결하는 앱을 만들어 보세요. 전에 해본 적이 없는 일에 도전하는 것을 두려워하지 마세요.
모니카: 웹 기술의 미래는 어떻게 될까요?
라스: 지난 몇 년간 웹은 소비자와 비즈니스 모두를 위한 대규모 현장 애플리케이션을 위한 플랫폼을 제공할 수 있는 충분한 역량을 갖추었습니다. 서버 측면에서 웹 기술은 특히 백엔드 구성요소를 빌드하려는 프런트엔드 개발자에게 원활한 환경을 제공합니다. 이제 더 쉽게 시작할 수 있습니다. Firebase와 Heroku를 모두 사용하여 작업을 완료한 사용자도 알고 있습니다. 이러한 추세는 계속될 것입니다. 웹 기술만 있으면 어떤 종류의 복잡한 솔루션이든 빌드할 수 있기 때문입니다. 웹 기능 - Project Fugu 🐡가 이러한 잠재력을 실현할 수 있다고 생각합니다.
조금 다른 관점에서 보면, 영어뿐만 아니라 다른 언어 (예: 스페인어, 포르투갈어)로도 전체 문서와 심층 도움말을 제공하면 라틴 아메리카는 물론 다른 지역에서도 많은 잠재력을 발휘할 수 있을 것입니다. 현지 개발자는 관련 도움말을 모두 완전히 이해하기에 충분한 수준의 영어를 구사하지 못하는 경우가 많습니다. 또한 고향에 있는 동안 대학 입학 전이라도 최대한 빨리 배울 수 있는 기회를 제공해야 합니다. 이러한 기술을 사용하여 고향을 떠나기 전에 지역사회와 비즈니스를 도울 수 있으며, 다시 돌아오지 않을 수도 있습니다.
토마스: 임의의 컴퓨터에서 C 개발을 하다가 하드웨어 해킹까지 오랜 여정을 거쳤습니다. 어떻게 하셨나요?
라스: 집에 있는 많은 하드웨어를 분해하기 시작했습니다. 다시 조립하지 못할 때는 아빠가 기뻐하지 않으셨습니다. 시간이 지남에 따라 소형 기기를 만드는 방법을 배웠지만, 본격적으로 시작된 것은 훨씬 나중에 Nokia에 합류하여 삽입된 경험을 얻은 시기였습니다. Series 30 휴대전화의 구성요소인 작은 화면 보호기를 빌드할 기회가 있었습니다. 저는 이 일에 열정적이었고 틀을 벗어난 사고를 할 수 있었습니다. 그들은 이러한 기기용 Snake 게임을 빌드하는 작업을 할당했습니다. 매우 흥미로운 경험이었습니다. 삽입 시스템 빌드와 대부분의 다른 작업 (웹 포함) 간의 주요 차이점은 공간이나 메모리를 많이 사용할 수 없어 작은 공간만 차지한다는 점입니다. Snake를 빌드하는 동안 사용 가능한 RAM이 프레임 버퍼 (약 120x120픽셀)의 3분의 1도 되지 않았습니다. 화면의 구성요소를 타일처럼 정적 상태로 보이도록 알고리즘을 통해 다시 결합하는 방법을 찾아야 했습니다. 큰 시스템에서 소형 삽입형 솔루션으로 전환하는 과정에서 많은 것을 배웠습니다.
토마스: 일반적인 프런트엔드 개발자의 기술 세트는 삽입형 하드웨어를 빌드하는 사람의 기술 세트와 매우 다릅니다. 프런트엔드 개발자가 하드웨어를 살펴보고 바이너리로 생각하도록 유도하려면 어떻게 해야 하나요?
라스: 첫 번째 단계는 Chrome 및 Edge에서 작동하고 현재 모든 주요 시스템에 내장된 Fugu API를 살펴보는 것입니다. 시작하려면 이 정도면 충분합니다.
또 다른 문제는 임베디드 솔루션을 빌드하기 위한 도구 모음의 학습 곡선이 가파르다는 점입니다. 직접 맞춤 하드웨어를 빌드하려면 구매하기 쉽고 가격이 저렴한 Arduino 또는 ESP32로 시작합니다. 적절한 개발 환경을 사용하면 프로젝트를 빠르게 시작하고 실행할 수 있습니다.
이미 블루투스 GATT 서비스를 사용하는 심박수 모니터나 멀티센서 장치를 구매할 수도 있습니다. 따라서 자체 하드웨어나 펌웨어를 빌드할 필요가 없습니다. 이미 있는 장치를 사용하고 웹 블루투스 API를 실험하여 통신을 시작할 수 있습니다.
직렬 프로토콜을 사용하는 기기도 있습니다. 이러한 기기의 경우 Web Serial API (Fugu라고도 함)를 사용할 수 있습니다. 최근에는 모든 사용자가 액세스할 수 있는 모든 인간 인터페이스 기기와 통신할 수 있는 WebHID API를 사용해 보려고 합니다. 지하실에서 오래된 기기를 발견했는데 몇 년 동안 운영체제에서 지원되지 않았습니다. 하지만 역엔지니어링 덕분에 몇 시간 만에 다시 사용 설정할 수 있었습니다.
빌드하려는 항목에 따라 다양한 접근 방식이 있지만 웹 개발자에게는 안정적인 센서 장치(예: Nordic Semiconductor의 Thingy 52)를 사용하는 것이 좋습니다. 이 센서에는 여러 개의 센서가 있으며 별도의 작업 없이도 웹 애플리케이션에 연결할 수 있습니다.
토마스: 기기에 연결하는 것이 첫 번째 단계이지만, 효과적으로 대화하는 것은 또 다른 문제입니다. 장애물이 있더라도 포기하지 않으신 이유는 무엇인가요? 계속해서 일할 수 있었던 동기부여 요소는 무엇인가요?
라스: 개인적으로는 문제 해결의 사회적 측면이 가장 중요했습니다. 자체 삽입 프로젝트를 시작할 때는 개발도상국을 위한 과학 실험실을 상자에 담아 만들겠다는 비전과 열망이 있었습니다. 제 아내는 멕시코 출신이며 저는 멕시코의 일부 학교를 방문했습니다. 대도시 외곽에 위치한 일부 학교는 매우 허름했으며, 여기와 같은 자료와 장비를 이용할 수 없습니다.
다른 사람을 도울 수 있는 무언가를 만들겠다는 열정이 저를 계속 밀어주었습니다. 커뮤니티 지원도 정말 좋았습니다. Google 직원 몇 명에게 문의했는데 모두 매우 친절했으며 모든 질문에 기꺼이 답변해 주었습니다.
토마스: 많은 사람들이 집에 하드웨어를 가지고 있지만 어떻게 활용해야 할지 모르는 경우가 많습니다. 특히 워크링 이름이 SimpleMouse인 프로젝트를 비롯한 모든 멋진 프로젝트에 대한 영감을 어떻게 얻나요?
라스: 사실 최근에 많은 오래된 하드웨어를 복구해 왔습니다. 하지만 이 프로젝트에서는(이름은 아직 정해지지 않았지만 SimpleMouse라고 하겠습니다) 경험을 활용했습니다. 이전에 일부 접근성 솔루션을 사용해 봤는데, 일부 솔루션은 더 이상 작동하지 않는 것을 확인했습니다. 이러한 솔루션을 실행하려면 특정 소프트웨어가 설치된 이전 Windows XP가 있어야 합니다. 이러한 기기는 업데이트할 수 없으며 설정을 이동할 수 없으므로 집에서만 사용할 수 있습니다.
그래서 임베디드 세계에서 쌓은 기술을 Fugu 프로젝트와 결합하고, 웹에서 사람들이 이를 기반으로 개발할 수 있도록 양쪽 모두에서 저렴하고 이해하기 쉬운 소프트웨어와 결합된 저렴한 하드웨어를 만드는 방법을 고민했습니다.
이 프로젝트에서는 반사 칩인 nRF52840이 포함된 소형 USB 도구를 사용했습니다. 한쪽에서는 블루투스와 통신하고 다른 쪽에서는 USB와 통신합니다. 기본적으로 양쪽 모두 무엇이든지 되도록 프로그래밍할 수 있습니다. 그러고 나서 컴퓨터를 제어하는 기기인 마우스와 키보드를 생각했습니다. 장애가 있는 일부 사용자는 이러한 기기를 작동하기 어려울 수 있으므로 도움을 드리고 싶었습니다.
먼저 모든 운영체제에서 USB 도구가 마우스로 표시되는지 확인했습니다. 네이티브 애플리케이션 또는 웹 애플리케이션에서 블루투스를 직접 제어할 수 있습니다. 그런 다음 웹 애플리케이션을 빌드했습니다. 웹 애플리케이션은 사용자가 웹 구성요소를 사용하여 원하는 방식으로 확장할 수 있는 간단한 템플릿입니다. 덕분에 누구나 Android 휴대전화에서 몇 시간 만에 만든 웹 앱으로 컴퓨터를 제어할 수 있습니다.
이렇게 설정하면 웹 경험이 있는 전 세계 모든 사용자가 컴퓨터를 제어하려는 장애인을 위한 맞춤설정된 솔루션을 며칠 내에 빌드할 수 있습니다. 어디서나 휴대하고 다른 기기에서도 사용할 수 있다는 것이 가장 큰 장점입니다. 환경은 완전히 동일합니다. 사람들은 더 이상 자신의 기기만 사용하고 한 장소에 머무르지 않으므로 기기의 휴대성과 가격이 매우 중요합니다.
토마스: 실제 기기를 테스트해 보셨나요?
라스: 사실 지난번 멕시코 여행 중에 현지에서 거주하는 웹 전문가와 논의했습니다. 현재 이 전문가가 기기를 로컬에서 사용할 가능성을 모색하고 있습니다. 거기서는 장비가 매우 비싸지만 USB 도구는 보통 10달러 정도입니다. 현재 로컬 설정을 빌드하여 테스트할 수 있는지 확인하고 있습니다. 하지만 아직 덴마크에서는 공식적인 실험을 진행하지 않았습니다.
토마스: 장애인을 지원하기 위해 설계된 많은 기기는 가격이 매우 비쌉니다. 특정 회사와 협력하여 값비싼 장비의 10분의 1 가격으로 제작할 계획인가요?
라스: 물론입니다. 이미 현지 하드웨어 제조업체에 문의했습니다. 물론 이 기기가 고도로 전문화된 모든 솔루션을 대체하지는 못하지만, 더 큰 것을 구축하기 위한 첫 번째 단계가 될 수 있습니다. 예를 들어 웹 기술에서 이미 사용할 수 있는 음성 인식을 사용하면 됩니다. Android 휴대전화를 사용하여 기기를 간편하게 제어할 수 있으며, 어떤 기기에서든 작동합니다.
웹에서 원하는 것을 빌드하고 이를 사용하여 호스트 컴퓨터를 제어할 수 있으면 많은 가능성이 열립니다.
토마스: Zephyr 프로젝트를 오픈소스로 출시하나요? 어떤 유형의 라이선스를 사용하시나요? 프로젝트에서 수익을 창출할 계획이 있나요?
라스: 예, 솔루션은 오픈소스입니다. 특정 라이선스를 적용하지는 않았지만 Apache 2.0을 사용하는 것이 좋습니다. Google을 비롯한 많은 대기업에서 이 라이선스를 사용합니다. SimpleMouse를 개발할 때는 프로젝트로 수익을 창출하는 것을 생각하지 않았습니다. 그것이 목표가 아니었기 때문입니다. 하지만 어떤 식으로든 프로덕션에 적용해 보는 것도 좋을 것 같습니다. 물론 비용이 발생합니다. 궁극적인 목표는 이 기능을 제공하는 것입니다. 저렴한 비용으로 대규모로 구현되기를 바랍니다.