스크랩

엑셀 노가다는 그만! 전국 학교 공시 데이터를 한눈에 비교하는 '우리학교어때'

엑셀 노가다는 그만! 전국 학교 공시 데이터를 한눈에 비교하는 '우리학교어때'

한눈에 보는 요약

학교 정보를 찾을 때마다 여러 사이트와 엑셀 파일을 열어가며 헤매신 적 있으신가요? 이런 불편을 줄이기 위해 만들어진 **우리학교어때(woorischool.com)**는 전국 학교의 공시 데이터를 검색하고 비교할 수 있는 서비스입니다. 흥미로운 점은 개발 전 과정을 바이브코딩(Vibe Coding) 방식으로 진행했다는 것인데요, 단순히 AI에게 한 번 코드를 받아 끝낸 게 아니라 요구사항을 문서로 쪼개고 결과를 실제 데이터와 대조하며 오류를 반복적으로 고쳐 나갔다고 합니다.

어떤 정보를 볼 수 있나요?

서비스에서 제공하는 핵심 기능은 다음과 같습니다.

  • 학교명 검색: 원하는 학교를 빠르게 찾기
  • 같은 학교급끼리 비교: 초·중·고 등 동일 급별 비교
  • 지역별 공시 데이터 비교: 지역 단위로 데이터 살펴보기
  • 교과별 학업성취 자료 확인 (평균 점수만 반영)
  • 학교폭력대책심의위원회 심의 결과 확인

특히 신뢰성을 위해 원본에서 확인되는 수치와 자체 계산 지표를 구분해서 표시한다는 점이 눈에 띕니다.

데이터 구성

제공되는 데이터는 학교 기본정보, 학급 및 학생 수, 교원 수, 학생 이동 정보(전입·전출), 안전교육 이수 시간, 학교폭력대책심의위원회 결과, 교과별 학업성취(평균 점수) 등으로 폭넓게 구성되어 있습니다.

기술 스택 살펴보기

개발자라면 어떤 기술로 만들었는지 궁금하실 텐데요, 구성은 다음과 같습니다.

  • 프론트엔드: Next.js App Router, TypeScript, Tailwind CSS
  • 백엔드/DB: Firebase Firestore, Firebase Admin SDK
  • 배포/자동화: Vercel 배포 + GitHub Actions
  • 데이터 처리: 브라우저 검색용 정적 search-index.json, 상세·랭킹·비교 페이지용 정적 JSON
  • 수집 파이프라인: NEIS·학교알리미 데이터 수집 후 row_hash 기반으로 변경분만 반영
  • 학교알리미 XLS 파일의 표 구조를 판별하는 수동 공시 자료 가져오기 도구까지 직접 구현

정적 JSON을 적극 활용해 빠른 검색 경험을 제공하면서도, row_hash 기반 변경 감지로 데이터 갱신을 효율적으로 처리한 점이 인상적입니다.

가장 어려웠던 지점: 데이터 정합성

개발자는 "화면이 그럴듯한 것보다 다른 학교에 잘못 연결되지 않는 것이 더 중요하다"고 판단해 매핑과 검증에 가장 많은 시간을 쏟았다고 합니다.

1) 학교명 매칭 문제

이름이 같은 학교, 이름이 바뀐 학교, 폐교된 학교, 학교급만 다른 학교가 뒤섞여 있어 학교명만으로 연결하면 오매핑이 발생할 수 있었습니다. 그래서 학교 코드·교육청 정보·지역·학교급을 우선 사용하고, 자동으로 확정할 수 없는 항목은 별도 검증 대상으로 남기는 방식을 택했습니다.

2) 들쭉날쭉한 XLS 표 구조

학업성취·학교폭력 공시 XLS 파일은 파일마다 열 위치가 달랐습니다. 특정 열 번호를 고정해 읽으면 정상적인 숫자처럼 보이는 잘못된 값이 섞여 들어갈 위험이 있었죠. 이를 막기 위해 표 제목과 헤더를 확인해 형식을 구분하고, 범위를 벗어나는 값은 반영하지 않는 검증 단계를 추가했습니다.

마치며

우리학교어때는 단순히 "AI로 빠르게 만든 서비스"가 아니라, 데이터 정합성과 검증에 진심인 프로젝트라는 점에서 배울 거리가 많습니다. 공공 데이터를 다루는 서비스를 고민 중이라면, 화려한 화면보다 '틀리지 않는 데이터'에 집중한 이 접근 방식을 참고해 보시길 추천합니다.


원문: https://news.hada.io/topic?id=30720