앱 MVP 검색 기능: 입력·결과·0건·취소를 나누는 5가지 기준
앱 MVP 검색은 검색창을 넣는 일로 끝나지 않습니다. 사용자가 무엇을 찾을 수 있는지, 입력 중에는 무엇을 보여줄지, 결과가 없거나 요청이 실패하면 어느 화면으로 돌아갈지를 먼저 나눠야 합니다. 이번 글은 입력·제출·결과·0건·취소를 각각 다른 상태로 기록하는 방법을 정리합니다.
검색 기능을 넣기 전에 답할 첫 질문
검색이 필요한 이유부터 한 문장으로 고정하세요. 예를 들어 상품을 찾는지, 저장한 기록을 찾는지, 사람이나 장소를 찾는지에 따라 결과 한 줄에 보여줄 정보와 선택 뒤 이동할 화면이 달라집니다. “검색”이라는 이름만 같다고 같은 MVP 기능은 아닙니다.
Android 공식 문서는 앱 바의 SearchView를 항상 보이거나, 아이콘을 눌렀을 때 펼쳐지는 형태로 구성할 수 있다고 안내합니다. 또한 검색 구성에는 사용자에게 입력 방식을 알려 주는 힌트를 추가하는 방식을 권장합니다. 이 글에서는 이 기능을 구현 순서가 아니라 제품 상태를 설계하는 출발점으로 사용합니다.
입력·제출·결과·0건·취소를 한 상태로 섞지 마세요
상태 | 사용자에게 보여줄 것 | 팀이 확인할 것 |
|---|---|---|
검색 전 | 검색 대상이 드러나는 힌트와 시작점 | 무엇을 검색하는 화면인지 |
입력 중 | 현재 입력값과 지우기·취소 동작 | 언제 실제 조회를 시작하는지 |
제출·조회 중 | 결과가 아직 준비되지 않았다는 진행 상태 | 중복 요청과 이전 결과 처리 |
결과 있음 | 결과 수가 아닌, 다음 선택에 필요한 정보 | 선택 뒤 이동·복귀 경로 |
결과 없음·실패 | 다른 검색어, 초기화, 재시도 중 맞는 다음 행동 | 0건과 통신·처리 실패를 구분하는지 |
특히 결과가 없다는 것은 기능이 고장 났다는 뜻이 아닙니다. 반대로 요청이 실패한 것을 “결과 없음”으로 보이면 사용자는 다시 같은 단어를 입력하게 됩니다. 서버 응답, 연결 상태, 권한 문제처럼 확인이 필요한 실패는 0건 결과와 다른 안내와 기록으로 남기는 편이 안전합니다.
검색어를 받았다는 사실과 검색 결과를 보여줬다는 사실은 다릅니다
Android 문서는 사용자가 검색어를 제출하면 ACTION_SEARCH 인텐트로 검색 활동을 시작하고, 그 활동이 쿼리를 받아 데이터 집합에서 검색하도록 설명합니다. 즉 검색창은 입력을 받는 표면이고, 결과 화면은 그 입력을 처리하는 별도 책임입니다. MVP 기획에서도 이 둘을 한 완료 이벤트로 묶지 않는 것이 좋습니다.
아래처럼 최소 기록을 나누면 개발·QA·고객지원이 같은 질문을 보게 됩니다.
입력값은 비어 있었는가, 제출 가능한 형식이었는가
사용자가 제출했는가, 입력 중 추천만 본 것인가
조회 요청은 시작됐는가, 취소 또는 교체됐는가
결과는 있었는가, 0건이었는가, 실패했는가
결과를 선택했다면 어느 화면으로 갔고 뒤로 돌아왔을 때 검색 상태는 무엇인가
이 기록은 검색 순위나 추천 품질을 보장하지 않습니다. 초기 MVP에서는 사용자가 실제로 찾을 수 있는 대상과 실패 뒤 빠져나갈 경로를 검수하기 위한 최소 단위입니다.
결과 화면은 ‘목록’이 아니라 다음 행동의 경계입니다
결과 목록에 제목만 늘어놓기 전에, 사용자가 고르는 이유를 먼저 적으세요. 동일하거나 비슷한 이름이 나올 수 있다면 구분 정보가 필요한지, 결과를 탭하면 상세로 가는지 바로 행동이 실행되는지, 뒤로 가면 원래 검색어를 유지하는지를 정합니다. 이 판단은 목록 필터·정렬 기능을 넣을지와도 연결됩니다.
검색 범위가 아직 작다면 자동완성, 인기 검색어, 개인화 추천을 한 번에 넣을 필요는 없습니다. 각 기능은 별도의 데이터 기준과 실패 상태를 만듭니다. 먼저 한 가지 검색 대상과 한 가지 결과 선택 흐름을 실제 기기에서 확인한 뒤, 다음 기능을 추가할지 판단하세요.
출시 전에는 다섯 장면을 같은 검색어로 확인하세요
시작: 처음 화면에서 검색 대상과 입력 힌트를 이해할 수 있는지 확인합니다.
입력: 짧은 검색어, 공백만 있는 입력, 지우기, 취소를 각각 확인합니다.
성공: 결과가 있는 검색어를 제출하고 선택·상세·뒤로가기를 확인합니다.
0건: 결과가 없는 검색어에서 다른 입력이나 초기화로 이어지는지 확인합니다.
실패: 조회를 완료하지 못한 경우에 결과 0건과 다른 안내·재시도 경로가 보이는지 확인합니다.
Android의 검색 구성 문서는 검색어를 받은 뒤 ViewModel 등 다른 계층으로 전달해 결과를 가져오는 구조를 예시로 듭니다. 실제 구현 방식은 팀의 기술 선택에 따라 달라질 수 있지만, 화면에서 확인할 상태와 결과 책임을 분리해 두면 변경 범위를 더 쉽게 대화할 수 있습니다.
기존 MVP 글과 함께 볼 지점
검색 요청이 진행되는 동안의 표현은 앱 MVP 로딩·진행 상태 글과 이어집니다. 연결이 불안정할 때의 안내는 앱 MVP 네트워크 오류 안내에서, 사용자가 특정 결과 링크로 들어온 뒤의 분기는 앱 MVP 딥링크·유니버설 링크에서 함께 확인할 수 있습니다.
검색 화면을 먼저 화려하게 만들기보다, 한 검색어가 입력·제출·결과·0건·취소 중 어디에 있는지 팀이 같은 언어로 설명할 수 있게 만드세요. 그 다음에만 자동완성, 필터, 정렬, 추천처럼 범위를 늘리는 판단이 가능합니다.
자주 묻는 질문
검색 결과가 0건이면 오류 메시지를 보여줘야 하나요?
아닙니다. 0건은 검색이 정상 처리됐지만 일치하는 대상이 없을 수 있는 상태입니다. 요청 자체가 실패했는지와 구분해, 다른 검색어 입력·초기화·재시도 중 맞는 다음 행동을 안내하세요.
입력할 때마다 바로 검색해야 하나요?
반드시 그렇지는 않습니다. 입력 중 추천을 보일지, 제출 뒤에만 조회할지는 데이터 규모와 사용 목적에 따라 제품팀이 정할 범위입니다. 어느 방식이든 입력 중 상태와 제출된 검색어를 구분해 검수하는 것이 먼저입니다.
검색 결과 화면은 별도 화면이어야 하나요?
Android 공식 문서는 검색어 제출 뒤 검색 활동이 쿼리를 받아 결과를 처리하는 구성을 설명합니다. 실제 화면 구조는 구현 선택에 따라 달라질 수 있으나, 검색 입력과 결과 처리의 책임은 분리해 기록하는 편이 좋습니다.
자동완성과 필터도 첫 MVP에 넣어야 하나요?
필수는 아닙니다. 자동완성·필터·정렬은 각각 다른 데이터 기준과 실패 상태를 만듭니다. 먼저 한 검색 대상과 결과 선택 흐름이 실제 기기에서 확인되는지 본 뒤 추가 범위를 결정하세요.
공식 출처
Android Developers · Set up the search interface — 2026-09-18 확인