먼저 왔는데, 서서 기다리다
학교 행사가 있던 날이었습니다. 학년별로 자리를 잡고 앉는데, 우리 반은 일찍 도착했는데도 자리에 앉지 못했습니다. 앞 반이 아직 덜 와서, 그 빈자리 때문에 먼저 온 우리가 뒤에 서서 기다리는 상황이 벌어졌습니다.
가만 보니 이상했습니다. 몇 반이 몇 명 오는지는 이미 다 알 수 있는 상황이었고, 좌석마다 번호도 매겨져 있었습니다. 그렇다면 굳이 도착 순서대로 앉을 게 아니라, 사전에 반별로 좌석 번호를 미리 부여해두면 누가 먼저 오든 자기 자리에 바로 앉으면 되지 않을까—그 생각에서 만들기 시작했습니다.
일단 만들어보니, 나만 볼 수 있었다
처음에는 단순하게 시작했습니다. 고정된 좌석을 세팅해두고, 학반과 인원수만 수정할 수 있게 만든 것입니다. 입력하면 좌석 배치가 척 나오니, 그것만으로도 쓸 만했습니다.
그런데 곧 한계가 보였습니다. 데이터를 localStorage에 저장하다 보니, 정작 만든 사람 본인만 결과를 볼 수 있었습니다. 다른 선생님과 나누려면 방법이 필요했습니다. 그래서 우선은 배치 결과를 이미지로 저장해 공유하는 방식을 썼습니다. 일단 보여줄 수는 있게 된 셈입니다.
다른 학교도 쓰려면? 확장성의 벽
만들고 나니 욕심이 생겼습니다. 이런 상황은 우리 학교만 겪는 게 아닐 테니, 다른 학교에서도 쓸 수 있게 하면 좋겠다 싶었습니다. 그러려면 고정 좌석이 아니라 학교마다 다른 변동 좌석을 세팅할 수 있어야 했습니다.
"범용으로 만들려는 순간, 인증 시스템과 데이터베이스가 필요해지고—갑자기 일이 무거워진다."
학교별 데이터를 저장하고 관리하려면 로그인과 DB가 따라붙습니다. 간단한 도구 하나가 갑자기 묵직한 서비스가 되는 셈이고, 쓰는 사람도 가입부터 해야 하니 오히려 불편해질 것 같았습니다.
base64 링크, 그리고 그것도 아니었다는 것
그러다 떠올린 것이 최근 다른 도구를 만들 때 알게 된 방식이었습니다. 데이터를 통째로 base64 같은 코드로 인코딩해 링크 안에 담아 공유하는 방법입니다. 서버에 저장하지 않아도, 링크 자체가 데이터를 들고 다니는 구조입니다.
좋은 방법이라고 생각했고, 실제로 그 방향으로 시작했습니다. 그런데 종이에 그려보니 걸리는 게 넷이었습니다.
결국 문제는 "DB를 쓰느냐"가 아니라 "가입을 시키느냐"였습니다. 그 둘을 떼어놓을 수 있다면 DB를 써도 됩니다.
가입은 없이, 그래도 내 것은 내 것으로
지금 이 도구에는 회원가입이 없습니다. 이메일도 비밀번호도 묻지 않습니다. 대신 배치도를 만들 때 숫자 네 자리 이상의 PIN을 하나 정합니다.
만든 사람의 브라우저에는 수정 권한이 자동으로 남습니다. 다음에 그냥 들어오면 바로 고칠 수 있습니다. 학교 컴퓨터를 바꿨거나 링크를 잃었다면, 그때 PIN을 넣습니다. 받은 사람은 볼 수만 있고, 서버가 수정 요청 자체를 거부합니다.
그래서 A 선생님이 만든 배치도를 B 선생님이 고칠 수 없습니다. 가입 없이 그걸 하고 싶었습니다.
남의 학교 강당을 그냥 불러 씁니다
강당 좌석 구성을 한 번 등록해두면 학교 목록에 올라갑니다. 옆 학교 선생님이 검색해서 그대로 불러 쓸 수 있고, 자기 학교를 새로 등록할 수도 있습니다. 좌석 행을 세는 건 한 번이면 충분한 일이지, 학교마다 반복할 일이 아닙니다.
강당은 늘 가득 차지 않으니까
배치 방식을 세 가지 두었습니다. 붙여서 채우거나, 학반마다 새 줄에서 시작하거나, 학반 사이를 몇 자리씩 비우거나. 학반별로 "1반은 A열부터, 2반은 C열부터" 시작 줄을 직접 지정할 수도 있습니다. 겹치게 잡으면 도구가 막고 어디부터 잡으라고 알려 줍니다.
처음엔 없던 기능인데, 실제로 써 보니 강당이 가득 차는 행사가 오히려 드물었습니다.
학생 이름은 넣지 않습니다
이 도구는 학생 이름을 저장하지 않습니다. 애초에 넣을 칸이 없습니다. 필요한 건 "3학년 2반 24명"까지고, 그 이상은 좌석을 배정하는 데 쓸모가 없습니다.
등록자 이름도 실명 대신 별명을 쓰도록 안내합니다. 학교 이름과 강당 좌석 구성은 어차피 학교 홈페이지에 있는 정보입니다.
정작 필요한 순간은 강당 안이었습니다
만들고 나서야 알았습니다. 이 도구가 제일 필요한 순간은 책상 앞이 아니라 강당 안이라는 걸요. "우리 반 어디예요?" 하고 물으면 폰을 꺼내 보여줘야 하는데, 폰에서는 화면이 PC 그대로 나와서 좌석표가 옆으로 밀려 보이지도 않았습니다.
그래서 폰 화면을 따로 만들었습니다. [좌석 배치] 버튼은 어디를 보고 있든 화면 아래에 떠 있고, 배치도는 손가락으로 옆으로 밀어서 봅니다. 이미지로 저장하면 아이폰에서도 사진첩으로 바로 들어가게 했습니다—「파일」앱 어딘가에 떨어져서 못 찾는 일이 없도록요.
그래서 지금
지금은 실제로 쓰고 있습니다. 가입 없이 바로 열립니다.
"먼저 온 사람이 서서 기다리지 않게"—그 한 문장으로 시작한 일이 여기까지 왔습니다.
돌아보면 대단한 문제의식에서 출발한 게 아니었습니다. 그날 강당 뒤에 서 있으면서 느낀 사소한 불편 하나였습니다. 그냥 넘어가도 아무 일 없었을 종류의 것이었고요. 다만 그걸 한번 손대보기 시작했더니, 링크 공유 방식을 접었다 다시 짜고, 폰 화면을 새로 만들고, 여기까지 오게 됐습니다. 제가 만든 것 중에 가장 사소한 데서 시작한 도구입니다.