사용자의 집중력을 보호하는 컨텍스트 인식 메뉴바 앱을 만들었습니다
요약
본 기사는 사용자의 집중력을 보호하고 깨진 컨텍스트를 관리하는 'Conscio'라는 메뉴바 앱을 소개합니다. 이 앱은 접근성 API를 활용하여 현재 작업 중인 컨텍스트와 관련된 파일, URL 등을 팝오버로 제공하며, 포커스 모드를 통해 알림 방해 없이 집중할 수 있도록 설계되었습니다.
핵심 포인트
- 접근성 API를 사용해 실시간으로 컨텍스트 정보를 파악합니다.
- 포커스 모드는 앱 간 전환 시에도 정리된 요약본을 제공하여 몰입도를 유지합니다.
- 개인 정보 보호를 최우선으로 하며, 온디바이스(on-device) 처리를 기본 원칙으로 합니다.
아무도 세지 않는 문제
지식 노동자들은 평균적으로 이미 가지고 있는 것을 찾는 데 하루에 20~30분을 잃습니다. 작업 관리자는 늘어났고, 컨텍스트의 질은 무너졌습니다.
Conscio (라틴어: 인지하다)는 보이지 않는 세금, 즉 깨진 컨텍스트를 목표로 합니다.
작동 방식
2초 간격의 심장 박동으로 가장 앞에 있는 앱과 문서를 읽고 접근성 API(Accessibility APIs)를 사용합니다.
팝오버(popover)는 검색하기 전에 해당 컨텍스트와 관련된 파일, URL 및 작업을 표시합니다.
포커스 모드(Focus mode)는 집중할 앱을 선언합니다 (Xcode, Safari, Pages 등): 한 앱 안에 있을 때는 알림이 보류되며, 앱으로 돌아오면 정리된 요약본을 받습니다.
습관 대시보드는 포커스 시간/컨텍스트 전환을 긍정적으로 점수화하며, 절대 꾸짖지 않습니다.
온디바이스(on-device)만 되어야 하는 이유
세 단어: 계정 없음. 원격 측정(telemetry) 없음. 사용자의 컨텍스트는 가장 사적인 메타데이터입니다. 개인 정보 보호 자세를 체크박스가 아닌 기본값으로 만드는 것이 핵심입니다.
빌드 과정 이야기 (Xcode 불필요)
.app은 Swift Package Manager 실행 파일을 중심으로 수동 조립한 번들입니다:
swift build
최소한의 Info.plist 작성 (CFBundleExecutable, LSUIElement 등)
바이너리를 MyApp.app/Contents/MacOS/에 복사합니다.
codesign --force --sign - (ad-hoc)
AppKit 스크립트를 통해 아이콘을 생성 → iconutil → .icns
공유할 만한 함정들:
UNUserNotificationCenter는 번들 ID가 없으면 앱을 조용히 종료시킵니다.
AXUIElementCreateApplication은 Optional이 아닌 핸들을 반환합니다. if let으로 처리하지 않으면 컴파일에 실패합니다.
xattr -cr로 재서명하기 전에 실행하거나, macOS가
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기