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