오토메이션 공용환경 소개

이전 ‘애플 숏컷 환경의 특징’에서 오토메이션을 만드는데 로직은 애플 숏컷, 정보시스템은 지라를 사용하고 디버그를 위한 로그에는 애플 노트 앱을 사용한다는 소개를 했습니다. 여기에 팀 슬랙에 메시지를 자동으로 보내기 위한 슬랙을 포함해 지라 태스크 생성, 슬랙에 메시지 전달, 글로벌 변수 업데이트, 로그 생성을 어떻게 하고 있는지 소개하겠습니다.

슬랙 메시지 보내기

슬랙은 크게 두 가지 워크스페이스를 자동화 하고 있습니다. 일종의 대시보드로 사용하는 저 혼자만 사용하는 워크스페이스와 팀에서 사용하는 워크스페이스입니다. 슬랙 iOS 앱은 숏컷을 지원하지 않아 메시지를 보내려면 슬랙 API를 사용해야 합니다. API 문서를 읽고 숏컷을 통해 바닥부터 만들 각오를 했는데 'Send to Slack'이 이미 만들어져 있어 이걸 가져다 사용하기만 하면 됩니다. 사용하기 전에 슬랙 웹사이트에서 워크스페이스마다 권한을 정의해 키를 발급 받아야 하는데 이건 'Setting up a Slack app for use with iOS Shortcuts'를 따라 하면 됩니다. 이 슬랙 숏컷을 복사해 서로 다른 워크스페이스로 메시지를 보내도록 설정하고 이 숏컷을 호출할 때 채널 이름과 메시지를 넣을 수 있게 했습니다.

슬랙에 메시지를 보내야 하는 상황 대부분에 이 방식을 사용하지만 몇몇은 보통 메시지가 아니라 ‘특정 메시지에 답글’을 달아야 하는 경우가 있었습니다. 이 답글을 달아야 하는 동작은 다른 숏컷으로 분리해 메시지를 보내고 나면 나중에 답글을 달기 위해 이 메시지 아이디를 리턴 하게 했는데 장기적으론 이들의 기능을 모두 통합해 숏컷 하나로 만들어 놓으려고 합니다.

지라 태스크 생성

 

지라는 iOS용 지라 앱이 숏컷을 지원해 복잡할 것이 별로 없습니다. 다만 태스크 만들기, 태스크 정보 읽기, 태스크 상태 변경 등 핵심 작업에 이 작업을 할 지라 계정과 프로젝트 이름을 요구하는데 이들을 변수로 전달할 수 없이 미리 정의해 둘 수만 있습니다. 만약 이들을 변수로 전달할 수 있었다면 위 슬랙 사례처럼 값을 전달하면 됐을 텐데 어쩔 수 없이 프로젝트마다 서로 다른 태스크 생성 숏컷을 만들어 사용하고 있습니다.

글로벌 변수 관리

애플 숏컷 환경의 특징’에서 애플 숏컷 앱 기본 상태에서는 글로벌 변수가 없다는 이야기를 했습니다. 하지만 솔직히 글로벌 변수 없이는 서브루틴을 나눠 실행한다는 개념 자체가 성립하지 않는다고 생각합니다. 다행히 ‘Toolbox Pro for Shortcuts’ 앱을 사용하면 글로벌 변수를 사용할 수 있습니다. 다만 직접 글로벌 변수를 수정하면 누가 언제 왜 값을 바꿨는지는 알 수 없어 디버깅이 어렵습니다. 그래서 글로벌 변수를 업데이트 하는 숏컷을 만들어 놓고 관찰이 필요한 글로벌 변수에 한해 이 숏컷을 통해 읽고 쓰는 중입니다. 이 숏컷을 통해 업데이트 하면 누가, 언제, 어떤 글로벌 변수를 업데이트 했는지 로그를 남겨 나중에 확인할 수 있습니다.

로그

숏컷은 딱히 현대적인 디버깅 환경을 제공하지 않습니다. 브레이크포인트도 없고 디버거도 없고 특정 시점에 변수 값을 볼 수도 없고 콜스택을 볼 수도 없습니다. 거의 유일한 방법은 로그를 찍어 동작을 추정하는 것 뿐입니다. 그래서 숏컷을 통해 주요 동작을 할 때 로그를 남기고 있습니다. 위 로그에서 이미 스픽 앱을 열었다가 빨리 홈으로 돌아갔다가 다시 앱으로 돌아올 때 스픽 시작 숏컷이 연속으로 두 번 불리면서 오동작이 일어났음을 파악할 수 있습니다.

결론

오토메이션을 지탱하기 위해 슬랙, 지라, 글로벌 변수, 로그를 사용하는 방법을 소개했습니다. 이걸 처음부터 만든 건 아닙니다. 오토메이션을 만들다 보니 필요해져서 조금씩 만들어 지금 상태가 됐고 이후 개선 할 점도 많아 출퇴근 지하철 안에서 손가락으로 노드를 이리 저리 옮겨 가며 코딩하며 살고 있습니다.