Development/시간순이

시간순이 - 기획편

MildChoco 2026. 6. 14. 11:21

시작은 사진 폴더

여행을 갔다 옵니다. 카메라 앱으로 찍기도 하고, 필터 앱으로 찍기도 하고, 친구가 보내준 사진도 받아 저장합니다. 집에 와서 그 사진들을 한 폴더에 모읍니다.

 

그러면 어떻게 되느냐 — 시간순으로 정렬되지 않습니다. 앱마다 파일명 형식이 다르거든요. IMG_20260517_143022.jpg, 20260517-143022_001.jpg, KakaoTalk_20260517_143022.jpg, Camera_Roll_4421.jpg. 파일 탐색기는 그저 이름순으로 정렬할 뿐이라, 같은 여행이라도 사진들이 뒤죽박죽 섞여 있습니다. 처음부터 끝까지 시간순으로 다시 훑어보고 싶은데, 그게 안 됩니다.

 

이건 제가 매번 겪던 짜증이었습니다. 그래서 늘 생각만 있었던 사이드 프로젝트로 이 문제를 해결할 툴을 만들어보자는 생각이 들었습니다.

 

해결책은 EXIF

사진 파일 안에는 EXIF라는 메타데이터가 있고, 그 안에 촬영 시각(DateTimeOriginal)이 박혀 있습니다. 카메라로 찍은 사진이라면 어떤 앱으로 찍었든 그 값은 같은 형식이에요. 그러니까 폴더 안의 사진들을 전부 훑어서 EXIF의 촬영 시각을 읽고, 그 값으로 파일 이름을 YYYYMMDD_HHMMSS 같은 형식으로 일괄 변경해버리면 — 그 다음부터 파일 탐색기는 알아서 시간순으로 정렬해줍니다. 단순한 문제, 단순한 해결.

 

비슷한 도구가 아예 없는 건 아닙니다. Advanced Renamer 같은 강력한 일괄 리네이머가 EXIF 기반 리네이밍을 지원하죠. 하지만 그런 툴은 옵션이 너무 많고 UI가 무섭습니다. 사진 한 번 정리하자고 매뉴얼을 읽고 싶지는 않거든요.

그래서 만들 툴의 콘셉트는 분명해졌습니다. 폴더를 끌어넣고 버튼 한 번 누르면 끝. 옵션은 최소한으로.

 

이름은 시간순이

이름 짓는 데 의외로 오래 걸렸습니다. 결국 시간순(時間順)에 친근한 '-이'를 붙여 시간순이. 이름에 기능이 그대로 들어 있고, '-이' 덕에 살짝 캐릭터 같은 느낌도 나서 마음에 들었습니다.

 

안전이 가장 중요하다

남의 사진 이름을 바꾼다는 건 — 잘못 누르면 아끼는 여행 사진들의 이름이 다 망가질 수 있다는 뜻입니다. 그래서 v1부터 이건 무조건 들어가야 합니다.

  • 적용 전 미리보기 (어떤 이름으로 바뀔지 먼저 보여주기)
  • "접두사 지정" 옵션
  • 되돌리기(undo)
  • 원본 덮어쓰기 금지
  • "원본 폴더는 두고 복사본을 새 폴더에 정리" 옵션

기능보다 신뢰가 먼저입니다. 한 번이라도 사진을 망가뜨리면 그 사용자는 두 번 다시 안 씁니다.

 

v1의 범위

  • 대상은 사진. JPEG, 그리고 아이폰의 HEIC까지. 여행 폴더의 대부분을 덮습니다.
  • 동영상은 v1 제외. 동영상엔 EXIF가 없고 메타데이터 체계가 따로예요. 우선 v1에서는 동영상은 작업하지 않습니다.
  • 같은 초에 찍힌 사진들. 연사로 찍으면 같은 초에 여러 장이 나옵니다. _001, _002 접미사로 풀 겁니다.
  • 기기 간 시계 오차 보정은 안 합니다. EXIF를 기록한 기기의 시간이 동기화 되어있지 않으면 EXIF가 정확해도 순서는 섞입니다. 다만 v1에서는 고려하지 않습니다.

 

솔직한 한계

가장 큰 한계는 카톡으로 받은 사진입니다. 카톡은 사진을 보낼 때 재압축을 하면서 EXIF를 거의 다 날려버려요(원본을 "파일"로 보내면 살아남긴 합니다만). 그래서 카톡으로 받은 사진은 정확한 촬영 시각을 알 방법이 없습니다.

스크린샷, 편집 앱이 다시 저장한 사진, 웹에서 내려받은 이미지도 촬용 시각이 없을 가능성이 큽니다.

v1에서는 이런 사진들을 "시간 정보 없음" 그룹으로 따로 빼두는 식으로 처리하려고 합니다.

 

그리고 가장 솔직한 부분

저는 윈도우 앱 개발, 데이터베이스, 프론트엔드, 이런거 거의 모릅니다.

그래서 이번 프로젝트는 클로드 코드로 진행합니다. 제가 기획과 판단은 하지만 실제 코드 작성은 AI에게 시키면서, 모르는 영역을 디렉팅으로 뚫고 가보는 실험입니다. 잘 풀릴 수도, 막힐 수도 있어요. 그 과정을 매주 솔직하게 기록할 계획입니다.

다음 글은 프레임워크 선택입니다.