macOS용 네이티브 Gmail 클라이언트: “네이티브”의 진짜 의미
“네이티브”는 모든 Gmail 앱 페이지에서 가장 많이 쓰이는 단어이고, 적어도 세 가지 다른 뜻을 지닙니다. Hark가 스스로에게 적용하는 정의, 앱의 어느 부분이 macOS 자체 프레임워크로 만들어졌는지, 그리고 시스템 웹 엔진을 쓰는 단 한 곳과 그 이유를 소개합니다.
“네이티브”가 뜻하는 세 가지
이 단어는 제품 페이지마다 다른 역할을 합니다. 네이티브 Gmail 앱이 필요한지 결정하기 전에, 지금 제시되는 것이 어느 쪽인지 알아 둘 만합니다.
Dock 아이콘
앱은 사실 Gmail 웹사이트이며, 앱에 함께 들어 있는 브라우저 사본 안에서 불러옵니다. 아이콘, 윈도우, 알림은 생기지만 윈도우 안에 있는 것은 탭에서 보던 바로 그 웹 페이지입니다. 가장 느슨한 뜻이자 가장 흔한 뜻입니다.
Mac처럼 보이는 외관
인터페이스 역시 웹 페이지이지만, 적절한 회색 톤, 사이드바, 도구 막대 등 macOS를 닮도록 꾸며져 있습니다. 스크린샷으로는 그럴듯해 보일 수 있습니다. 하지만 포인터를 대 보면 여전히 웹 페이지처럼 동작합니다. 드래그하려 했는데 텍스트가 선택되고, 메뉴는 시스템 메뉴가 아니라 그려 놓은 것이며, 무엇이든 나타나기 전에 브라우저 엔진부터 시작해야 합니다.
플랫폼 프레임워크로 만든 앱
목록은 진짜 목록 뷰이고, 메뉴는 메뉴 막대의 메뉴이며, 텍스트 필드는 맞춤법 검사와 받아쓰기를 갖춘 시스템 텍스트 필드이고, 윈도우는 OS가 타일 배치·가리기·복원하는 방법을 아는 윈도우입니다. 앱이 화면을 그리기 전에 따로 시작해야 할 것이 없습니다. Hark가 쓰는 뜻이 바로 이것이며, 이 페이지의 나머지 부분은 그 범위를 설명합니다.
Hark에서 정확히 무엇이 네이티브인가
- 인터페이스 전체. 메일 목록, 사이드바와 라벨, 도구 막대, 검색, Settings, 캘린더 그리드와 편집기, Tasks 패널이 모두 SwiftUI와 AppKit으로 만들어져 macOS가 그립니다. 라이트와 다크 모드는 시스템 설정이나 사용자의 선택을 따르고, 강조 색상도 직접 고를 수 있습니다.
- 메일 작성기. 메일은 진짜 macOS 텍스트 뷰에서 씁니다. 서식 막대의 굵게·기울임꼴·밑줄, 시스템 맞춤법 검사기, 표준 Edit 메뉴, 링크와 인라인 이미지를 쓸 수 있으며, 텍스트 뷰인 척하는 웹 페이지가 아닙니다.
- 동기화 엔진. Rust로 작성된 코어가 Mac에서 실행되어 Google API를 통해 Gmail, Calendar, Tasks와 통신하고, 로컬 데이터베이스를 유지하므로 받은편지함이 네트워크가 아닌 디스크에서 열립니다.
- 데스크탑이 제공하는 모든 것. 알림 센터, Dock 배지, 새로 온 것을 한눈에 보여 주는 메뉴 막대 항목, 메일 작성용 별도 윈도우, Spaces, ⌘Tab, 그리고 그 자리에서 설치되는 업데이트까지.
웹 엔진을 쓰는 단 한 곳, 그리고 그 이유
HTML 메일은 HTML입니다. 뉴스레터, 영수증, 동료가 보낸 캘린더 초대는 웹 문서로 도착하며, 이를 충실하게 보여 주는 유일한 방법은 웹 엔진입니다. Hark는 메일 본문을 WebKit으로 렌더링합니다. WebKit은 이미 macOS에 포함된 엔진이며, Apple Mail도 같은 작업에 사용하는 엔진입니다.
이는 브라우저를 내장하는 것과는 다릅니다. 앱에 추가로 들어가는 것이 없고, 인터페이스가 나타나기 전에 부팅해야 할 것도 없으며, 엔진은 저희가 아니라 macOS가 업데이트합니다. 또한 읽기 창의 문서에만 쓰일 뿐, 그것을 둘러싼 앱에는 절대 쓰이지 않습니다. 답장할 때 원본 메일은 도착한 그대로 내 글 아래에 붙으므로, 인용된 스레드가 주고받는 동안 그대로 유지됩니다.
그 차이가 어떻게 느껴지는가
- 열면 바로 열립니다. 받은편지함은 로컬 데이터베이스에서 불러오므로 네트워크가 응답하기 전에 화면에 나타나고, 이미 동기화된 내용은 네트워크가 전혀 없어도 읽을 수 있습니다.
- 검색은 Gmail의 검색입니다.
from:,has:attachment,is:unread,newer_than:7d같은 연산자는 입력한 그대로 Google에 전달되고, 결과도 Gmail이 내놓을 결과 그대로입니다. 마음에 드는 검색은 Gmail 필터로 만들 수 있으며, 그러면 메일을 읽는 모든 기기에 대해 Google 쪽에서 필터가 실행됩니다. - 데스크탑답게 동작합니다. 알림은 macOS 알림이며, Hark가 맨 앞의 앱일 때는 조용합니다. Dock 배지는 Gmail과 같은 읽지 않은 메일 수를 보여 줍니다. ⌘W는 의도한 윈도우를 닫습니다. 메일 작성 윈도우를 다른 Space에 둘 수도 있습니다.
- 하나의 프로세스가 하나의 일을 합니다. 다른 탭 마흔 개와 메모리를 나눠 쓰는 브라우저가 밑에 깔려 있지 않고, 앱 안에 브라우저 사본을 따로 싣고 다니지도 않습니다.
네이티브가 뜻하지 않는 것
- 다른 Gmail이라는 뜻이 아닙니다. 라벨, 필터, 서명, 부재중 자동응답은 모두 사용자의 Gmail 것이며, API를 통해 읽고 씁니다. Hark에서 바꾸면 웹에 반영되고, 웹에서 바꾸면 Hark에 반영됩니다. 유일한 예외는 다시 알림입니다. Google이 이 기능을 API에 공개하지 않기 때문에, Hark가 Mac에 알림 시각을 보관했다가 직접 대화를 되돌려 놓습니다.
- Google과 무관하다는 뜻도 아닙니다. 보내기를 비롯해 메일함을 변경하는 모든 작업에는 연결이 필요합니다. 또한 Hark가 할 수 있는 일은 여전히 Google의 권한 범위 안에 있습니다. 예를 들어 삭제한 메일은 휴지통으로 갑니다. Hark가 영구 삭제를 허용하는 권한을 일부러 요청하지 않기 때문입니다.
- 완성품이라는 뜻도 아닙니다. Hark는 베타입니다. 설치당 Gmail 계정 하나만 연결하고, 키보드 단축키는 현재 적으며(j, k, 화살표 키, Esc), API가 공개하지 않는 몇몇 Gmail 설정은 빠뜨리는 대신 웹의 Gmail로 가는 링크로 표시합니다.
캘린더 쪽이 궁금해서 오셨다면 하나의 네이티브 Mac 앱에서 Gmail과 캘린더를이라는 별도의 글이 있고, 메일이 저희에게 절대 닿지 않도록 Hark를 어떻게 만들었는지에 대한 글도 있습니다.
질문
Hark는 래퍼로 감싼 웹 앱인가요?
아니요. 메일 목록, 사이드바, 도구 막대, 검색, Settings, 캘린더 그리드, Tasks 패널, 메일 작성기 등 인터페이스는 macOS 자체 프레임워크로 만들어졌고, 앱에 내장된 브라우저도 없습니다. Gmail 웹사이트는 절대 불러오지 않습니다.
Hark는 WebKit을 전혀 쓰지 않나요?
한 곳에서 씁니다. 메일의 HTML 본문을 표시할 때, macOS에 포함된 WebKit을 사용합니다. Apple Mail이 쓰는 것과 같은 엔진입니다. 인터페이스가 아닌 문서에만 쓰이며, 앱 안에 싣고 다니는 브라우저 사본도 아닙니다.
네이티브라면 오프라인에서도 작동하나요?
부분적으로는 그렇습니다. 메일, 캘린더 일정, 다운로드한 첨부 파일처럼 이미 동기화된 내용은 Mac의 로컬 캐시에 있으므로 연결 없이도 읽을 수 있습니다. 보내기를 비롯해 메일함을 변경하는 작업에는 Google과의 연결이 필요합니다.
Gmail처럼 느껴지나요, Mac 메일 앱처럼 느껴지나요?
의도적으로 둘 다입니다. 대화, 라벨, 다시 알림, 검색 연산자, 필터, 하나의 휴지통 같은 개념은 Gmail의 것이고, 윈도우는 진짜 메뉴, 알림 센터, Dock 배지, Spaces, ⌘W를 갖춘 Mac 윈도우입니다. 읽기 화면은 Gmail 자체의 화면에 맞춰 측정했기 때문에 메일이 기대한 모습 그대로 보입니다.