룸톤 Roomtone TIL 2
곡이 넘어갈 때마다 소리가 튀었다
생성 도구로 뽑은 곡은 곡마다 음량이 제각각이다. 그대로 이어 틀면 한 곡이 끝나고 다음 곡에서 갑자기 커지거나 작아진다. 매장에서 이건 그냥 거슬리는 정도가 아니라, 직원이 하루에 몇 번씩 볼륨을 만지게 만든다.
올릴 때 파일 자체를 같은 음량으로 구워 두기로 한 건 앞선 TIL 1에서 정한 것이고, 이날 실제로 그렇게 굽기 시작했다. 곡을 올리면 형식을 맞추고 음량을 맞춘 파일이 만들어진다.
굽고 나서야 보인 대가가 있다. 값을 바꾸고 싶어지면 이미 올라간 곡을 전부 다시 구워야 한다. 그래서 원본은 손대지 않고 따로 보관하기로 했다. 실제로 한 달 뒤에 기준을 올릴 일이 생겼는데, 원본이 있어서 결정만 하면 되는 일이었다.
한 번 정해서 파일에 굳히는 선택은 「되돌릴 길을 같이 만들어 두느냐」로 안전해진다. 원본이 없으면 그 결정은 영구적인 게 되고, 있으면 그냥 다시 하면 되는 일이 된다.
피아노는 장르가 아니었다
태그를 달다 보니 장르 칸에 재즈·라운지와 나란히 피아노·기타·퍼커션이 들어가 있었다. 피아노는 장르가 아니라 무슨 악기를 썼느냐다. 그대로 두면 「피아노 재즈」를 찾을 때 두 값이 같은 칸에서 서로를 밀어낸다.
그래서 악기를 「편성」이라는 칸으로 따로 뺐다. 이미 수백 곡에 붙어 있는 태그를 옮기는 거라 연결이 다 끊어질까 걱정했는데, 그렇지 않았다. 곡과 태그는 이름이 아니라 안 보이는 번호로 묶여 있어서, 그 태그가 어느 칸 소속인지만 바꿔도 붙어 있던 곡은 그대로 따라온다.
분류 체계는 처음에 정확히 못 정한다. 곡이 쌓여야 무엇과 무엇이 다른 종류인지 보인다. 그러니 중요한 건 처음에 잘 정하는 게 아니라, 나중에 바꾸는 값이 싼 구조로 두는 것이다.
한 단어가 두 칸에 걸려 있었다
같은 자리에서 자동 태깅 사전도 손봤다. 프롬프트에 synth가 있으면 장르 「일렉트로닉」과 편성 「신스」 양쪽에 걸리게 돼 있었다. 어느 쪽이 붙을지는 그때그때 달라진다.
겹쳐 두면 결과를 예측할 수 없고, 잘못 붙었을 때 어디를 고쳐야 하는지도 알 수 없다. 그래서 한 단어는 한 칸에만 두기로 하고, 겹치던 것들을 한쪽으로 몰았다.
사전을 넓힐 때 새 단어를 넣는 것보다 먼저 볼 것은 이미 있는 단어와 겹치지 않는지다. 겹침은 늘어날수록 티가 안 나고, 티가 안 나는 채로 분류를 조금씩 흐린다.
나중에 바뀔 값을 통계에 그대로 쓰면 과거가 바뀐다
어떤 업종에서 어떤 곡이 잘 나가는지 보려고 재생 기록을 쌓기 시작했다. 여기서 정할 게 하나 있었다.
재생 기록에 업종을 적어 둘 것인가, 아니면 계정만 적어 두고 나중에 그 계정의 업종을 찾아볼 것인가. 뒤엣것이 간단해 보이지만, 그러면 매장이 업종을 바꾸는 순간 그 매장의 지난 재생 기록도 전부 새 업종으로 바뀐다. 「카페일 때 이 곡이 잘 나갔다」는 사실이 사라지는 것이다.
그래서 재생할 때의 업종을 그 자리에 박아 두기로 했다. 지금 값이 필요한 게 아니라 그때 값이 필요한 기록이기 때문이다.
기록을 설계할 때는 「그 값이 나중에 바뀔 수 있나」를 묻는다. 바뀔 수 있는 값을 가리키기만 해 두면, 그 기록은 과거가 아니라 현재의 그림자가 된다.
세는 기준 하나가 나중 일의 조건이 됐다
재생 기록을 쌓기 시작하면서, 앞선 TIL 1에서 정한 「곡 주소를 받아 가는 순간을 재생 한 번으로 센다」가 실제 숫자가 되어 쌓이기 시작했다.
이 정의가 나중에 두 번 발목을 잡는다. 검사 도구가 곡을 받아 갈 때도 재생으로 세어져 검사 전용 통로를 따로 두게 되고, 다음 곡을 미리 받아 두면 빨라지는데 그러면 안 튼 곡까지 세어져 미루게 된다. 둘 다 뒤에서 다시 나온다.
세는 기준을 정하는 일은 기능 하나가 아니라 앞으로 그 숫자를 건드리는 모든 일의 조건이 된다. 편한 자리에 두기 전에 「이 자리를 지나가는 게 사람의 행동뿐인가」를 묻는 게 낫다.
로그인이 없어도 운영자 화면은 먼저 만들 수 있었다
운영자용 계정 관리 화면을 만들려는데 걸리는 게 있었다. 매장이 자기 계정으로 로그인하는 구조가 아직 없다. 그러면 계정을 여러 개 관리해 봐야 매장 앱이 자기가 어느 계정인지 모른다.
「로그인부터 다 만들어야 계정 관리가 된다」로 보면 그날 할 수 있는 일이 없어진다. 그래서 둘을 나눴다. 운영자 화면은 계정 목록과 편집까지 먼저 만들고, 매장 앱은 당분간 계정이 하나뿐인 것으로 둔다. 매장과 계정을 로그인으로 잇는 일은 두 번째 고객을 받는 때로 미뤘다.
미루는 일에는 날짜가 아니라 조건을 붙이는 게 낫다. 「다음 달에」는 지나가면 그만이지만 「두 번째 고객이 오면」은 그 일이 실제로 필요해지는 순간에 알아서 걸린다.
요약
- 만들 때 한 번 굳히는 선택은 원본을 남겨 두어야 되돌릴 수 있다.
- 분류 체계는 처음에 정확히 못 정한다. 잘 정하는 것보다 나중에 바꾸는 값이 싼 구조가 낫다.
- 한 단어가 두 칸에 걸리면 결과를 예측할 수 없다. 사전은 넓히기 전에 겹침부터 본다.
- 기록에는 그때의 값을 박아 둔다. 바뀔 수 있는 값을 가리키기만 하면 과거가 현재를 따라 바뀐다.
- 무엇을 한 번으로 셀지는 이후 그 숫자를 건드리는 모든 일의 조건이 된다.
- 미루는 일에는 날짜가 아니라 조건을 붙인다.