거부기린 화이팅
By 최호1 min read7 words

거부기린 화이팅

Story

어느 날부터 사진을 찍으면 내 어깨가 비뚤어져 보이기 시작했다. 거울을 보며 “왼쪽이 더 올라갔나?” 같은 생각을 했다. 그런데 문제는 거울 앞에서만 정확해진다는 것이었다. 다시 노트북 앞에 앉으면, 몸은 자연스럽게 익숙한 자세로 돌아갔다. 등은 둥글어지고, 목은 앞으로 빠지고, 한쪽 어깨는 모니터 쪽으로 더 빨려 들어갔다.

그때 깨달았다. 자세는 ‘결심’으로 고쳐지는 게 아니었다. 결심은 하루를 못 버티고, 자세는 하루 종일 반복되니까.

나는 운동선수 출신이라 “몸을 쓰는 감각”이 익숙하다고 생각했는데도, 앉아서 일하는 시간이 길어지니 똑같이 무너졌다. 오히려 익숙함이 더 위험했다. ‘이 정도는 괜찮겠지’가 누적되면, 어느 순간 불편함이 기본값이 된다. 그러면 교정은 더 어려워진다.

그래서 거부기린을 만들기 시작했다. 거부기린은 사용자의 자세를 카메라로 추정하고, 일정 기준을 벗어날 때 조용히 신호를 보내는 데스크톱 앱이다. 누군가를 감시하려는 도구가 아니다. 나를 포함해, “앉아서 오래 일하는 사람”이 무너지는 순간을 조금이라도 빨리 알아차리게 만드는 장치다.

이 글은 기술 이야기보다 한 걸음 뒤에서 시작한다. “왜 이런 걸 만들었는지”와 “이 프로젝트가 어떤 감정과 기준 위에 올라가 있는지”를 먼저 적어두고 싶었다. 첫 글은 보통 선언문처럼 남는다. 내가 앞으로 무엇을 만들지, 그리고 무엇을 만들지 않을지.


알림 앱이 아니라, 습관을 바꾸는 장치

자세 교정 앱은 이미 많다. 스마트폰에도, 웨어러블에도, 심지어 의자에도 있다. 그런데 나는 그걸 쓰면서 늘 같은 지점에서 멈췄다. 알림은 결국 꺼지기 때문이다.

처음에는 유용하다. “지금 구부정해졌습니다.” 그 한 마디가 나를 일으켜 세운다. 그런데 어느 순간부터 알림은 소음이 된다. 사람이 계속 같은 자극을 받으면 익숙해진다. 익숙해진 자극은 ‘정보’가 아니라 ‘방해’가 된다. 결국 손은 설정 화면으로 가고, 알림은 꺼진다.

그래서 방향을 바꿨다. 거부기린이 하려는 것은 “자세를 고쳐라”가 아니라, “지금 자세가 무너지고 있다”를 알아차리게 하는 것이다. 교정은 사용자가 한다. 앱이 할 일은 타이밍을 잡는 것이다. 내 몸이 무너지는 순간을 내가 모르기 때문에, 그 순간을 더 일찍 들려주는 도구가 필요했다.


왜 모바일이 아니라 데스크톱인가

내 하루에서 자세가 무너지는 시간은 대부분 책상 앞이다. 그리고 그 시간에 내가 가장 오래 보는 화면은 스마트폰이 아니라 모니터다. 모바일 앱은 “사용자가 열어줘야” 한다. 데스크톱 앱은 “사용자 옆에 계속 남아있을 수” 있다. 이 차이가 크다.

나는 거부기린을 “앱”이라기보다 “환경”에 가깝게 만들고 싶었다. 내가 의식하지 않아도 곁에 있는 것. 그리고 내가 원할 때만 확실히 개입할 수 있는 것. 트레이에 조용히 상주하고, 특정 상황에서만 부드럽게 신호를 주고, 필요하면 한 번에 설정을 바꿀 수 있는 것.

이런 ‘항상성’은 웹보다 데스크톱이 쉽다. 브라우저는 탭이 닫히면 끝나고, 백그라운드 실행 정책도 까다롭다. 반면 데스크톱은 시스템과 붙어 살 수 있다. 시작 프로그램 등록, 트레이, 전역 단축키, 알림, 창 관리 같은 것들이 “습관”을 만드는 데 도움이 된다.

그래서 Electron을 선택했다. 그리고 UI는 React로 빠르게 조립했다. 빠르게 만든다는 건 대충 만든다는 뜻이 아니다. 빠르게 만들수록 더 자주 사용자 경험을 검증하고, 더 많이 실패할 수 있다. 이 프로젝트는 기능을 한 번 만들어놓고 끝내는 게 아니라, 실제 사용 흐름 속에서 계속 조정해야 한다고 느꼈다.


“비전 AI”는 정확도만으로 완성되지 않는다

거부기린은 비전 AI를 활용한다. MediaPipe Pose 기반으로 작업하고 있다. 그런데 이런 이야기를 하면 사람들은 보통 정확도를 먼저 묻는다. 물론 중요하다. 하지만 나는 조금 다른 데에 더 오래 머물렀다.

서비스는 “모델이 맞췄다”로 끝나지 않는다. 카메라가 흔들릴 때, 조명이 어두울 때, 사용자가 화면 밖으로 나갔을 때, 포즈 포인트가 튀는 순간들이 매일 발생한다. 그때마다 경고를 띄우면 사용자는 금방 지친다. 반대로 아무 반응도 없으면 앱은 신뢰를 잃는다.

그래서 거부기린에서 더 중요한 건 정답을 맞히는 것이 아니라, 사용자가 받아들일 수 있는 신호로 바꾸는 것이다. 내가 지금 고민하는 것은 이런 종류의 질문들이다.

  • ‘나쁜 자세’ 판정을 한 번에 내릴 것인가, 일정 시간 누적할 것인가
  • 자세가 잠깐 좋아졌다 나빠지는 흔들림을 어떻게 다룰 것인가
  • 잘못 판정했을 때 사용자에게 어떤 방식으로 설명할 것인가
  • “알림”이 아니라 “피드백”으로 느껴지게 하려면 어떤 톤이어야 하는가

이 질문들은 사실 기술 문제이기도 하지만, 더 큰 틀에서는 사용자 경험 문제다. 모델을 가져다 붙이면 끝나는 프로젝트가 아니라는 걸 이때 확실히 알았다.


이 앱이 절대 하지 않을 것들

나는 거부기린이 ‘감시’가 되지 않길 원한다. 카메라 기반 서비스에는 항상 불편함이 따라온다. 사용자는 “내가 계속 촬영되는 건가?”를 먼저 생각한다. 그래서 거부기린은 처음부터 원칙이 필요했다.

  • 사용자의 영상은 가능한 한 로컬에서 처리한다
  • 필요한 것은 ‘영상’이 아니라 ‘포즈 좌표’ 같은 최소한의 신호다
  • 피드백은 사용자를 통제하지 않고, 선택권을 남긴다
  • 너무 공격적인 알림으로 사용자를 몰아붙이지 않는다

이 원칙은 기술 설계에도 그대로 영향을 준다. 데이터 저장 방식, 디버깅 방식, 성능 최적화 방향까지도.


거부기린이 궁극적으로 만들고 싶은 경험

나는 거부기린을 “자세 교정 서비스”라고 부르지만, 사실은 그보다 더 개인적인 목표가 있다. 나를 방해하지 않으면서도 나를 지켜주는 시스템을 만들고 싶다.

좋은 도구는 존재감이 크지 않다. 그런데도 어느 순간 돌아보면, 그 도구가 내 습관을 바꿔놓았다는 걸 알게 된다. 거부기린이 그런 도구가 되었으면 좋겠다. 하루에 몇 번이라도 내가 자세를 바로잡는다면, 그 작은 변화는 시간이 지나 꽤 큰 차이가 된다.

나는 이런 프로젝트를 “완성”이라는 단어로 끝내기 어렵다고 생각한다. 사용자의 몸은 매일 다르고, 환경은 계속 바뀌고, 기준은 더 정교해져야 한다. 그래서 거부기린은 결과물이 아니라 과정에 가깝다. 다만 그 과정은 확실히 남기고 싶다. 어떤 선택을 했고, 왜 그랬고, 어떤 실패를 했는지.

거부기린 화이팅 | 거부기린