Skip to content

코로나19 자가진단 매크로를 만들며..?

2021-06-12

내가 이 앱을 만들게 된 것은 그냥 자가진단을 직접 하기 많이 귀찮아서였다. 처음 만든지 몇 달은 되었는데, 작년(2020) 가을인가 즈음에 만들기 시작한거 같다. 처음에는 귀찮아서 만든 앱이라 코드도 대충 짰다. 하지만 지금까지 업데이트를 거듭해오면서 정이 들었는지 꽤 많은 시간을 이 앱 개발에 할애했다.

개발 과정

자가진단 api 분석을 위해 자가진단 공식 사이트에 들어갔다. 개발자 도구를 켜고 로그인부터 자가진단 제출까지의 과정을 하고 나서 네트워크 패널의 것들을 봤다.
다행히도 자가진단 사이트는 내부의 REST API가 별개로 있었다. 그 덕에 구조를 뜯어보기 더욱 수월했다.

다만 인증 관련된 내용에서 상당히 골머리를 겪었다. 인증 키가 한 개가 아니었다. 초기에는 매번 유동 키를 받아와서 자가진단을 하는 형태였다.

자가진단에서 내용들은 https로 전송되는데, API들 중에는 이름과 생년월일을 암호화해야 하는 부분이 있다. 왜 굳이 암호화를 하는지 의문이지만, 일단 구현해야 하기에 했다. 이 부분에 안드로이드에서 JSEncrypt에 대응하는 알고리즘을 찾아서 암호화하는게 힘들었다. 사실 알고보면 간단한 거였지만 삽질한 부분이었다.

내부 api 구조가 바뀔 때마다 앱 업데이트를 하는 것도 고역이었다. 내가 만든 앱을 쓰는 사람들이 불편을 겪지 않도록 최대한 빨리 업데이트했다. (한 2시간 안에 패치했던거 같다. 아닌가) 그리고 업데이트가 가능하도록 공지사항 기능을 넣었다. 이건 개선할 계획이다.

패치 예정인 것들

만들다 보니 정이 들어서 엄청 열심히 만들고 있다. 코드베이스가 안드로이드 UI 프레임워크 기반이었는데 코드가 구려서 Jetpack Compose로 다시 갈아엎고 있다. 그리고 UI/UX 개선도 할 것이다.

그리고 랜덤 시간 기능도 만들려 한다. 혹시나 매일 완전 똑같은 시간에만 진단하면 의심을 살 수도 있으니 범위를 지정해두면 매일 그 범위 안에서 임의의 시간을 선택한다.

여러 명을 추가할 수 있게 할 예정이다. 원래 자가진단 시스템 자체가 여러 명을 한 사람의 계정에 연결해둘 수 있게 되어있긴 하지만, 그 시스템과 별개로 여러 명을 추가해두고, 다 한번에 자동으로 자가진단할 수 있는 시스템을 만들 것이다.