회사에 개발자는 나 혼자 인지라 서버 개발 외적으로도 해야 할 일이 생긴다. 오늘은 안드로이드 폰에서 특정 동작 제어를 하는 방법이 필요했다. 일반적으로 루팅을 하는 방법이 있지만 폰을 루팅하면 위험성도 있고(내가 안드로이드 개발자가 아니라서 이 쪽으로는 좀 약한 것 같다. ) 다시 폰을 사용하려면 언루팅 하기도 힘들어서 안 하는 하는 방법을 찾아 보았다. 

 첫번째로 생각한 것은 에뮬레이터로 동작 시키는 것이었는데, 이것도 뭔가 하려면 루팅이 필요한 것 같아서 패스 했다. 두번째로 생각한 방법은 실제 폰을 제어 하는 것인데 이 기술의 대부분은 원격제어을 이용하는 것이다. 보통 폰에서 PC를 제어하는 remote desktop이 많은데 역방향으로 제어 하는 원격제어도 찾으면 찾을 수 있다. (PC에서 폰 제어) 근데 다만 대부분 유료이다. 그리고 이게 된다고 해도 뭔가 PC 스크립트를 만드는 방법이 딱히 생각나지 않았다. 

그래서 검색을 더 해보고 찾은 것이 openstf (https://github.com/openstf/stf ) 이다. 이게 내가 생각한 것에 아주 가깝다. 우선 폰을 USB에 연결해 두고, Node 서버를 띄우면 웹브라우저에서 그 폰 화면 그대로 보인다. 그리고 마우스로 터치하면서 제어 할 수 있다. 

설치 방법은 https://dejavuqa.tistory.com/342  이 블로그에 너무 잘 나와서 패스한다. 

여기서 더 발전하면 nodejs 를 이용한 프로그램을 만들어 특정 이벤트(홈 버튼을 누른다든지, 특정 화면을 터치한다든지)를 발생 시킬 수 있다. 이 부분은 https://github.com/openstf/adbkit  과 https://github.com/openstf/adbkit-monkey 를 잘 이용하면 될 것 같다.

내 경우 home 버튼 누르는 예제를 실행시켜 보았는데 잘 동작했다.

 서비스가 안정적으로 동작 시키기 위해서는 뭔가 node 대몬 관리 프로그램을 잘 이용해 줘야 할 것 같긴 한다. nodejs 가 자주 다루는 플랫폼이 아닌지라 좀 연구가 필요 할 것 같다. 

 회사에서 zapier 를 많이 사용하는데, 이게 비용이 만만찮게 들고 있다. zapier 가 가지고 있는 가장 큰 장점은 비 개발자도 어느 정도 연동을 할 수 있다는 것이다. 생각같아서는 모든 것을 구현하자고 하고 싶지만 내가 하나 있는 개발자 인데 나도 없을때 유지보수가 안되기 때문에 개발하자가 하기가 좀 그렇다. 

 어째든 비개발자가 연동만으로 슬랙이나 google sheet 로 정보를 쏠 수 있는 툴을 알아보고 있다. 물론 직접 설치가 가능한 오픈소스툴을 찾고 있다. (돈 주면 이런 툴들 많다. )

 뭔가 좀 많이 아쉽긴 하지만 그대로 조금 가깝다고 느껴지는 툴은 nodered(https://nodered.org/ ) 라는 툴이다. 선으로 뭔가 이어 가면서 연결한다는 느낌이 있어 그래도 비개발자들이 보기에 어느정도 논리적인 것이 GUI 화면에 보이기 때문에 할 만 할 것 같긴 하다. (물론 나는 디지털, 아날로그 하드웨어를 하다보니 pspice 같은 아날로그 회로 툴에 익숙하다 보니 이 논리적인 부분이 익숙한점은 있다.) 다만 zapier  처럼 미리 연동된 부분이 좀 많이 부족한 것이 아쉽다. 

 

 잘 이용하면 이론적으로는 이걸로 웹서버도 만들고 DB에 데이터도 저장 할 수 있을 것 같다. (근데 개발자 입장에서는 이런 것 보다 코드로 짜는게 더 쉬울 것 같기는 하다.)

 나는 회사에서만 맥을 사용하는 유저이다. 집에서는 윈도우즈를 사용한다. 그러다 보니 맥 사용이 조금 익숙하지 못하다. 개발용 프로그램을 사용할 때, brew 를 많이 활용하는 편이다. 다른 프로그램 설치 때문에 brew update 를 했다. 그랬더니 파이썬 버전이 업데이트가 되어 버렸다. 가능한 서버의 파이썬 버전과 내 개발용 컴퓨터의 파이썬 버전을 맞추는게 만일의 현상에 대해 방지할 수 있기 때문에 다시 구 버전을 설치해야 했다.  pyenv 라는 툴로 예전 버전을 다시 설치했다. 

 이렇게 문제가 해결 되는줄 알았는데, postgresql 버전도 업그레이드 되어 버리면서 서버 접속이 안되는 문제가 발생했다. 그냥 기존 버전 삭제 하고, 필요 없는 정보도 같이 삭제 하고 난 후 재설치 했다. 이렇게 된 김에 서버 쪽도 버전 업을 시도 해 봐야겠다. 

 함부로 brew update 하면 안되겠다.