퇴근 메시지 오토메이션 사례
반려인과 일정이 다르고 그 일정도 종종 바뀌어 누가 언제 집에 돌아왔는지 알 수가 없습니다. 특히 제 퇴근시간이 일정하지 않아 제가 반려인보다 먼저 돌아오거나 나중에 돌아올 수 있는데 이 사실을 모르면 식사를 따로 하거나 같이 할 결정을 못하거나 의도하지 않게 가족을 굶길 수도 있었습니다. 그래서 제 귀가를 자동으로 알리면 좋겠다는 생각을 했습니다. 그런데 항상 귀가를 알려야 하는 것은 아닙니다. 지금 일하는 팀은 회사 출근과 원격을 병행하고 있는데 출근한 날은 귀가 여부를 알려야 하지만 원격으로 일한 날은 보통 외출하지 않으니 굳이 귀가를 알릴 필요가 없어 이를 구분해야 했습니다.
회사에 출근할 때 글로벌 변수에 있는 출근 플래그를 켭니다. 출근은 한동안은 회사 책상 위에 있는 NFC 태그를 사용했는데 태깅을 자주 깜빡 했기 때문에 지오펜스로 바꿨습니다. 회사 건물에 도착하면 지오펜스에 의해 회사에 출근할 때 실행할 숏컷들이 실행되며 이 ‘출근 기록’도 여기에 포함됩니다. 출근 여부를 판단해야 할 때 출근 여부를 확인하지 않고 출근할 시점에 플래그를 바꿔 놓는 이유는 나중에 출근 여부를 확인하려면 시간이 많이 걸리기 때문입니다. 특히 GPS 관련 동작은 정확도에 따라 응답시간이 30초 가까이 걸릴 때도 있었습니다. 그래서 미리 플래그를 켜 놓고 나중에는 플래그만 확인하면 확인이 빨라집니다.
그러면 집에 돌아왔음을 어떻게 확인할까요. 일단 집 와이파이에 접속된 상태를 집에 돌아온 것으로 판단하고 있습니다. 예상한 대로 작동하기는 하지만 집 안에서도 종종 와이파이가 끊기기도 하기 때문에 아주 마음에 드는 조건은 아닙니다. 다른 실행 조건이 없을지 고민하고 있습니다.
집에 돌아오면 일단 오늘 출근했었는지 확인합니다. 오늘 출근하지 않았다면 메시지를 보낼 필요가 없습니다. 오늘 출근했다면 반려인에게 퇴근 메시지를 보내고 로그를 기록하고 중복 실행되지 않도록 퇴근 메시지를 이미 보냈음을 플래그에 기록합니다. 이런 동작은 ‘애플 숏컷 환경의 특징’에서 에러처리가 어렵다는 설명에서 소개한 동작이 일부만 성공하고 나머지는 실패하는 상황에 취약합니다. 가령 메시지는 전송됐지만 텔레그램 숏컷이 실패하면 숏컷 전체가 멈추는데 이 때 메시지는 전송됐지만 플래그는 업데이트 되지 않아 동작이 중복 실행될 수 있습니다.