열심개발자 (112.♡.105.38)
2025년 12월 18일 AM 11:02 · 수정됨(14:48)
사내 프로그램 개발에 약간 흥미가 떨어지고 있어서 토이프로젝트로 무엇을 만들어볼까 고민하다가, 결국 제가 직접 필요한 걸 만들기로 했습니다.
현재 두 가지 프로젝트를 진행 중인데, 그중 하나를 빠르게 완성해서 공유해봅니다.
요즘 바이브 코딩이 열풍이다보니 다들
만들게 된 계기
제가 가진 습관 중 하나가 자꾸 수염을 뽑는 습관이었습니다.
예전에 커뮤니티에 그런 분들이 계신가 해서 글을 남긴 적이 있는데, 생각보다 많으셔서 묘한 동지의식을 느꼈었죠.
이 습관이 오래되다 보니 남들이 보기에도 별로 좋지 않고, 결과적으로 턱 하단 부분에 약간 어둡게 착색이 되었습니다.
나무위키나 여러 인터넷 자료들을 찾아보니 장기간의 자극으로 인한 피부 착색일 수 있다고 하더군요.
나무위키에서 찾아보니 '발모벽(Trichotillomania)'이라는 질병으로 등록되어 있고, 근원적인 문제는 강박장애에 속한다고 합니다.
해외 Reddit에도 발모벽 서브레딧이 있는데, 머리카락을 뜯는 분들도 꽤 많이 계신 것 같았습니다.
저도 이제 피부 관리를 해야겠다는 생각이 들었고(좀 늦은 감이 있지만...), 개발자다 보니 노트북으로 일하는데 웹캠이 달려있으니까 - 상시 감시하다가 손이 얼굴에 가면 화면을 못 쓰게 막아버리는 방식으로 습관 개선을 유도하는 프로그램을 만들면 되겠다 싶었습니다.
(사실 이 방식도 임시방편이라, 여러 문서들을 찾아보면서 근본적인 해결 방식을 프로그램에 녹여내보려고 계속 고민 중입니다.)
프로그램 로직
아주 단순합니다:
1. 실행하면 웹캠이 작동하며 얼굴과 손을 인식
2. 설정된 시간(기본 2초) 동안 손이 얼굴 근처에 있으면 감지
3. 전체화면으로 경고 페이지가 뜸
4. 손을 얼굴에서 뗄 때까지 경고가 유지됨
그 외에 통계 데이터를 내부에 저장하여 캘린더에서 하루에 얼굴을 몇 번 만졌는지 보여주는 기능이 들어있습니다.
GPT API나 로컬 LLM 모델을 추가해서 실질적인 행동 개선을 위한 피드백을 제공할까도 생각했지만, 사용자 PC마다 사양도 다르고 GPT API를 사용할 경우 수익성까지 고려해야 할 것 같아서, 1차 버전은 단순 행동 억제를 목표로 구현했습니다.
개발 과정
구현 시간: 어제 아침에 시작해서 밤에 마무리 - 딱 하루 걸렸습니다.
기술 스택: Python + CustomTkinter + MediaPipe
저는 웹 개발이 주력이고 Node.js 생태계를 좋아하는 편이라, Python은 FastAPI로 간단한 외부 API 서버 정도로만 사용해봤었습니다.
Python으로 UI까지 구현하는 건 처음이라 막연한 부분이 있었지만, Claude Code가 사실상 대부분의 작업을 해줬기 때문에 1차 버전을 내놓을 수 있었습니다.
AI 코딩 도구들이 엎치락뒤치락하고 있지만, 제 경험상 아직까지는 Claude Opus 4.5 모델이 가장 좋은 느낌입니다.
개발하면서 어려웠던 점
1. UI 부분
Electron JS에서는 CSS 기반이다 보니 웹의 다양한 코드들을 활용해서 디자인 맞추기가 쉬웠는데, Python UI는 화면 배율과 반응형 디자인 구현이 꽤나 여러 번 시행착오를 거쳤습니다.
아직도 한국어가 아닌 다른 언어 버전에서는(영어, 일본어, 중국어, 러시아어, 스페인어 지원 중) 글자 길이에 따라 UI에 간섭되는 부분이 몇몇 있습니다.
2. 경로에 한국어가 들어가는 경우
과거에도 많은 프로그래밍 문제를 일으켜왔지만, 아직도 문제가 발생하는 걸 보고 좀 놀랐습니다.
노트북 두 대 중 한 대는 미국에서 구입해서 모든 설정이 영어고, 다른 한 대는 윈도우를 한국어로 설치해둬서 교체하며 개발하다 보니 경로에 한국어가 들어있어서 문제가 되는 경우가 있었습니다.
3. 인스톨러 문제
처음에 Claude가 단일 exe 파일로 제안해서 그렇게 개발하다가, 영상 인식 모듈 같은 게 들어가다 보니 설치판으로 전환했습니다.
Electron JS에서는 GitHub Release와 연동한 자동 업데이트 구현이 쉬웠던 것 같은데, Python에서는 Inno Setup이라는 걸 사용했고, 빌드하고 설치판 만드는 데는 성공했지만 Electron JS보단 뭔가 해야 할 게 많은 느낌이었습니다.
웹 개발 환경에서는 백엔드에서 직접 로그를 확인하거나, 사용자 QA를 받아서 개발 환경에서 재현하기가 쉬운데(브라우저라는 공통된 컨테이너에 속하다 보니), 윈도우 프로그램에선 하드웨어 스펙부터 DPI 같은 것들이 전부 다르다 보니 사용자 피드백 받기도 쉽지 않은 느낌이었습니다.
로그를 전송하는 패키지 같은 게 있을 것 같긴 한데, 묘하게 제가 모르는 부분이 있다는 게 좀 찜찜하네요.
이후에는 아래 내용을 구현해보려고합니다. 확실히 Claude가 있어서 그런가 개발난이도가 엄청 낮아졌습니다. MCP까지 같이 쓰면 효과가.. 엄청난거같구요. 특히 Playwright MCP와 supabase mcp 경험이 최고였습니다..
- UI를 자유자재로 다루기 위해 Electron JS로 전환하고 백엔드로 Python 사용 검토 중
- 근원적인 문제 해결을 위한 명상 기능 추가 고려
- 익명 기반 짧은 메시지 공유 기능 고려
결국 일상 속에서의 강박 부분을 줄여야 해결될 문제라고 하더라고요.
(참고로 또 다른 프로젝트인 습관 교정 프로그램은 실제 습관을 개선시켜주는 부분에 대해 아이디어를 프로그램에 어떻게 녹여낼지 고민 중이라 개발보다 기획 단계에서 지연되고 있습니다. 이건 Electron JS + Supabase로 구현 중입니다.)
스크린샷





GitHub
https://github.com/writingdeveloper/dont-touch
제가 직접 사용하기 위해 만들었기 때문에 아주 대략적인 QA만 진행했고, 노트북 두 대에서는 잘 작동했습니다.
완성도는 잘 모르겠지만, 혹시 필요하신 분들 중에서 추가로 필요한 기능이 있으시면 말씀해주시면 시간 나는 대로 틈틈이 구현해보겠습니다.
댓글 (1)
- 바
바닿
25.12.18 · 118.♡.88.199
자주 조는 학생들을 위해 학습앱에 활용해볼 수도 있겠습니다.
댓글을 작성하려면 이 필요합니다.