전체 프로젝트로 돌아가기

LETSPETS / PROJECT 02

모아

스크린샷 속 영감을 기기 안에서 정리하는 iPhone 앱

심사가 끝나면 이 자리에 App Store 링크를 답니다. 개인정보 처리 방침은 이 사이트의 처리방침 페이지에서 볼 수 있습니다.

취향이 쌓이는 폴더와 최근 모아둔 순간이 함께 보이는 모아보기 화면
최신 버전1.1
심사 상태대기 중
플랫폼iPhone
카테고리12

저장만 해두고 다시 찾지 못하는 스크린샷을 화면에 담긴 내용으로 묶어 줍니다. 사진 보관함에서 스크린샷만 골라 오고, 기기에 들어 있는 이미지 모델로 무엇이 찍힌 화면인지 판단해 내용별 폴더와 태그를 붙입니다. 이미지도 인식한 글자도 서버로 보내지 않습니다. 계정도 인터넷 연결도 필요 없고, 사진 앱의 원본과 앨범은 읽기만 합니다. SwiftUI로 만들었고 외부 Swift 패키지를 하나도 쓰지 않습니다.

01

스크린샷만

PhotoKit에서 이미지이면서 스크린샷 속성을 가진 항목만 가져온다. 일반 사진, Live Photo, 화면 녹화는 들어오지 않는다. 가져오기·분석·썸네일 경계에서 같은 검사를 다시 한다.

02

기기 안에서 분석

약 40MB의 TinyCLIP 이미지 모델을 앱에 넣어 두고 화면의 주요 대상과 배경을 직접 점수화한다. 이미지, 인식한 글자, 태그 어느 것도 네트워크로 나가지 않는다. 사진 요청의 네트워크 접근도 꺼 두었다.

03

글자가 아니라 내용으로

폴더와 태그는 이미지 모델이 본 것으로 정한다. 화면 속 글자는 검색에만 쓰고 분류 점수에는 넣지 않는다. 판단이 약하거나 후보가 비슷하면 미분류로 남긴다.

04

찾기

인식한 문장, 태그, 추출한 키워드와 링크로 검색한다. 즐겨찾기와 직접 만든 폴더, 확인이 필요한 목록을 따로 볼 수 있다. 같은 스크린샷이 여러 폴더에 보여도 원본은 복제하지 않는다.

05

고친 내용은 남는다

분류·태그·폴더·즐겨찾기를 직접 고치면 다시 분석해도 그대로 유지한다. 사진 앱의 원본과 앨범은 어떤 경로로도 바꾸지 않는다.

06

나가 있어도 정리

iOS 26에서는 정리를 시작할 때 시스템에 실행 시간을 요청해, 허용되면 앱을 나가도 남은 스크린샷을 계속 처리한다. 중지하거나 시간이 끊기면 그때까지 저장한 결과는 보존한다.

MAKING NOTES

The little details.

글자를 믿으면 엉뚱한 폴더로 간다

화면에 flower라는 단어가 있다고 자연 폴더로 보내면 쇼핑몰 화면이 전부 자연이 된다. 분류는 시각 라벨이 결정하고 OCR 결과는 검색으로만 흘린다. 문서나 스크린샷 같은 매체 라벨도 주제 판단에서 뺀다.

Codable은 없는 키를 채워 주지 않는다

저장 구조체에 기본값을 써 두어도 이전 버전 JSON에 그 키가 없으면 디코딩 자체가 실패한다. 새로 추가하는 저장 필드는 전부 Optional로 넣고, 출시 빌드가 쓴 JSON 원본을 테스트에 고정해 두었다.

늦게 도착한 분석이 최신 편집을 덮었다

저장을 전담하는 actor가 revision 번호를 함께 기록한다. 번호가 밀린 결과는 버려서, 사용자가 방금 고친 태그를 몇 초 전에 시작한 분석이 되돌리지 못하게 했다.

스크롤 중에는 목록을 흔들지 않는다

관성 이동 중에 목록이 다시 그려지면 누르려던 카드가 사라진다. 이동이 끝날 때까지 표시 목록을 고정하고 새 추론 시작만 미룬다. 이미 끝난 분석의 저장은 그대로 진행한다.

사용자가 멈춘 정리는 실패가 아니다

중지했거나 iCloud에만 있어 읽지 못한 장이 남아도 시스템 작업은 완료로 끝낸다. 실패로 보고하면 다음 요청의 우선순위가 깎인다. 읽지 못한 장수는 앱 안내 문구로 알린다.

스크린샷은 테스트가 뽑는다

스토어용 6장은 UI 테스트를 시뮬레이터에서 돌려 만든다. 상태바를 9:41로 고정하고 샘플 데이터를 띄운 뒤 1320×2868로 내보낸다. 이 페이지의 화면들도 같은 경로에서 나왔다.

사용 전에 확인해 주세요

  • App Store 심사 대기 중입니다. 1.1 버전과 스크린샷·메타데이터를 한국어와 영어 두 언어로 올려 둔 상태라 아직 받을 수 있는 링크가 없습니다.
  • iPhone 전용이며 iOS 18 이상이 필요합니다. iPad는 지원하지 않습니다.
  • 사진 접근 권한이 필요합니다. PhotoKit의 권한 이름은 읽기 및 쓰기지만 앱은 보관함을 바꾸는 API를 호출하지 않습니다.
  • iCloud에만 있고 기기에 내려받지 않은 원본은 정리하지 못합니다. 사진을 서버로 보내지 않으려고 이미지 요청의 네트워크 접근을 꺼 두었기 때문입니다.
  • Apple Intelligence는 보완일 뿐입니다. 꺼져 있거나 지원하지 않는 기기에서도 같은 이미지 모델로 분류가 동작합니다.
  • 저장소가 비공개라 소스 코드 링크를 제공하지 않습니다.
NEXT LITTLE THING지뢰찾기:구름