본문 바로가기

카테고리 없음

API 설계 고민: 휴지통 검색 기능

1. 개요

내가 했던 고민을 말하기 전에 개발 중인 앱의 컨셉을 먼저 설명하겠다.

이 앱에는 휴지통 개념이 존재하고 이 휴지통에는 [폴더] 와 [파일] 이 존재할 수 있다.

우리 앱 화면을 캡쳐할 수는 없어서 비슷한 구조인 구글 드라이브 캡쳐를 참고용으로 가져와봤다.

(참고) 구글 드라이브 > 휴지통

 

휴지통에 있는 파일이든 폴더든 더블 클릭하는 순간 "복원 하시겠습니까?" 알럿이 뜬다.

(참고) 구글 드라이브

 

 

 

현재 우리 앱의 휴지통이 동작하는 방식도 구글 드라이브와 비슷하게 아래와 같다.

 

1. 폴더 구조

- a > b > c 형태의 중첩된(Nested) 폴더 구조를 가짐.

 

2. 폴더 삭제

- 상위 폴더 a가 삭제되면 b c를 포함한 모든 하위 폴더가 함께 휴지통으로 이동.

 

3. 복원 동작

- a 폴더를 복원하면, 포함된 모든 하위 폴더(b, c)가 함께 복원됨.

- 개별 폴더(b 또는 c)를 직접 복원할 수는 없음.

- 휴지통에서 특정 폴더를 클릭 시, 복원 알림(Alert)이 뜨므로 휴지통 내에서 자식 폴더로의 진입이 불가함.

 

 

 

2. 고민 사항

이때, 아래 검색 시나리오에서는 어떻게 동작하는게 적합할 지 의문이 들었다.

 

1. 사용자가 휴지통 검색창에 c를 입력하면, c 폴더가 검색 결과에 표시될 것임.

2. 사용자가 검색 결과에서 c 폴더를 클릭했을 때, 아래와 같은 동작 중 어떤 것이 적합할지 고민

 

 옵션 1) 검색 결과에 c가 표시되더라도, 복원은 a 폴더 단위로만 허용.

 즉, c를 클릭했을 때, a 폴더 복원 알럿이 뜨고 상위 폴더(a > b > c)가 함께 복원되게 한다.

(= 휴지통의 현재 컨셉을 유지하는 방향)

 

 옵션 2) c 폴더만 개별 복원 가능하도록 동작 변경.

 검색을 통해 특정 폴더를 바로 복원하려는 사용자 경험을 살리는 것이다..

단, 상위 폴더가 휴지통에 있는 상태라면 루트로 복원시켜줘야 하므로 관련 연관 관계를 다 끊어줘야겠지...

 

 

 

3. 타 서비스 사례 비교

휴지통 내에서 검색 결과로 자식 폴더가 나왔을 때의 복원 동작은 서비스마다 다르게 구현되어 있음.

 

1. Google Drive

- 자식 폴더만 복원하는 것이 불가능

- 검색 결과로 나온 자식 폴더를 클릭하면 상위 폴더를 먼저 복원해야 한다는 알럿이 표시됨

(참고) 구글 드라이브

 

 

 

2. Mac (Finder)

- 휴지통 내에서 자식 폴더로 직접 진입이 가능하며, 자식 폴더만 복원하는 것도 허용함

(참고) Mac Finder

- 검색 결과로 나온 자식 폴더도 동일하게 복원 가능

 

 

 

4. 결론

Mac Finder 와 Google Drive 의 복원 동작은 다르지만 공통점이 하나 있다.

복원 동작이 일관되게 설계되어 있어 어디에서 복원 요청을 하더라도 동일한 결과를 보장한다는 것이다.

이렇게 해야 사용자에게도 혼란을 주지 않을 것이다. 이 원칙을 바탕으로 우리 앱의 복원 동작도 일관되게 구현하였다.