개발자 관계팀 엔지니어
Googlebook의 출시는 고품질 데스크톱급 환경의 새로운 지평을 열어줍니다. 이 세션에서는 이 플랫폼을 처음부터 구축한 두 선구적인 파트너의 비하인드 스토리를 살펴봅니다.
Notability가 Jetpack Compose를 사용하여 데스크톱급 Android 앱을 만드는 여정을 공유합니다. 데스크톱을 우선적으로 고려하여 다른 앱 플랫폼에서 이전한 여정을 알아보세요. 두 번째로 Logitech에서 하드웨어 측면을 자세히 살펴보고 Googlebook과 원활하게 통합되도록 주변기기를 빌드하고 맞춤설정하는 방법을 설명합니다. 이 세션에 참여하여 입력 최적화, 대형 화면 API 활용, 하드웨어와 소프트웨어 전반에서 프리미엄급의 일관된 사용자 환경 제공에 관한 실용적이고 실제적인 정보를 얻으세요.
스크립트
안녕하세요. 저는 Developer Advocate인 에밀리 로버츠입니다. 약 9년 동안 노트북에서 Android 앱을 사용해 왔습니다.
Googlebook 출시가 이루어졌습니다.
확인
노트북 분야에 혁신을 가져오고 있다는 점이 정말 멋지다고 생각합니다.
Googlebook에서 앱을 멋지게 보이게 만드는 데 많은 투자를 한 두 개발자와 함께 이 자리에 서게 되어 정말 기쁩니다.
안녕하세요.
Notability의 라이언입니다.
저는 Android 관리자이며, 이 앱은 최근 Android에 출시된 디지털 노트북 앱입니다.
iOS, 데스크톱, Google 북스에서도 사용할 수 있습니다.
안녕하세요.
저는 Logitech의 조입니다. Logitech은 우수한 하드웨어와 주변기기로 잘 알려져 있습니다.
그리고 이러한 게임을 새로운 플랫폼으로 가져온 방법에 대해 이야기하겠습니다.
밀어버릴 거야.
그래서 Google 도서가 탄생했습니다.
확인
확인
확인
직접 사용해 보시거나 데모 부스에서 사용해 보셨기를 바랍니다.
물론 앱이 어떻게 표시되는지 확인하는 것도 잊지 마세요.
Android 생태계가 성장하고 있다는 표준적인 이야기를 하겠습니다.
9년 동안 이 말을 해왔는데, 지금도 여전히 사실입니다.
앱은 모든 화면 크기와 기기에서 사용자의 요구사항을 충족할 수 있도록 발전해야 합니다.
이제는 성능이 우수하고 제대로 작동하는 앱 레이아웃을 갖추는 것이 일반적인 관행입니다.
이를 위한 가장 좋은 방법은 Jetpack Compose와 Navigation 3를 사용하는 것입니다.
입력도 마찬가지입니다.
정상적으로 작동할 것입니다.
물론 앱의 아키텍처와 상태 관리도 모두 레이아웃과 입력의 일부입니다.
ADS에서는 최신 도구와 권장사항을 사용하여 이를 수행하는 방법에 관한 다양한 강연이 진행됩니다.
하지만 오늘은 처음부터 Googlebook을 위해 개발해 온 개발자들을 위한 자리를 마련하고 그들의 이야기를 들어보는 좋은 기회가 될 것 같습니다.
Notability는 Googlebook을 위해 처음부터 새롭게 설계된 강력한 메모 앱입니다.
Logitech은 키보드, 마우스, 기타 주변기기가 Chromebook에서 작동하도록 하는 데 그치지 않고 사용자 맞춤설정을 비롯해 Chromebook에서 매우 잘 작동하도록 노력했습니다.
조, 제가 먼저 말씀드려서 죄송하지만 자세히 살펴보겠습니다.
그것만으로도 충분합니다.
이번에는 랩이 없습니다. 죄송합니다.
그리고 프리스타일은 절대 안 돼.
어쨌든 Googlebooks에 Notability를 출시하게 되어 정말 기쁩니다. 이제 라이언에게 발표를 넘기겠습니다.
감사합니다.
좋습니다.
감사합니다, 엠.
Google Books에 참여하게 되어 정말 기쁩니다.
Notability는 현재 수백만 명의 학생이 학습하고 전문가가 메모하는 공간입니다.
앞서 말씀드린 것처럼 이제 Android에서 사용할 수 있으며, Google에서 이를 어떻게 빌드했는지, Android용으로 올바르게 빌드하면 어떻게 Googlebook에 최적화된 상태로 바로 빌드할 수 있는지 간단히 설명해 드리겠습니다.
우선, 약 2년 전에 이 프로젝트를 시작했을 때 iOS 앱을 그대로 이식하여 사용자에게 제공하는 것으로 충분하다고 생각하지 않았습니다.
사용자의 기대에 부응하는 진정한 네이티브 환경을 제공하면서도 모든 기능을 동일하게 제공하고 싶었습니다.
이를 위해 Material Design과 구성요소를 사용하여 모든 화면을 처음부터 맞춤설정했습니다.
또한 Jetpack Compose를 기반으로 구축했습니다.
Jetpack Compose를 기반으로 하는 네이티브 Android 애플리케이션이므로 소형 휴대전화와 저사양 기기뿐만 아니라 대형 화면을 갖춘 고사양의 강력한 태블릿, 컴퓨터, XR, 자동차 등 다양한 하드웨어를 지원할 수 있습니다.
Jetpack Compose를 사용하면 UI 인터페이스에 많은 추가 기능을 빌드하지 않고도 이러한 기능을 기본적으로 쉽게 지원할 수 있습니다.
이제 Notability로 넘어가겠습니다.
Notability의 모든 기능은 Jetpack Compose를 기반으로 빌드되었습니다.
UI는 플랫폼 전반에서 일관되며, 기본적으로 한 번만 빌드하면 휴대전화에 표시되는 내용과 태블릿, Googlebook과 같은 더 큰 기기에 최종적으로 표시되는 내용 간에 실질적인 차이가 없습니다.
이를 위해 Navigation 3는 매우 중요한 역할을 합니다.
Notability에 내장된 Google의 Navigation 3는 화면 크기에 따라 레이아웃을 맞춤설정할 수 있으며, 이 기능이 어떻게 표시될지 걱정할 필요가 없습니다.
이 데모에서는 측면 패널을 열 수 있는 공간이 있으면 측면 패널이 열리는 것을 볼 수 있습니다.
그렇지 않은 경우 하단 시트로 표시됩니다.
그렇다면 코드로 어떻게 표현할까요?
여기 표시된 코드에서 측면의 실제 요약 패널에 대한 진입점이 하나 있고 이를 백 스택에 추가하는 것을 볼 수 있습니다.
그런 다음 맞춤 장면 전략이 공간이 있는지 여부에 따라 측면 패널의 레이아웃을 선택합니다.
따라서 태블릿이나 Googlebook 기기에서는 사용 가능한 공간을 찾아 공간을 확보하고 오른쪽에서 패널을 밀어 넣습니다.
하지만 휴대전화나 폴더블과 같은 기기에서는 패널을 제대로 표시할 공간이 충분하지 않을 수 있으므로 대신 하단 시트로 표시됩니다.
Notability는 기기 유형(휴대전화, Googlebook, 태블릿, 폴더블 등)에 구애받지 않고 창 크기에 맞게 조정되므로 UI가 사용자의 필요에 맞게 자동으로 조정되기 쉽습니다.
휴대전화에서는 모든 버튼과 도구가 엄지손가락으로 쉽게 닿을 수 있는 위치로 재배치됩니다.
태블릿에서는 공간이 더 넓고 화면과 상호작용하기가 더 쉽기 때문에 모든 기본 콘텐츠 옆에 탐색 패널이 표시됩니다.
폴더블에서는 폴드를 활용하여 학습 퀴즈와 같은 고유한 레이아웃과 UI를 제공합니다. 사용자는 하단에 답변을 입력하고 상단에서 실제 퀴즈 진행 상황을 확인할 수 있습니다.
마지막으로 Google 도서에서는 창 크기가 부드럽게 조절됩니다.
따라서 데스크톱의 다른 일반적인 창 모드 애플리케이션과 마찬가지로 Notability는 나란히 표시해야 하는 필요에 따라 창 크기를 조절하면 이에 맞게 조정됩니다.
앞서 언급했듯이 Google 도서의 거의 모든 데스크톱 환경에서 작동하는 적응형 UI를 구축할 때
정답에 매우 근접한 답변을 얻을 수 있습니다.
하지만 데스크톱급 환경, 즉 정말 놀라운 환경을 원한다면 몇 가지 권장사항을 따르는 것이 좋습니다.
첫째, 키보드 우선입니다.
사용자는 일반 태블릿이나 휴대전화 기기에서만큼 터치에 민감하지 않으므로 키보드 단축키와 Android 단축키 목록에 쉽게 액세스할 수 있는 방법이 매우 중요합니다.
다음으로, 기기 유형과 사용 가능한 입력 주변기기에 따라 레이아웃이 달라지도록 기능을 설계할 수 있습니다.
키보드가 연결된 노트북이나 마우스 같은 것을 감지하면 홈 화면에 약간 다른 UI를 제공하여, 스타일러스와 자동 필기 메모가 기본 옵션인 태블릿보다 해당 유형의 사용자가 선호할 것으로 생각되는 도구로 사용자를 리디렉션합니다.
또 다른 고려 사항은 여러 기기가 어떻게 상호작용하는지입니다.
'이어서 사용'은 Android 17의 새로운 기능으로, 한 기기에서 다른 기기로 앱을 원활하게 전달할 수 있습니다.
이 예시에서는 휴대전화에서 더 큰 데스크톱 기기로 메모를 전달하고 있습니다.
메모 ID를 빠르게 동기화하고 Google 측에서 진행 상황을 빠르게 확인하면 됩니다.
따라서 Googlebook 기기에 간단한 앱 인텐트를 전송한 다음 중단한 지점부터 바로 이어서 작업할 수 있습니다.
데스크톱급 기기에서 고려해야 할 또 다른 사항은 멀티 입력 지원 모델입니다.
따라서 앞서 언급한 키보드 단축키뿐만 아니라 이전과는 다른 유형의 확대/축소 및 스크롤 동작을 지원하는 트랙패드도 사용할 수 있습니다.
또한 이전에는 없었던 컨텍스트 메뉴를 사용자에게 제공해야 할 수도 있습니다.
또한 많은 Googlebook 기기가 여전히 터치스크린 기기이므로 사용자가 기기와 상호작용할 때 스타일러스와 손가락뿐만 아니라 트랙패드 커서에 대해서도 다른 입력 인식을 제공해야 합니다. 이 세 가지는 모두 다르게 처리되어야 하기 때문입니다.
Notability와 같이 잉크와 메모 작성에 관심이 있다면 Jetpack Ink를 사용하는 것이 좋습니다.
따라서 이 기능은 복잡하고 번거로운 스레드, 렌더링, 버퍼 리더, 기타 여러 가지(잠시 후에 보여드리겠습니다)를 관리할 필요 없이 잉크에 지연 시간이 짧은 빌드 시스템을 제공하는 데 사용됩니다.
하지만 지금 작동한다면 Logitech 덕분에 Notability 앱의 실시간 데모를 보여드릴 수 있습니다.
네, 좋습니다.
자, 어서요.
좋습니다.
이전에 실행한 테스트가 있습니다.
하지만 보시다시피 손가락을 사용하고 있으므로 손가락 입력이 여전히 인식됩니다. 아주 좋습니다.
원하는 경우 마우스를 사용할 수도 있습니다.
하지만 현재 Android 전용 맞춤 브러시를 빌드할 수 있었습니다.
여기에서 무지개 및 반짝이 효과를 선택했으므로 입력 또는 잉크 효과가 Jetpack Ink 라이브러리의 영향을 받습니다.
여기에서 메시지를 한 번 더 작성해 보겠습니다.
안녕하세요.
그런 다음 마지막 부분에 Android 녹색을 선택합니다.
정확하게 터치하기가 어렵습니다.
Android 녹색이네요.
그러면 여기에서 기본 모델로 사용하는 색상에 따라 실제 색상이 변경되는 것을 확인할 수 있습니다.
좋습니다.
과거에는 이러한 유형의 브러시를 만들 때 모든 맞춤 셰이더와 인터페이스, 기타 모든 요소를 올바르고 보기 좋게 만드는 데 몇 달이 걸리기도 했습니다.
다행히도 Jetpack Ink 덕분에 AI와 맞춤 브러시 빌더를 사용하면 1주일 이내에 완료할 수 있습니다.
그러니 어떤 종류의 문신이든 관심이 있다면 알려주세요.
시간을 많이 절약해 주는 훌륭한 API입니다.
좋습니다.
앞서 말씀드린 것처럼, 이와 같은 모습입니다.
그래서 '젖은 잉크 레이어'라는 것이 있습니다.
이것은 진행 중인 잉크로, 아직 그려지고 있으며, 건조한 잉크 레이어와 비교하여 매우 반응성이 높아야 합니다.
물리적인 관점에서 생각하면 이해가 됩니다.
저장된 잉크는 이미 완료되었습니다.
따라서 이전에는 인수인계가 전적으로 저희의 책임이었습니다.
따라서 스레딩을 하고, 다시 그리고, 정리하고, 드라이 레이어에 전달하고, 동기화되고 깜박이지 않는지 확인해야 하는 등 모든 복잡한 과정을 거쳐야 했습니다.
그리고 마지막에는 Notability의 고유성을 적용해야 했습니다.
자체 곡선 피팅 모델이 있고, 필기체를 돋보이게 하는 방법도 있습니다.
이것이 기존 모델이었습니다.
Jetpack Ink 덕분에 곡선 피팅을 맞춤 진행률 도형 뷰에 입력하기만 하면 Android에서 바로 마법처럼 작동합니다.
Jetpack Ink와 다른 Google 라이브러리를 논의할 때 고려하는 또 다른 사항은 KMP입니다.
그래서 이미 빌드된 iOS 코드를 살펴보고 'Android와 iOS 간에 일부 로직을 공유하고 싶다.
모델, 변경사항, 복잡한 수학이 있습니다.
공유하는 것이 합리적입니다."
그래서 'C++나 Apple의 Objective-C를 사용하자'고 생각했습니다.
Kotlin 멀티플랫폼은 iOS 엔지니어가 구현하기 더 쉬울 뿐만 아니라 실제로 더 빨랐습니다.
Kotlin을 사용해 성능을 개선하고 Android 코드를 많이 복사할 수 있었을 뿐만 아니라 장기적으로 iOS에도 더 쉬웠습니다.
따라서 코드를 공유하고 싶다면 Kotlin 멀티플랫폼을 살펴보는 것이 좋습니다.
현재 검토 중입니다.
아직 100% 지원되는 것은 아닙니다. 아시다시피 다양한 AI 모델을 사용하면 여러 위치에 코드를 저장하는 것만으로도 더 쉽게 부정행위를 할 수 있지만, Google은 여전히 이 문제를 적극적으로 조사하고 있으며 매우 중요하게 생각하고 있습니다.
이제 Notability만의 특별한 기능을 살펴보겠습니다.
Android에서 작동하는 텍스트 편집기를 빌드하려고 하면 현재로서는 대규모의 거대한 문서 텍스트 편집기를 빌드하는 좋은 방법이 없다는 것을 알 수 있습니다.
기본 Android 입력란 수정은 작은 UI, 작은 EditText, 짧은 형식의 항목에 관한 것입니다.
결국 저희는 기존 Android API를 기반으로 하면서도 훨씬 더 큰 문서, 즉 수천 페이지의 텍스트를 동시에 처리할 수 있는 매우 복잡한 시스템을 구축해야 했습니다. 이 시스템은 공동 편집이 가능하므로 다른 곳에 있는 사용자가 500페이지 떨어진 곳에서 편집할 수 있으며, 이로 인해 작업 중인 작업에 영향을 미치는 변화가 발생할 수 있습니다.
이를 위해 Google은 키 입력을 두 가지 경로로 처리합니다.
첫 번째 경로는 최선을 다해 이 키가 여기에 표시되도록 하는 것입니다.
현재 내부 상황을 파악할 수 있는 모든 정보를 바탕으로 판단할 때 이 정도면 괜찮은 것 같습니다.
그런 다음 간단한 동기화를 진행합니다.
백엔드로 이동하여 공동 운영자를 확인하고 '모든 것이 정상인가요?'라고 묻습니다.
적절한 답변인가요?
괜찮은가요?"
변경해야 할 사항이 있으면 그 시점에 다시 조정합니다.
두 사용자가 같은 줄에서 키를 누르고 있다면 누가 무엇을 얻을지 약간 혼란스러울 수 있습니다.
하지만 대부분의 경우 이 방법은 매우 효과적입니다.
여기서 언급하는 이유는 이 작업에 엄청난 노력을 기울이고 있으며 오픈소스로 만드는 것을 고려하고 있기 때문입니다.
따라서 이 컨퍼런스에 참석한 분이나 온라인에서 이 내용을 보시는 분 중 이 프로젝트에 협력하고 싶거나 좋은 아이디어가 있다고 생각하는 분은 알려주시기 바랍니다.
여기에 투자할 가치가 있는지 고민하고 있지만, 저희에게는 큰 도전이었고 결과에 매우 만족하고 있습니다.
좋습니다. 이제 잉크가 작동하는 방식입니다.
협업 모델 측면에서 보면, Google 측에서 어떻게 작동하는지 조금 더 직접적으로 보여줍니다.
여기에서 볼 수 있듯이 세 단계가 있습니다.
터치다운이 있습니다. 연결된 기기(이 경우 iPad)에 '잉크 이벤트를 시작합니다'라고 알립니다.
그런 다음 실제 그림이 있습니다. 사용자가 기기를 얼마나 오래 유지하는지, 즉 펜을 얼마나 오래 돌리는지에 따라 수백만 개가 있을 수 있습니다.
너무 오래 걸리지 않기를 바랍니다.
어느 시점에는 한계가 있다고 생각하지만, 일반적인 사용 사례에서는 괜찮습니다.
그런 다음 들어 올리기 이벤트가 있습니다.
따라서 이를 관리하기 위해 모델에 임시 객체를 유지합니다.
즉, iPad에서는 '획이 들어오고 있지만 아직 여기에 없다'고 말합니다.
상호작용할 수 없습니다.
일시적인 것입니다."
완료 이벤트가 실행된 후에야 비로소 '좋습니다.
이제 iOS나 다른 클라이언트가 가져와서 상호작용할 수 있는 하나의 객체로 전체를 대체합니다."
이것은 또한 우리가 오픈 소싱을 조금씩 시도하고 있는 것입니다.
이것은 직접적인 잉크 입력이 아니라 일시적인 요소, 특히 텍스트 레이어에 있는 요소입니다.
좋습니다.
그리고, 네.
사용을 권장하는 다른 기능도 있습니다.
온디바이스 AI는 훌륭합니다.
문서 스캔에 사용하므로 문서를 스캔하고 PDF 텍스트를 분석하고 필기 인식을 수행할 수 있습니다.
또한 Gemini와 같은 개방형 Cloud AI 모델을 사용하여 스마트 노트를 생성합니다. 이 노트는 사용자의 노트를 분류하고 요약한 후 학습 모델에 더 적합하고 상호작용이 가능한 방식으로 사용자에게 다시 제공합니다.
이 모든 것이 결합되어 Notability가 노트북 애플리케이션처럼 느껴지게 합니다.
결국 이것이 목표입니다.
다양한 흥미로운 모델, 다양한 기능, 텍스트, 입력이 있지만 중요한 것은 노트북 애플리케이션처럼 느껴지는지, 아니면 큰 화면에 휴대전화 앱을 띄워 놓고 장난치는 것처럼 느껴지는지입니다.
키보드, 트랙패드, 스타일러스, 창 크기 조절 등은 모두 사용자에게 좋은 경험을 제공하기 위해 제대로 구현해야 하는 핵심 기능입니다.
하지만 앞서 언급했듯이 Jetpack Compose, Navigation 3, Material Design 등 이 모든 것이 이를 지원합니다.
따라서 제대로만 한다면 실제로 큰 부담이 되지 않습니다.
여기까지 오는 건 꽤 쉬워요.
그렇습니다.
핵심 요점입니다.
Android의 미래를 생각할 때 더 이상 기기에 대해 생각하지 않습니다.
휴대전화, 폴더블, XR 기기, 데스크톱, 노트북, 태블릿, 자동차, TV 등 기기 유형에 대해 생각하지 않을 것입니다.
대신, 사용할 수 있는 화면 크기는 무엇이고 사용자에게 제공되는 입력 모달은 무엇인지가 중요합니다.
앞으로도 최상의 환경을 제공할 수 있도록 노력하겠습니다.
이전 슬라이드에서 언급했듯이 Compose와 Nav 3를 사용하면 이 모든 것을 쉽게 지원할 수 있습니다.
그리고 Google은 매일 Jetpack Ink나 온디바이스 Gemini와 같이 강력한 새 API를 출시하고 있습니다. 이러한 API를 사용하면 핵심 환경을 쉽게 구축하고, 나만의 고유한 마법 같은 요소에 집중할 수 있습니다.
좋습니다.
그렇습니다.
감사합니다.
제 발표는 여기까지입니다.
궁금한 점이 있으면 나중에 알려주세요. Notability에 문의하셔도 됩니다.
이 앱은 두 달 전에 Android에 새로 출시되었습니다.
드디어 베타 버전이 종료되었습니다.
그러니 부담 없이 사용해 보세요.
의견을 보내주세요.
뒤에 있는 데모 프로세스의 Google 도서에서도 사용할 수 있습니다.
이제 Logitech의 조에게 마이크를 넘기겠습니다.
감사합니다.
좋습니다.
라이언, 감사합니다.
오늘, 죄송합니다.
슬라이드를 가져오겠습니다.
라이언, 감사합니다.
오늘은 주변기기 맞춤설정 앱인 Options+를 Chromebook에 도입한 방법을 공유해 드리겠습니다.
주변기기 경험을 구축한다는 것은 어떤 의미일까요?
지금까지 구축한 것, 그 이면의 몇 가지 엔지니어링 스포트라이트, 로우라이트, 그리고 앞으로의 방향에 대해 다루겠습니다.
Logitech 기기는 이전에도 Android와 호환되었으며, 대부분의 사용자는 주변기기를 통해 접근성이 향상된다고 느꼈습니다. 특히 프리미엄 노트북과 외부 모니터에 도킹된 휴대전화에서 이러한 효과가 두드러졌습니다.
이와 관련해 아까 아래층에 있는 Google 북스 데모 부스에서 Logitech 게이밍 순차 기어를 테이블에 연결하고 이를 사용해 태블릿의 화면을 전환하는 것을 보았습니다.
여길 보시면
그렇게 사용할 수도 있습니다.
아, 그리고 페라리는 시퀀셜 기어박스에 5만 유로를 추가로 청구해야 했습니다. 어쨌든.
네.
Googlebook은 라이언이 포괄적으로 언급했듯이 작업할 수 있는 공간이 훨씬 더 많습니다.
보시다시피 화면 크기를 조절할 수 있고, 가로 모드, 세로 모드, 정사각형 모드 등 원하는 대로 설정할 수 있으며, 앱 간에 작업할 수 있는 공간이 훨씬 더 많습니다.
작업 중인 항목, 다른 앱, 컨텍스트 전환 등 모든 작업을 계속할 수 있습니다.
이로 인해 앱 디자인이 확실히 바뀌었고, 레이아웃은 전체 절차에서 유용하게 유지되어야 합니다.
Logitech은 주변기기 분야에서 많은 경험을 보유한 회사입니다.
Google은 이 작업에 매우 강력한 기반을 제공합니다.
따라서 이러한 업무 환경에서는 마우스나 키보드가 사용자가 하루 종일 상호작용하는 방식입니다.
워크플로에 매우 원활하게 진입할 수 있습니다.
Logitech이 수십 년간의 경험을 이 작업에 적용한다고 해도 과언이 아닙니다.
이달 초에 45주년을 맞이한 것 같습니다.
로지텍은 창립 2년 차부터 마우스를 제작해 왔습니다.
이러한 경험을 바탕으로 이 분야에 진출하는 데 큰 자신감을 가지고 있습니다.
더 좋은 점은 ChromeOS와 함께한 오랜 역사가 있다는 것입니다.
Google은 과거에 ChromeOS와의 최고 수준의 호환성을 보장했습니다.
지금까지 말씀드린 바와 같이, Google은 하드웨어, 소프트웨어, 플랫폼, OS, Google북스 간의 경계를 허무는 실용적인 경험을 제공하고 있습니다.
예를 들어 사용자가 버튼을 누르면 예측 가능한 결과가 표시되는 것처럼 간단할 수 있습니다.
모든 사람이 당연하게 여기는 것과 같습니다.
하지만 실제로는 원활한 구성요소 호환성이 필요합니다.
또한 주변기기와의 호환성도 모두가 좋아하는 요소입니다.
예를 들어 감도를 적절하게 조정하는 것입니다.
65개입니다. 더도 말고 덜도 말고 정확히 65개입니다.
따라서 이 세 가지 요소 간에 원활한 호환성 통합이 필요합니다.
이제 Googlebooks가 출시됨에 따라 Googlebooks용 Options+를 제공합니다.
현재 다양한 마우스와 키보드를 지원하고 있으며 앞으로 더 많은 기기를 지원할 예정입니다.
또한 사용자가 기기를 구성할 수 있는 곳이기도 합니다.
그리고 앞서 언급했듯이 감수성 같은 것도요.
이제 상황이 흥미로워집니다.
구성 가능성에 대해 이야기할 때는 실제로 두 가지 측면을 이야기합니다.
한쪽은 하드웨어, 펌웨어 측면으로, 기능이 펌웨어에 구현됩니다.
다른 한쪽은 이 데모와 프레젠테이션의 핵심인 OS 측면입니다.
여기 계신 분들은 모두 아시겠지만, 과거에는 Android 기기와 대부분의 앱이 자체 샌드박스, 사용자 공간에 있었습니다.
할 수 있는 일에는 특정 제한사항이 있으며, 할 수 없는 일과 원하는 일에도 제한사항이 있는 경우가 많습니다.
이는 Google에 매우 중요한 문제입니다.
이제 스크린샷을 보여드리겠습니다. 나중에 데모를 보여드리겠지만, 여기 스크린샷이 있습니다.
여기 MX Master 4 마우스가 있고, 다양한 기능이 있습니다.
주변기기 세계를 아는 사람이라면 특정 기능이 펌웨어 기능, 기기 기능으로 구현되어 있다는 것을 알 수 있습니다.
그렇지 않은 것도 있습니다.
Google은 사용자가 양쪽을 모두 구성할 수 있도록 지원하기 위해 노력하고 있습니다.
저희의 역할은 기본적으로 이러한 옵션을 이해하기 쉽게 만들고, 사용자에게 모든 기능을 제공하며, OS와 펌웨어에 맞게 올바르게 구성하는 것입니다.
이제 간단한 데모를 살펴보겠습니다.
정말 인상적인 데모였습니다.
하지만 다음에는 마우스를 사용해, 라이언.
자, 이제 시작합니다.
내 기기 화면입니다.
MX Master 4 마우스가 온보딩되어 있는 것을 볼 수 있습니다.
그럼 시작해 보겠습니다.
앞서 살펴본 것처럼 구성 화면으로 바로 이동합니다. 여기가 바로 마법이 일어나는 곳입니다.
이제 먼저 서클 투 서치를 엄지 버튼에 할당해 보겠습니다.
그런 다음 매직 포인터를 기능 버튼에 추가합니다.
이제 시작해 보겠습니다.
브라우저를 열어 보겠습니다.
여기에서 확인하세요.
여기에서 방금 서클 투 서치를 할당한 엄지 버튼을 누릅니다.
보시다시피 키보드에 원을 그립니다.
완료되었습니다.
Google은 이 키보드에 관한 정보를 표시할 뿐입니다.
매우 편리하고 부드럽습니다.
이제 다른 방법을 시도해 보겠습니다.
아, 죄송합니다.
뒤로 가보겠습니다.
매직 포인터를 사용해 보겠습니다.
여기에서 전환해 보겠습니다.
기능 버튼을 누르고 태그를 지정한 다음 '이 기기는 무엇인가요?'를 누르면
이제 완료되었습니다.
Google에서 검색을 시작하고 결과를 표시합니다.
이 기능의 장점은 전체 워크플로를 한 손으로 조작할 수 있다는 점입니다.
기능을 할당하고, 누르고, 원을 그리고, 클릭하면 끝입니다.
이러한 작업은 사용자의 접근성과 작업 방식을 크게 개선할 것으로 기대됩니다.
이제 슬라이드로 돌아가겠습니다.
그렇다면 무엇이 이런 결과를 가져왔을까요?
과거에는 앱으로 할 수 없는 일이 많았기 때문입니다.
Googlebooks와 Android 기기에서 모두 사용할 수 있는 Peripheral Customization API입니다.
하지만 Google의 메모는 다음과 같습니다.
현재 이 API는 허용 목록에 포함되어 있습니다.
하지만 이번 분기인 2026년 4분기에 Android 업데이트와 함께 출시될 예정입니다.
출시되면 전 세계 개발자가 사용할 수 있을 것입니다.
이제 기술적인 측면을 조금 살펴보겠습니다.
이 전체에는 세 가지 주요 구성요소가 있습니다. 기기, 트리거(키 또는 버튼일 수 있음), 작업(앱 OS 측)입니다.
이제 이 코드 스니펫을 간단히 살펴보겠습니다.
맨 위에서는 공급업체 ID와 제품 ID를 사용하여 기기를 정의합니다.
// Vendor and product Information
const val VENDOR_ID = 1234
val pid = 123
// Use the mouse Middle Button as the trigger
val trigger = ButtonCustomizationTrigger(MotionEvent.BUTTON_TERTIARY)
// Set Voice Assistant as the action
val actionBuilder = AppCustomizationAction.Builder(component, ACTION_MAIN)
actionBuilder.setData(ActionId.ACTION_VOICE_ASSIST.actionId) // Action IDs are predefined
val action = actionBuilder.build()
val im = context.getSystemService(INPUT_SERVICE) as InputManager
im.addPeripheralCustomization(VENDOR_ID, pid, trigger, action)일반적으로 vid 및 pid라고 합니다.
아래로 이동하여 트리거를 정의하기 시작합니다.
여기에서 볼 수 있듯이 가운데 버튼을 트리거로 사용하려고 합니다.
여기에서 가운데 버튼을 OS 기능의 음성 어시스턴트 부분에 매핑하려고 합니다.
그렇죠?
여기 AppCustomizationAction에서 actionBuilder가 있고 여기에도 있습니다.
그런 다음 아래로 이동하여 제품, 기기, 트리거, 작업 간의 매핑을 등록합니다.
물론 실제 코드는 이보다 조금 더 복잡하지만 전체적인 개념은 이렇습니다.
매우 간단하고 사용하기 쉽습니다.
이제 또 다른 멋지고 흥미로운 기능을 살펴보겠습니다.
모든 사용자가 쉽게 볼 수 있도록 여기에 GIF 파일을 넣었습니다.
기본적으로 호환되고 지원되는 기기(이 경우 Logitech mobifold 마우스)가 연결되면 OS에서 표준 알림을 트리거하여 '해당 기기용 앱이 있습니다'라고 알려줍니다.
사용자에게 알립니다.
클릭하면 Play 스토어로 이동하여 바로 설치할 수 있습니다.
이를 빠른 페어링 검색이라고 합니다.
이제 마지막으로 UI 측면으로 넘어가겠습니다.
라이언이 Googlebook의 UI 구현 방식에 관해 많은 것을 다루었으므로 여기서는 빠르게 진행하겠습니다.
보시다시피 Options+는 Windows, Mac, 그리고 이제 Googlebook과 같은 다양한 플랫폼에서 실행됩니다.
따라서 저희는 두 가지 목표를 가지고 있습니다. 하나는 플랫폼별로 특화된 느낌을 주는 것이고, 동시에 전반적으로 유사한 느낌을 주는 것입니다. 즉, 한 플랫폼에서 Options+에 익숙해지면 다른 플랫폼에서도 원활하게 사용할 수 있어야 합니다.
즉, 특정 플랫폼을 활용하면서도 동일한 디자인 언어를 사용해야 합니다.
보시다시피 전반적으로 일관된 디자인 언어가 적용되었습니다.
앞서 설명했듯이 Googlebook 사용자는 Googlebook을 노트북/데스크톱 방식으로 사용하는 경향이 있습니다.
따라서 Googlebook에서도 앱 자체가 데스크톱 앱처럼 보입니다.
따라서 앱 자체가 데스크톱 앱처럼 작동할 수 있으며 창 크기, 다양한 터치에서 잘 작동하고 물론 마우스와 키보드를 사용하도록 제어할 수 있습니다.
지금까지 Googlebook에서 Logitech 주변기기와 Options+를 사용하는 방법을 간략하게 알아봤습니다.
효과도 뛰어납니다.
하지만 이제 시작일 뿐입니다.
몇 가지 단계가 있습니다. 우선 이 환경을 더 많은 기기, 더 많은 키보드, 마우스, 기타 주변기기에 제공하고 실제 사용자 의견을 사용하여 이 앱 자체를 개선하고자 합니다.
그리고 물론 가장 중요한 것은 앞으로 Google과 더 협력하고 새로운 플랫폼에 더 깊이 통합하는 것입니다.
따라서 Googlebook의 궁극적인 목표는 주변기기 맞춤설정을 Googlebook 사용 시 매우 자연스러운 경험으로 만들고 사용자가 원하는 방식으로 작업할 수 있도록 지원하는 것입니다.
알겠습니다.
아래층에 있는 부스를 방문하여 Options+와 멋진 Logitech 기기를 직접 사용해 보세요.
파트너인 Google과 시간을 내어 주신 모든 분께 감사드립니다.
감사합니다.
// Vendor and product Information
const val VENDOR_ID = 1234
val pid = 123
// Use the mouse Middle Button as the trigger
val trigger = ButtonCustomizationTrigger(MotionEvent.BUTTON_TERTIARY)
// Set Voice Assistant as the action
val actionBuilder = AppCustomizationAction.Builder(component, ACTION_MAIN)
actionBuilder.setData(ActionId.ACTION_VOICE_ASSIST.actionId) // Action IDs are predefined
val action = actionBuilder.build()
val im = context.getSystemService(INPUT_SERVICE) as InputManager
im.addPeripheralCustomization(VENDOR_ID, pid, trigger, action)