데이터를 모으는 것과 데이터를 쓸 수 있게 만드는 것 사이에는 한 단계가 더 있습니다. 표현입니다. 야구 분석 도구를 만들며 최종 산출물을 무엇으로 할지 정해야 했는데, 고객의 답은 명확했습니다. "보면서 분석할 수 있는 리포트 한 장". 엑셀도 대시보드도 아닌 이미지였습니다. 지표 수십 개를 리포트 이미지로 자동 렌더링하며 정리한 설계 원칙들입니다.
왜 리포트 이미지인가
이미지 리포트는 촌스러운 선택처럼 보이지만 개인 사용자의 실사용 관점에서는 강점이 뚜렷합니다.
- 어디서나 열린다: 뷰어도 계정도 필요 없습니다. 휴대폰 사진첩, 메신저, 태블릿 어디서든 같은 모습입니다.
- 박제된다: 경기 전 시점의 지표가 그대로 고정됩니다. 대시보드처럼 나중에 값이 바뀌어 "그때 뭘 봤는지" 모호해지는 일이 없습니다.
- 공유가 곧 완성이다: 분석 커뮤니티나 지인에게 보내는 행위가 파일 전송 하나로 끝납니다.
핵심 요구가 "매일 아침 그날 경기의 분석 재료를 받아 본다"였기 때문에, 조회하러 들어가는 대시보드보다 배달되는 이미지가 사용 패턴에 맞았습니다. 산출물 형태는 기술 취향이 아니라 사용 패턴이 정합니다.
데이터셋과 렌더의 분리
렌더링 설계의 축은 수집과 표현의 분리였습니다. 수집 단계는 지표를 스키마가 정의된 데이터셋으로 조립하는 데서 끝나고 렌더러는 그 데이터셋만 입력으로 받아 이미지를 그립니다. 데이터셋은 파일로 저장되므로 수집 없이 렌더만 다시 돌릴 수 있습니다.
이 분리의 효용은 곳곳에서 나타났습니다. 레이아웃을 수정할 때 재수집 없이 저장된 데이터셋으로 반복 렌더하며 다듬을 수 있었고 같은 데이터셋에서 두 종류의 리포트(밀집 비교표형, 캘린더형)와 두 언어(한국어·영어) 버전, 총 넉 장이 나오는 구조도 자연스러웠습니다. 다국어는 렌더 층의 문자열 사전 문제일 뿐, 수집·조립 층은 전혀 몰라도 됩니다.
| 층 | 책임 | 산출물 |
|---|---|---|
| 수집 | 소스별 지표 확보 | 단계별 중간 산출물 |
| 조립 | 스키마 검증된 데이터셋 | 데이터셋 파일(JSON) |
| 렌더 | 레이아웃 · 표기 · 언어 | 리포트 이미지 · 엑셀 |
밀도 높은 리포트의 레이아웃 원칙
분석용 리포트는 마케팅 인포그래픽과 달리 밀도가 생명입니다. 한 장에 선발 비교, 팀 지표, 상대 전적, 불펜 상태까지 들어가야 합니다. 우리가 지킨 원칙은 세 가지였습니다.
- 비교 대상은 나란히: 홈과 원정의 같은 지표는 항상 같은 행에서 마주 보게 배치합니다. 시선 이동이 곧 비교가 되도록.
- 숫자는 원본 그대로: 반올림·단위 변환 같은 가공을 렌더 층에서 하지 않습니다. 리포트의 숫자가 원본 사이트와 그대로 대조되어야 검증이 가능하기 때문입니다. 실제로 우리는 표시 수치 사백여 개를 원본과 전수 대조하는 검증을 수행했는데, 렌더 층이 숫자를 만지지 않았기에 가능한 검증이었습니다. 상세는 수집 데이터 검증 방법에서 다룹니다.
- 없는 데이터는 없다고 표시: 수집 실패나 미제공 지표는 빈칸이 아니라 명시적 표기로 남깁니다. 빈칸은 "값이 0"인지 "못 가져왔는지" 구분이 안 되기 때문입니다.
- 언어 버전은 같은 좌표에: 한국어판과 영어판은 배치가 동일합니다. 두 판을 오가도 같은 위치에서 같은 지표를 찾을 수 있고, 렌더 층의 문자열 사전만 다릅니다.
엑셀은 엑셀대로: 형태별 산출물
모든 데이터가 이미지에 맞는 것은 아닙니다. 불펜 투구수처럼 사용자가 직접 정렬·필터하며 볼 데이터는 열여섯 컬럼의 엑셀로 따로 산출했습니다. 이미지는 읽는 데이터, 엑셀은 만지는 데이터라는 구분입니다. 산출물 형태를 하나로 통일하려는 유혹보다, 데이터의 용도별로 형태를 나누는 쪽이 사용자 경험에 맞았습니다.
이 렌더링이 들어간 도구의 전체 그림은 야구 데이터 수집 자동화 사례에서 볼 수 있습니다. 지표를 확보하는 앞단은 스포츠 데이터 크롤링에서 이어집니다.
자주 묻는 질문
대시보드 대신 이미지 리포트를 쓸 만한 경우는 언제인가요?
받아 보는 사용 패턴일 때입니다. 매일 정해진 시점의 스냅샷을 확인하고 공유하는 용도라면, 뷰어·계정 없이 어디서나 열리고 시점이 박제되는 이미지가 대시보드보다 낫습니다. 반대로 조건을 바꿔 가며 탐색하는 용도라면 대시보드가 맞습니다.
리포트 레이아웃을 바꾸려면 다시 수집해야 하나요?
수집과 렌더를 분리하면 필요 없습니다. 수집 결과를 스키마가 정의된 데이터셋 파일로 저장하고 렌더러가 그것만 읽게 하면, 레이아웃 수정은 저장된 데이터셋으로 반복 렌더하며 다듬을 수 있습니다. 다국어 버전도 같은 데이터셋에서 렌더 층 사전만 바꿔 만듭니다.
리포트의 숫자가 원본과 다른 것 같으면 어떻게 확인하나요?
렌더 층이 숫자를 가공하지 않는 설계라면 대조가 단순해집니다. 리포트의 값과 원본 화면, 중간 데이터셋 파일을 나란히 보면 수집·조립·표시 중 어느 층의 문제인지 바로 좁혀집니다. 렌더에서 반올림·환산을 하기 시작하면 이 추적이 어려워지므로 가공은 조립 층까지만 두는 것이 좋습니다.