설명보따리

종이 설명서는 정작 필요한 순간에 서랍에서 안 나온다. 제품 단위로 찍어 두고 그 순간에 꺼내 보는 iPhone 앱을 만들었다.

개인 · 기획 및 구현26.07 –비공개 시스템 · 소스 미공개

Swift · SwiftUI · SwiftData · Vision · Core Image

Problem

종이 제품설명서는 필요할 때 절대 안 나온다. 에러 코드가 떴을 때, 필터를 언제 갈아야 하는지 확인할 때, 보증 기간을 따질 때 — 정작 그 순간에 서랍 어디에 있는지 모른다. 사진으로 찍어 두는 건 이미 다들 한다. 그런데 사진첩에 넣으면 여행 사진 사이에 섞여서 결국 못 찾는다. 설명서는 “언제 찍었나”가 아니라 “어느 제품 것인가”로 찾게 되는데, 사진첩은 그 축으로 정리되지 않는다. 여러 장짜리 설명서는 더 어렵다. 열두 장을 찍어 두면 그게 한 문서라는 걸 아무 데도 기록하지 못한다. 순서도 금방 뒤섞인다.

Decision

  1. 글자를 읽어 검색하는 기능을 넣지 않았다. 개인이 가진 설명서는 많아야 수십 개다. 그 규모에서는 검색창보다 폴더와 즐겨찾기로 훑는 쪽이 빠르다. 글자 인식은 만들기도 어렵고 틀리면 못 찾는데, 안 넣으면 틀릴 일 자체가 없다.
  2. 셔터를 자동으로 누르려던 걸 버리고 사람이 직접 누르게 했다. 처음에는 문서 테두리를 인식하면 알아서 찍는 쪽이 편할 거라 보고 그렇게 만들었는데, 실제 기기에서 써 보니 아니었다. 손이 흔들리는 중에 찍히고, 다시 찍고 싶은데 이미 넘어가 있었다. 실기기에서 반증돼 폐기한 결정이다.
  3. 문서 테두리를 못 찾으면 저장을 아예 거부하고 다시 찍게 한다. 일단 저장해 두고 나중에 정리하게 두면, 못 쓰는 페이지가 조용히 쌓이다가 정작 급할 때 발견된다. 찍는 순간이 고치기 가장 싼 시점이다.
  4. 지우는 규칙을 대상마다 다르게 뒀다. 제품을 지우면 그 안의 문서와 페이지도 같이 사라지지만, 폴더를 지우면 안에 있던 제품은 “분류 없음”으로 남는다. 폴더는 정리용 껍데기이지 물건이 아니라서, 껍데기를 치웠다고 물건까지 없어지면 안 된다.
  5. 첫 버전의 경계를 일부러 좁게 잡았다. 회원가입, 클라우드 동기화, 가족 공유를 전부 뺐다. 넣으면 계정과 서버가 따라오고, 그때부터는 서랍 속 설명서를 꺼내 주는 일보다 그 뒷단을 돌보는 일이 커진다. 전부 기기 안에만 저장한다.

Result

첫 버전에서 뺀 기능
4가지
회원가입, 클라우드 동기화, 가족 공유, 글자 인식 검색.
가져다 쓴 남의 코드
0개
카메라, 문서 테두리 인식, 사진 보정, 저장까지 전부 애플이 기본으로 주는 것만 썼다.
지운 것의 보관 기간
30일
지워도 바로 사라지지 않고 최근 삭제함에 남는다.

촬영이 이 앱에서 제일 공들인 부분이다. 카메라를 비추는 동안 화면 안에서 종이의 네 모서리를 찾아 표시하고, 찍고 나면 비스듬히 찍힌 것을 반듯하게 펴고 밝기를 고른다. 테두리 표시가 매 순간 튀지 않도록 여러 장면에서 계속 잡힌 후보만 보여 준다. 잠깐 스쳐 잡힌 것까지 표시하면 화면이 떨려서 오히려 찍기 어려워진다.

여러 장짜리 설명서는 연속으로 찍은 다음 한 번에 검수하고 한 문서로 저장한다. 보는 화면에서는 좌우로 넘기고 손가락으로 확대할 수 있고, 나중에 페이지를 더하거나 잘못 찍힌 장만 바꿔 끼울 수 있다. 열두 장을 다시 찍어야 하는 상황을 만들지 않는 것이 목표였다.

사진은 앱이 직접 파일로 관리하지 않는다. 큰 이미지를 따로 보관하는 일은 저장 장치에 맡기고 앱은 그런 게 있는 줄도 모르게 뒀다. 파일 경로를 앱이 들고 있기 시작하면 옮기고 지우고 복구하는 규칙을 전부 직접 만들어야 하는데, 그건 설명서를 꺼내 주는 일과 아무 상관이 없다.

지금은 실제 기기에 설치해 쓰는 데까지 왔고, 테스트 배포에서 막힌 지점을 문서로 적어 두고 푸는 중이다. 무엇이 막혔는지 적어 두는 편이 다음에 같은 자리에서 다시 헤매지 않는 유일한 방법이었다.