글과 파일이 많아지면 메뉴를 더 만들고 싶어진다. 그러나 제목을 많이 펼치는 것만으로 필요한 자료를 찾게 되는 것은 아니다. 나는 도구형 사이트의 글 목록과 자료 제공형 사이트의 소스를 다시 보면서 자료의 주제, 이용 대상, 필요한 형식을 서로 다른 선택 기준으로 다루는 방법을 정리했다.
이 홈페이지에서도 작업 기록과 구현 모듈이 계속 늘어난다. 모든 프로젝트 이름을 메뉴에 올리는 대신 독자가 해결하려는 문제를 통해 들어올 수 있어야 한다. 실제 소스가 어떤 항목을 분류하고 검색하는지 확인하고, 그 범위에서 독자가 기대할 수 있는 기능을 설명하려 한다.
주제와 이용 조건은 같은 분류가 아니다
확인한 도구형 글 목록에는 수익, 정비, 자격, 세금처럼 업무 주제를 구분하는 분류가 있다. 자료실에는 대상, 연령, 유형을 조합하는 필터가 있다. 한쪽은 지금 무슨 문제를 다루는 글인지 묻고, 다른 쪽은 누가 어떤 자료를 쓰려는지 좁힌다. 단순히 항목 수를 맞추어 서로 바꿔 넣을 구조가 아니다.
새 자료를 분류할 때는 서로 배타적인 주제와 동시에 가질 수 있는 조건을 나누어 본다. 한 파일이 여러 대상에게 적합할 수 있다면 한 대상의 메뉴 안에만 숨기지 않는다. 실제 자료실 스키마에서 대상과 연령은 배열이고 유형은 정해진 값이다. 화면의 필터 모양을 만들기 전에 자료가 어떤 값을 가질 수 있는지 정해야 한다.
검색창이 실제로 읽는 항목을 확인한다
도구형 글 검색은 제목과 설명, 키워드를 정리한 문자열에서 검색어를 확인한다. 입력을 유니코드 정규화하고 단어로 나누어 각 단어가 들어 있는지 비교한다. 이 코드만으로 긴 글의 모든 본문이나 첨부 문서 안쪽까지 검색한다고 설명할 수는 없다. 검색이라는 이름 아래 실제 범위를 분명히 해야 한다.
자료실의 카드 검색 데이터는 제목과 설명으로 만든다. 검색어가 파일 속 문장에만 있고 카드 설명에는 없으면 찾지 못할 수 있다. 이런 상황에서는 필요한 표현을 설명과 키워드에 보완할지, 별도 본문 검색을 설계할지 선택해야 한다. 검색창의 외형보다 자료와 검색 데이터의 연결이 먼저다.
조건을 함께 고를 때는 좁혀지는 이유를 보인다
자료실의 코드는 대상, 연령, 유형의 선택 조건을 모두 만족하는 카드를 보여준다. 전체를 선택한 조건은 제한을 걸지 않는다. 제목과 설명의 검색 조건도 함께 적용한다. 조건이 여러 개 겹치면 결과가 없는 것이 정상일 수 있다. 자료가 사라졌다고 느끼지 않도록 선택 상태와 결과 수, 빈 상태 안내가 필요하다.
현재 소스에는 선택 상태를 버튼에 표시하고 결과 수를 갱신하며 조건에 맞는 자료가 없을 때 필터를 풀어 보라는 안내가 있다. 이는 구현의 존재를 확인한 것이다. 모든 독자가 안내를 잘 이해했다는 조사 결과는 없다. 적용할 때는 무엇이 선택됐고 어느 조건을 해제하면 다시 넓어지는지 실제 화면에서 확인해야 한다.
찾던 조건을 목록 이동 뒤에도 이어준다
도구형 홈의 정보 구간은 모든 글을 한꺼번에 보여주지 않고 목록으로 이어진다. 확인한 코드에서는 결과가 일부만 표시되는 상황에 선택한 분류와 검색어를 전체 목록 주소의 조건으로 전달한다. 전체 목록도 주소에서 조건을 읽고 잘못된 분류 값은 허용된 목록과 대조한다.
주소에 조건을 남기면 다른 사람이 같은 탐색 상태를 다시 열 수 있는 길을 만들 수 있다. 하지만 모든 필터가 언제나 주소에 저장된다고 넓게 설명하지 않는다. 이 자료실의 필터는 화면 안의 상태로 관리된다. 두 구현을 구별하고 공유·복귀가 필요한 조건인지에 따라 추가 설계를 결정한다.
파일의 유무와 형식도 선택 정보다
자료 카드에는 형식과 사용 구분을 표시하고 파일이 없으면 다운로드 연결 대신 파일이 없다는 상태를 보여준다. 자료를 찾아낸 뒤에야 사용 가능한지 알게 하는 것보다 목록에서 확인할 수 있게 하는 구조다. 제목을 찾는 일과 실제로 이용할 자료가 준비된 일은 서로 다르다.
이 홈페이지의 모듈도 같은 질문을 받는다. 코드만 있는지, 실행 예시가 있는지, 추가 연결이나 검토가 필요한지 설명해야 한다. 화면을 좋아 보이게 하기 위해 모든 카드에 같은 완료 표시를 넣지 않는다. 콘텐츠의 상태를 실제 자료와 구현 조건에 연결하는 것이 분류를 믿고 사용할 수 있게 하는 기준이다.
분류를 늘리기 전에 실제 자료 몇 개를 넣어본다
분류 이름이 그럴듯해도 실제 자료가 어디에 들어가는지 불분명할 수 있다. 나는 분류를 계획할 때 대표 자료를 배치해 보고 같은 자료가 여러 메뉴를 떠도는지, 중요한 항목이 기타에 몰리는지, 이름이 비슷해 구분하기 어려운지 검토하는 방식을 쓴다. 이는 앞으로 적용할 수 있는 검토 방법이며 이번에 사용자 검색 기록을 분석한 결과는 아니다.
자료가 자주 늘어나는 곳에서는 내부 식별값과 화면에 보이는 이름도 구별할 필요가 있다. 이름을 다듬을 때 연결을 깨뜨리지 않고, 기존 자료가 허용된 값에 들어가는지 검사할 수 있어야 한다. 분류를 늘리는 일은 메뉴 문구 하나를 더하는 일이 아니라 기존 자료와 탐색 조건을 함께 바꾸는 일이다.
분류는 읽는 사람의 질문으로 유지한다
이번 글은 현재 글 검색과 자료 필터의 코드, 자료 스키마와 카드 표현을 확인해 작성했다. 원래 사이트의 업체명과 주소, 자료 자체를 여기로 옮기지 않았다. 새 브라우저에서 검색과 키보드 사용을 다시 검수하거나 사용자 만족도를 측정하지도 않았다. 코드에서 확인한 조건과 앞으로 필요한 실제 사용 검토를 분리해 둔다.
내가 남기고 싶은 분류는 만든 사람의 폴더 목록보다 읽는 사람이 가진 질문에 가까운 것이다. 구현이 늘어날 때도 무엇을 찾고 어떤 조건으로 고르는지 살피며 유지한다. 제목을 계속 추가하는 것과 필요한 것을 계속 찾을 수 있게 만드는 것은 함께 해야 할 다른 작업이다.