水美想館soomisang

고양이 화장실 청소하다 만든 것

#기록#개발#크루 캘린더

고양이는 아픈 걸 숨긴다. 야생에서 약한 티를 내면 표적이 되니까, 어지간히 아파도 평소처럼 굴다가 견딜 수 없어질 때쯤 드러낸다고 한다. 그래서 집사가 먼저 확인할 수 있는 건 고양이가 아니라 화장실이다.

그래서 크루의 하루를 기록하는 달력을 만들었다.

사실 구글 캘린더에 기록하고 있긴 했지만, 좀 더 내 입맛에 맞는 앱을 만들어보고 싶었다.

크루는 우리집 고양이다. 감자와 고구마 개수, 토, 모래갈이, 건강검진 날짜를 기록해두고 싶었다. 고양이가 모래 화장실에서 변을 보고 나면 모래가 뭉친 모양을 보며 소변을 감자, 대변을 맛동산이라고 부르는데, 나는 괜히 맛동산 보다는 고구마라 부르고 싶어서 고구마라 부른다.

만들면서 정한 것은 대부분 무엇을 나누고 무엇을 합칠지였다. 기록하는 도구에서는 그게 기록의 쓸모를 정한다.

크루 달력
위쪽은 관리자 한테만 보이는 기록 버튼, 아래는 모두에게 보여지는 캘린더. 17일에 감자 둘, 고구마 하나, 모래갈이가 기록됐다.

하루씩 보면 안 보인다

감자가 어제 셋이고 오늘 둘인 건 아무 일도 아니다. 그게 2주에 걸쳐 서서히 줄어드는 중이라면 다른 얘기다. 고구마가 하루 없는 건 흔하고, 사흘 없는 건 흔하지 않다.

어느 하루를 들여다봐도 이건 안 보인다. 한 달을 한 화면에 놓고 봐야 보인다. 그래서 목록도 표도 아니고 달력이다. 형태를 먼저 고른 게 아니라, 봐야 하는 것이 형태를 정했다.

색으로는 구별이 안 됐다

한 화면에 놓고 봐도 안 보이는 게 있었다.

처음엔 감자와 고구마를 숫자 두 개로 놓고 색만 달리했다. 감자는 황토색, 고구마는 갈색. 그런데 캘린더 날짜 칸 하나가 모바일에서 생각보다 작게 보여서 그 크기에서 색 만으로 구분하기에는 좀 아쉬운 느낌이 들었다. 둘 다 그냥 작은 숫자로 보였다.

모래갈이와 건강검진도 마찬가지였다. 처음에는 둘 다 작은 동그라미 기호로 색으로만 구분해서 달력 칸 안에 남겼었는데 이 역시 어느 쪽이 병원 간 날인지 알 수가 없었다.

그래서 이모지를 붙여봤다. 이름이 이미 감자와 고구마니 🥔 와 🍠 를 그대로 쓰면 됐고, 모래갈이는 🧹, 건강검진은 🩺, 토는 💦 가 됐다. 칸도 조금 키웠다.

색은 남겨뒀지만 이제 거들기만 한다. 모양이 먼저 정체를 말하고 색이 뒤에서 한 번 더 확인해준다. 색을 구별하지 못하는 사람에게도 같은 정보가 남는다는 게 덤이다.

토를 나눴다

처음엔 "토"라는 칸 하나였다. 만들다가 셋으로 나눴다. 헤어볼토, 사료토, 공복토.

서로 다른 신호다. 헤어볼은 그루밍한 털이 나온 거라 어느 정도는 일상이다. 소화 안 된 사료가 그대로 나오면 급하게 먹었거나 사료가 안 맞는 것이다. 투명하거나 거품이 섞였거나 노란 담즙이 올라온 것은 빈속에 위산이 올라온 거라 성격이 아예 다르다.

합쳐두면 한 달 뒤에 남는 건 "토 6번"이다. 정작 병원에서 물어볼 내용이 사라진다. "공복토만 네 번"과 "헤어볼토 네 번"은 전혀 다른 상황인데 합쳐놓으면 숫자가 같다.

나누는 데 든 비용은 항목 세 개지만, 얻은 건 이 기록의 쓸모 전부다.

0과 빈칸 구분하기

고구마 칸이 사흘 비어 있다? 이건 두 가지 중 하나다. 사흘 동안 안 쌌거나, 사흘 동안 내가 안 봤거나. 앞이면 변비고 뒤면 그냥 바빴던 것인데, 빈칸은 둘을 구별해주지 않는다.

그래서 0을 명확하게 구분하기로 했다. 화장실을 치웠을 때 고구마가 없었으면 0이 남고, 아예 안 봤으면 아무것도 없다. 편집 화면에서도 — 와 0 을 따로 뒀다.

하루 편집 화면
날짜를 누르면 달력 위로 이렇게 열린다. 헤어볼은 0, 나머지 토는 —. 확인해서 없었던 것과 아예 안 본 것이 다르게 남는다. 사실 고구마 0이 제일 중요하긴 한데 굳이 고구마에'만' 적용하진 않았다.

버튼 액션 최소화 하기

여기까지 잘 나눠놔도 안 적으면 끝이다.

이 화면을 실제로 여는 자리는 화장실 앞이고, 그때 한 손에는 삽이 들려 있다. 항목마다 +를 여러 번 누르게 만들면 귀찮을 것 같았다.

감자와 고구마는 대개 같이 나오고, 나오는 양도 몇 가지로 정해져 있다. 그러니 "감자 3개 고구마 1개"가 버튼 하나면 된다.

처음에는 그 조합을 템플릿 처럼 내가 정해서 만들려고 했는데, 클로드가 좋은 방법을 추천해줬다. 최근 60일 기록에서 가장 흔했던 조합을 뽑아 버튼으로 세우기.

조합을 만드는 화면을 따로 둘 수도 있었다. 그러면 항목 네 개를 관리하는 화면이 생긴다. 코드에 적어둘 수도 있었다. 그러면 크루가 나이 들어 패턴이 바뀔 때마다 고쳐야 한다. 답은 이미 쌓인 기록이 갖고 있으니 그걸 세어보는 게 제일 괜찮은 아이디어였다.

버튼이 뜨는 순서는 빈도가 아니라 감자 개수로 고정했다. 자주 쓰는 순으로 정렬하면 어제 눌렀던 자리에 다른 버튼이 온다. 어떤 게 뜰지는 기록이 정하지만, 어디에 뜰지는 감자 갯수가 정하도록 했다. 웬만큼 큰 변화는 없을테니 손이 그 위치를 잘 기억하도록 하고 싶었다.

그리고 이름을 템플릿이 아닌 "자주"으로 지어주었다.

건강검진은 이 버튼 줄에서 뺐다. 병원은 보통 날짜를 미리 잡아두기 때문에 "오늘 +1"이 맞지 않는다. 예약한 날을 달력에서 눌러 미리 적어두면, 그 날이 올 때까지 달력이 대신 기억해준다.

자정을 넘기면 어제가 된다

날짜를 다루면 꼭 한 번은 밟는다.

"오늘"을 브라우저에서 계산하면 세계표준시 날짜가 나온다. 한국은 아홉 시간 앞이라 자정부터 아침 아홉 시까지는 세계표준시로 아직 어제다.

화장실은 보통 밤에 치운다. 그래서 열한 시에 누른 기록은 제자리에 들어가고, 조금 늦어져서 열두 시 반에 누른 기록은 어제 칸으로 간다. 늘 틀리는 게 아니라 어떤 날만 틀린다. 늘 틀리면 하루 만에 알아채지만, 어떤 날만 틀리면 한참 뒤에 달력을 보다가 뭔가 이상하다고 느끼게 된다. 그때는 어느 기록이 밀린 건지도 알 수 없다.

오늘이 언제인지는 서버가 서울 기준으로 정하게 했다. 화면은 묻지 않는다.

누구나 볼 수 있게 열어뒀다

달력은 누구나 볼 수 있게 열어뒀다. 크루 달력

다만 기록을 남기는 건 나만 할 수 있게 해뒀다. 남의 집 고양이 화장실에 감자 현황을 편집하면 곤란하니까..

오늘은 감자 두 개 고구마 하나 그리고 모래갈이

오늘부터 시작이다.

고양이 화장실 청소하다 만든 것 — 수미상관 水美想館