만든 것공개

구조

위젯은 조회를 하지 않습니다. 파일 하나를 읽어서 그립니다.

파일 1개

이게 구조의 핵심이다. 위젯은 파일 하나를 읽어서 그린다. 시트와 이슈 트래커를 훑어 그 파일을 쓰는 건 별도 스크립트다.

UI가 멈추면 사람이 닫는다

갈라 놓은 첫 번째 이유다. 원격 조회는 몇 초씩 걸리는데, 그동안 창이 굳으면 사람은 그 위젯을 닫는다.

그래서 갱신은 비동기로 던지고 타이머가 완료를 확인한다. 창은 계속 움직이고, 값이 늦게 도착하면 늦게 바뀐다.

이건 성능 최적화가 아니라 생존 문제다. 이 도구의 유일한 가치가 “계속 떠 있다”인데, 굳는 순간 사람이 닫아 버리면 가치가 0이 된다. 5초 멈춤이 기능 하나를 없애는 것과 같다.

실패해도 직전 값이 남는다

갈라 놓은 두 번째 이유. 조회 스크립트가 실패해도 위젯은 직전 값을 그대로 들고 있다.

빈 화면이나 0이 뜨는 것보다, 조금 낡은 숫자가 남아 있는 쪽이 낫다. 0은 거짓말이고 낡은 숫자는 낡은 진실이다.

이게 되는 이유는 위젯이 조회를 안 하기 때문이다. 위젯이 직접 API를 부르는 구조였으면 실패는 곧 화면 붕괴다. 파일을 읽는 구조라, 파일이 갱신 안 됐을 뿐이면 어제 값이 그대로 보인다.

다만 그러면 “이게 언제 값인지”가 중요해진다. 그래서 갱신 시각이 화면에 있다.

마일스톤은 코드가 아니라 설정이다

차수가 바뀔 때마다 고칠 게 없어야 했다. 그래서 마일스톤마다 다른 건 전부 설정 파일 키로 뺐다 — 시트 식별자, 리포트 주소, 스프린트 이름, 알림 채널, 배포 폴더, 템플릿 경로.

새 차수를 여는 건 템플릿을 복사해서 값을 채우는 일이고, 바탕화면에는 차수별 바로가기가 따로 생긴다. 코드는 한 벌이다.

여기서 한 가지가 중요했다. 차수를 코드 안 상수로 두면 이전 차수를 못 본다. 프로젝트가 끝나도 지난 차수 결과를 다시 볼 일이 계속 생기는데, 상수였으면 그때마다 코드를 되돌려야 한다. 지금은 바로가기를 더블클릭하면 된다.