본문 바로가기

애플리케이션 개발/HRC(Home Remote Control)

0-2. 사용 후기 및 개선

이번 포스팅에서는 HRC(Home Remote Control)를 실제로 사용하면서 느낀 점들을 적어보고자 한다. 매번 느끼는 거지만, 개발과 실사용에 대한 간극은 생각보다 크다. 개발 시에 생각하지 못했던 많은 부분들이 실제 사용을 통해 드러나게 되었다. 몇몇 문제들은 해결하기도 하였는데, 이번 포스팅을 통해 간략히 정리하고자 한다. 

 

먼저 좋았던 점을 살펴보자. 

  • 기본 기능
    밖에서 에어컨을 조작하여, 집에 들어오자마자 시원한 냉기를 느끼는 것이 HRC의 가장 큰 목적이었다. 어떤 이유로 서버를 꺼놓기라도 하는 날에는 그 불편함은 이루 말할 수 없었다. 
  • 동선
    HRC를 사용하기 전에는 집에 들어오면 기본적으로 창문을 닫기 위해 창문까지 걸어가야 했지만 HRC를 사용하면서 출입구에서 창문까지 걸어가는 동선을 줄일 수 있었다. 집에 들어오자마자 집 안에서의 생활을 이어갈 수 있다는 것이 큰 장점이었다. 
  • 리모컨
    HRC를 만들 때만 해도, 밖에서 조작하는 것에 초점을 맞추어 개발하였지만, 사실상 밖에서는 한 번만 조작(창문을 닫거나 에어컨을 켜거나)하면 된다. 실제 사용해보니, 에어컨을 조작하기 위해 밖에서보다 안에서 HRC를 더 많이 사용했다. 기존에 에어컨을 조작하기 위해서는 리모컨을 찾고, 리모컨을 에어컨을 향하게 놓은 다음 버튼을 눌러야 했지만, 이제 이런 절차는 전부 필요 없다. 다만 나의 사정거리 안에 있는 아이폰을 켜서 앱을 조작하면 집 안 어디서든 에어컨을 조작할 수 있었다. 

다음은 불편한 점과 그에 따른 개선이다. 

  • 연결 상태
    기존에 iOS 앱을 조작할 때는, 아이폰을 사용하는 곳에서의 인터넷 환경과, 서버가 잘 구동되고 있는지를 확인할 수가 없었다. 그래서 앱의 컨트롤을 조작할 때 원하는 기능이 잘 구현될지에 대한 의심이 들었다. 앱 내부에 해당 상태들(현재 인터넷 상태, 서버의 연결 상태)에 대한 정보를 추가하였고, 해당 상태에 따라 내부 컨트롤의 활성화 여부를 결정하도록 하였다. 
  • 동기화
    iOS 앱에서 서버의 데이터 조작을 시도할 때, 실제로 잘 수행이 되었는지 확인하기가 불편했다. 앱 내부의 컨트롤을 조작할 때는, 서버의 데이터 상태를 읽어 오는 것이 아니기 때문에, 앱 내부의 컨트롤의 상태와 서버의 데이터 상태가 일치한다는 것을 확신할 수 없었다. 앱이 시작할 때 서버의 데이터를 읽기 때문에 서버의 상태를 확인하기 위해 앱을 다시 시작해야 했다. 이러한 작업은 앱 내부의 컨트롤을 조작할 때마다 수행해야 해서 여간 불편한 것이 아니었다. 이러한 문제는 화면을 아래로 당길 때, 서버의 데이터를 불러와 해결하였다. 
    기존에는 컨트롤 조작 후 앱을 재시작하여 서버의 데이터 상태를 확인하였지만, 현재는 재시작 없이 아래로 당겨 서버의 데이터를 불러오기만 하면 된다. 
  • 서버 구동
    모든 자원은 한정되어 있다. 용도별로 PC가 나눠져 있으면 좋겠지만, 나의 경우에는 서버용 PC인 Mac mini를 TV에 연결하여 셋톱 박스로 활용하거나, 개발할 때 사용하기도 한다. 물론 셋톱 박스로 활용하거나 개발을 할 때에도 서버로서의 역할은 수행할 수 있지만, 각각은 다른 장소에서 이루어지기 때문에, PC를 옮겨 줘야 한다. 이럴 때면 매번 Terminal 앱을 켜서 .js 파일을 node 명령어를 통해 실행시켜 줘야 하는데, 상당히 귀찮은 일이었다. 그래서 해당 작업은 "Script Launcher"라는 macOS 앱을 새로 개발하여 해결하였다. 해당 앱을 통해 계정에 로그인할 때마다 자동으로 선택된 .js 파일을 실행할 수 있다. 해당 앱은 다음 포스팅에서 소개하겠다. 

이번에 여러 문제를 해결하면서 또 느낀 것이 리펙터링의 필요성이다. 여러 문제들을 해결하기 전에 가장 먼저 했던 작업이 리펙터링인데, 정리가 되지 않은 코드를 유지 보수하는 것은 상당히 고통스러운 일이기도 하고, 유지보수가 한 번으로 끝나지 않을 걸 알기 때문에 해당 작업을 가장 먼저 진행하였다. 확실히 리펙터링을 하고 난 뒤에, 기능별로 문제점이 더 눈에 잘 보였고 기능을 추가하거나 수정하는 것이 훨씬 수월해졌다. 

 

앞에서 설명한 불편한 점들 이외에도 아직 규명되지 않은 문제들이나 해결의 필요성을 크게 못 느낀 문제들도 있다. 해당 문제들은 실제로 더 사용해가면서 유지 보수해 나갈 것이다.