[2015 / 팀 프로젝트]
기업연계 프로젝트 - 말벗
프로젝트 기간: 2014.11.01 ~ 2015.10.31
프로젝트 참여 기간: 2015.03.25 ~ 2016.01.19
과제명: 마이크로 웹페이지 기반 현장중심형 SNS
목표: 1. 마이크로웹페이지 기술 기반 현장중심형 SNS 스마트앱 S/W 개발
2. 마이크로웹페이지 태그 구성 기술 개발
3. 마이크로웹페이지 저작도구 및 SNS 확장 서버 개발
역할: 안드로이드 개발
2015년 2월에 졸업하고 연구실 생활을 하다가 교수님의 추천으로 한남대와 대전의 IT기업과 함께 프로젝트를 진행하게 되었다.
프로젝트 경험도 쌓고, 실제 기업에서는 어떻게 개발을 하는지 배울겸 해서 시작하게 되었는데
프로젝트가 진행되면서 기업의 참여도가 점점 낮아져서 조금 아쉬웠던 프로젝트이다.
개발한 기능 요약
처음 우리 연구실이 프로젝트에 참여 당시에는 안드로이드 개발만을 담당하였다. 하지만 한달마다 대전 - 부산을 번갈아가며 회의를 하면서
네이티브로 했다가 웹앱으로 바뀌고, UI도 이랬다가 저랬다가 바뀌는 등 프로젝트의 방향이 확실하게 정해지지 않았다.
이때부터 조금 불안했지만...그래도 프로젝트 처음이니 그러려니 했다.(하지만 프로젝트 시작 후 반년이 지났다는 사실을 들은건 한참 뒤..)
그럴 때마다 우리는 결과물을 갈아엎고 다시 만들어야 했지만 딱히 문제가 되진 않았다.
결국 반년이 지나고 10월즘에 네이티브쪽으로 기울었으나, 원래 기업에서 맡기로 했던 서버 부분이 우리가 하는 것으로 바뀌었다.
그래서 나를 포함한 3명 중 A라는 후배가 서버를 맡기로 하였고, B라는 후배와 내가 안드로이드 개발을 맡게 되면서
지옥으로 가는 프로젝트가 시작되었다
프로젝트를 하면서 좋았던 점부터 말하자면
1. 새로운 기술(나에게)인 QR코드에 대해서 알게 되었다.
QR코드 데이터 구성 요약
한남대에서 만든 QR코드는 먼저 구분자를 이용해서 4개의 데이터로 분류된다.
첫 번째는 한남대에서 만든 어플리케이션의 URL
두 번째는 웹 페이지의 HTML 소스가 들어가있다(이로 인해 QR코드의 크기가 커지고 인식률이 낮아졌다).
세 번째에는 웹 페이지 템플릿이 올라가 있는 URL(예: 구글 드라이브)이 들어있고
네 번째에는 앞선 두 번째의 HTML에 들어갈 데이터들이 다른 구분자로 구분되어 들어가있다.
결국 미리 QR코드에 HTML과 데이터를 넣어놓고 파싱하여 페이지를 보여주는 것이다.
이 데이터들이 암호화되고 압축 되어서 QR코드의 크기가 작아지고, 특히 HTML의 디자인과 기능이 강력해진다면 더 좋았을 것 같다.
QR코드를 이용해서 개발하는 것은 정말 재미있었다. 처음에는 스캐너를 자체적으로 만들려고 했지만 교수님의 의사결정으로 Zxing이라는 라이브러리를 이용해서 개발하게 되었다. Zxing은 QR코드뿐만 아니라 바코드까지 인식할 수 있는데 한남대에서 보내준 테스트용 QR코드는 크기가 너무 커서 QR코드로 인식되는게 아니라 바코드로 인식되는 문제가 있었다. 이는 QR코드 스캐너를 실행할 때 QR코드만을 스캔하도록 설정하여 해결하였으나, 크기가 워낙 커서 스캔하는데 시간이 많이 걸리게 되었다. 이후에 조금 크기가 줄어들어 인식률 자체는 많이 상승됐다.
2. HTTP통신
사실 이전에 한이음 프로젝트를 하면서 간접적으로 해보았는데, 그 때는 Bassio에서 제공해주는 함수를 사용했었다. 팀원이 만든 웹서버를 직접적으로 HTTP로 통신한 것이 이번이 처음이었다.
먼저 List<BasicNameValuePair>에 HTTP로 보낼 파라미터 이름(웹 서버와 맞춰야함)과 값을 넣어준 다음
HttpPost 객체에 Entity로 설정해주고 DefaultHttpClient 객체를 이용해서 통신할 수 있다.
서버의 리턴값을 받으려면 HttpResponse에 실행한 객체를 넣어주고 HttpEntity 객체로 getEntity() 메소드를 이용해 받을 수 있다.
HTTPS로 보낼려면 SSLSocketFactory를 이용해서 SSL인증을 해주면 된다. (모든건 AsyncTask내에서 이루어졌다)
엄청 간단하게 HTTP 통신을 할 수 있었는데(더 간단하게는 HttpURLConnection으로..) 그때는 통신을 한다는 것 자체가 신기해서 서버 담당인 팀원과 이것저것 많이 테스트 해보면서 놀았다.
그러다 파일도 업로드해보았는데 일정 크기 이상의 파일(확인해보니 4MB)을 업로드하니 제대로 전송이 되지 않았다. 이는 php.ini에서 기본으로 설정된 파일 크기가 4mb였기 때문에 이를 더 크게 늘려주면서 해결할 수 있었다.
개발 자체는 정말 재밌게 했었다. 사실 시간에 쫓기는 상황이 조금 있었지만 밤을 새면서 개발하는 것이 재밌었고 기능이 완성될 때마다 성취감이 마구 생겼다. 문제는 처음에 시간이 갈수록 프로젝트의 방향이 이상하게 흘러갔고, 프로젝트 초기부터 QR코드의 구성을 알려달라고 했지만..묵묵부답에 일단 개발을 먼저 해라고 하여.. 진행이 잘 되지 않았다. 그러다 6개월이 지나고서야 QR코드를 받을 수 있었고 데이터 파싱은 String으로 받아와 split하여 어렵지 않게 할 수 있었다.
이 프로젝트를 수행하면서 정말 힘들었던 것은 회의를 할 때마다 바뀌는 프로젝트의 방향과 UI, 그리고 팀들(기업과 한남대)간의 소통이 잘 이루어지지 않았던 것이다. 회의를 할 때마다 네이티브앱에서 웹으로 바뀌었다가 다시 네이티브앱으로 왔다가 하이브리드로 갔다가 계속 바뀌다가 결국 네이티브 앱으로 확정이 됐다. 그러다보니 당연히 UI도 계속해서 변경되었고 회의를 준비하기 위해 프로토타입을 다시 만들어야 했는데, 막상 만들어서 가면 다른 팀은 준비가 안되어서 우리팀에 대한 회의만 진행하였다(그때는 같이 진행하고 있는줄 알았지만 시간이 지나고보니 부랴부랴 만들고 있다는걸 알게 되었다).
그렇게 회의를 진행하고 돌아와서 개발을 하여 다음 회의가 되면 그전 회의 때 결정한 사항들이 틀린 것이 되고 잘못된 것이 돼버린다.....맥빠지는 상황이 많이 나와서 심적으로 조금 힘들었다...그래서 구글 그룹스를 만들어서 개발 중 발생한 이슈나 의사 결정이 필요한 것들을 공유하여 다른 팀들과 소통하려고 노력했다. 노력 결과 서로가 보는 시선이 조금씩 같아지는 것을 느낄 때 쯤(정말 몇 개월 남지 않았을 때...) 의견이 모아져서 마음 놓고 개발을 할 수 있어서 다행이었다.
프로젝트를 진행하면서 역시나 팀원들간의 소통과 협력이 얼마나 중요한지 뼈저리게 느낄 수 있었다. 그리고 서로가 다른 그림을 보고 있다면 얼마나 피곤해지는지도 알 수 있어서 회의록 작성과 문서화의 중요성도 알게 해준 고마운 경험이다. 앞으로는 정말 협업이 원활하게 이루어지도록 노력하고 또 노력해야겠다.
'프로젝트 > 팀 프로젝트' 카테고리의 다른 글
한이음 프로젝트 - LifePoint (0) | 2018.01.11 |
---|