먼저 왔는데, 서서 기다리다
학교 행사가 있던 날이었습니다. 학년별로 자리를 잡고 앉는데, 우리 반은 일찍 도착했는데도 자리에 앉지 못했습니다. 앞 반이 아직 덜 와서, 그 빈자리 때문에 먼저 온 우리가 뒤에 서서 기다리는 상황이 벌어졌습니다.
가만 보니 이상했습니다. 몇 반이 몇 명 오는지는 이미 다 알 수 있는 상황이었고, 좌석마다 번호도 매겨져 있었습니다. 그렇다면 굳이 도착 순서대로 앉을 게 아니라, 사전에 반별로 좌석 번호를 미리 부여해두면 누가 먼저 오든 자기 자리에 바로 앉으면 되지 않을까—그 생각에서 만들기 시작했습니다.
일단 만들어보니, 나만 볼 수 있었다
처음에는 단순하게 시작했습니다. 고정된 좌석을 세팅해두고, 학반과 인원수만 수정할 수 있게 만든 것입니다. 입력하면 좌석 배치가 척 나오니, 그것만으로도 쓸 만했습니다.
그런데 곧 한계가 보였습니다. 데이터를 localStorage에 저장하다 보니, 정작 만든 사람 본인만 결과를 볼 수 있었습니다. 다른 선생님과 나누려면 방법이 필요했습니다. 그래서 우선은 배치 결과를 이미지로 저장해 공유하는 방식을 썼습니다. 일단 보여줄 수는 있게 된 셈입니다.
다른 학교도 쓰려면? 확장성의 벽
만들고 나니 욕심이 생겼습니다. 이런 상황은 우리 학교만 겪는 게 아닐 테니, 다른 학교에서도 쓸 수 있게 하면 좋겠다 싶었습니다. 그러려면 고정 좌석이 아니라 학교마다 다른 변동 좌석을 세팅할 수 있어야 했습니다.
"범용으로 만들려는 순간, 인증 시스템과 데이터베이스가 필요해지고—갑자기 일이 무거워진다."
학교별 데이터를 저장하고 관리하려면 로그인과 DB가 따라붙습니다. 간단한 도구 하나가 갑자기 묵직한 서비스가 되는 셈이고, 쓰는 사람도 가입부터 해야 하니 오히려 불편해질 것 같았습니다.
base64 링크라는 길
그러다 떠올린 것이 최근 PoE2 퀘스트 네비게이터를 만들 때 알게 된 방식이었습니다. 데이터를 통째로 base64 같은 코드로 인코딩해 링크 안에 담아 공유하는 방법입니다. 서버에 저장하지 않아도, 링크 자체가 데이터를 들고 다니는 구조입니다.
이 방식이라면 자유도를 한껏 높일 수 있습니다. 변동 좌석, 변동 학반, 인원수 같은 기본만 세팅해두고 '공유'를 누르면 base64 링크가 생성되고—그 링크 하나만 전달하면 누구나 똑같은 배치도를 볼 수 있습니다. 인증도, DB도 필요 없이 말입니다.
이 방향으로 다듬어볼 생각입니다. 아직은 초안만 완성된 상태지만, "서서 기다리는 사람이 없게" 하려던 처음의 작은 불편함이, 학교를 넘어 공유될 수 있는 도구로 자라는 중입니다.