RipTape — 사진 속 글자를 찢어 붙이는 콜라주 앱
사진에서 글자와 모양을 손가락으로 찢어내 배경 위에 붙이는 Android 앱. 계정도 서버도 AI도 없이 기기 안에서만 동작합니다.

잡지에서 글자를 오려 붙인 콜라주는 오래된 표현 방식이지만, 휴대폰으로 하려면 사진 편집 앱에서 지우개로 배경을 지우고 레이어를 쌓는 긴 과정을 거쳐야 합니다. 결과물은 대개 종이가 아니라 스티커처럼 보입니다. RipTape은 그 과정을 손가락 한 번으로 줄였습니다. 사진 위에 원하는 모양을 따라 그리면 그 경로가 '찢긴 경로'로 변환되어 사진에서 뜯겨 나옵니다. 이때 글자 주변의 벽이나 하늘 한 조각이 같이 딸려 오는데, 이것을 제거해야 할 결함이 아니라 지켜야 할 특성으로 정의한 것이 이 제품의 핵심 결정입니다. 실제 종이를 가위로 오릴 때 윤곽선을 따라 정확히 오리는 사람은 없고, 그 딸려 온 종이가 콜라주를 콜라주로 보이게 하기 때문입니다. 덕분에 배경 제거 모델이 필요 없어졌고, 앱은 추론 서버도 인터넷 연결도 없이 완전히 오프라인으로 동작합니다. 회원가입과 클라우드 동기화도 없습니다. 사진과 조각과 완성한 콜라주는 전부 기기 안에만 저장되며, 기기를 떠나는 사본은 사용자가 직접 만든 백업 파일뿐입니다.
- 손가락 올가미로 찢기 — 사용자가 그린 경로를 찢긴 종이 경로로 변환해 사진에서 오려내고, 찢긴 단면에 종이 속살(밝은 섬유 띠)까지 그려 넣음. 글자든 임의의 모양이든 같은 방식
- 컬렉션 — 찢어낸 조각을 글자별로 묶고, 같은 글자가 여러 장이면 실제 종이 더미처럼 겹쳐 쌓아 보여줌. 모양 조각에는 태그를 달아 검색
- 문구 만들기 — 낱글자를 늘어놓아 단어를 조립하고, 그 결과를 다시 하나의 재료(투명 PNG)로 사용
- 스튜디오 — 배경(단색·종이 질감·인쇄 무늬·내 사진) 위에 조각을 얹고 이동·회전·뒤집기·겹치기. 1:1 · 4:5 · 9:16 비율로 내보내기
- Pro 단건 결제 — 잠긴 재료도 캔버스에 적용해 본 뒤 결정하게 하고, 내보내기 시점에 '무료 재료로 저장' 선택지를 항상 남겨 작업물을 인질로 잡지 않음
- 사진까지 포함한 zip 백업·복원, 한국어·영어 지원
찢김의 절차적 생성 — 매끈한 경로에 세 가지 주파수(손이 지나간 큰 굴곡, 섬유가 뜯긴 미세 톱니, 낮은 확률의 깊은 스파이크)를 겹쳐 찢긴 윤곽을 만든다. 시드 기반 결정적 의사 난수를 써서 같은 입력이면 항상 같은 모양이 나오므로 골든 테스트로 고정할 수 있고, 다시 그려도 모양이 튀지 않는다
찢긴 단면 표현 — 캔버스가 이미 윤곽으로 클립된 상태에서 테두리를 따라 선을 그으면 안쪽 절반만 남는다는 성질을 이용해 흰 단면을 그린다. 이때 띠는 윤곽과 다른 경로로 따로 찢어, 두 경로의 요철 차이가 만드는 불규칙한 폭이 균일한 테두리선이 아닌 뜯긴 섬유로 읽히게 했다
로컬 퍼스트 저장 — sqflite 스키마 v4를 운용하며 이미지 원본은 파일시스템에 두고 DB에는 상대 경로만 보관해 백업·복원 시 경로가 깨지지 않게 했다. 백업은 형식 버전(v2)을 파일에 박아 상위 버전 파일을 안전하게 거부
썸네일을 파생 데이터로만 취급 — 목록 렌더링을 위해 320px 사본을 두되 DB에도 백업에도 넣지 않는다(장당 디코딩 7.8ms → 1.1ms 실측). 지워져도 원본에서 다시 만들면 되므로 모델·마이그레이션·백업 어느 것도 이 최적화 때문에 복잡해지지 않는다
결제 계층의 격리 — 스토어 SDK를 서비스 클래스 하나에 가두어 테스트에서 가짜 구현으로 갈아끼울 수 있게 했다. 서버 없이 영수증을 검증하지 않는 한계는 문서에 명시하고 수용 — 검증 서버를 두는 순간 '수집 없음'이라는 더 큰 자산을 잃기 때문. 프로모션 코드 사용자와 재설치 구매자를 위해 앱 시작 시 조용한 복원을 시도
디자인 시스템을 테스트로 강제 — 머티리얼 기본 아이콘·리플·NavigationBar 사용 금지와 반경·간격 토큰 준수를 검사하는 테스트를 두어, 화면이 늘어나도 아날로그 종이 질감의 일관성이 코드 리뷰가 아닌 CI에서 지켜지도록 했다
브랜드 자산과 스토어 스크린샷의 코드 생성 — Play 피처 그래픽을 이미지 편집기가 아니라 앱과 같은 위젯·서체로 렌더해 뽑고, 스토어 스크린샷도 목업이 아니라 실제 앱 화면을 테스트 환경에서 띄워 촬영한다. UI가 바뀌면 스토어 자산이 자동으로 따라오므로 시간이 지나도 둘이 어긋나지 않는다
총 217개 테스트 운용. 출시 전 점검에서 여러 테스트 파일이 같은 SQLite 경로를 공유해 간헐적으로 잠금 충돌을 일으키던 문제를 파일별 샌드박스 경로 분리로 해결