Filters - Make your own filters
앱 이름: Filters - Make your own filters
팀: Team Bartender3 (송효섭 , 김현식, 이희종)
제작비: 0
제작 기간 : 약 8개월 (+2개월 코르도바)
맡은 파트(자세한 것은 깃에서 확인):
레이아웃, 데이터 베이스, 기타 잡 - 김현식
카메라(camera2), 레이아웃 기타 잡- 이희종
카메라 필터(쉐이더) - 송효섭
깃 주소 : https://github.com/gmlwhdtjd/Filters
플레이 스토어: https://play.google.com/store/apps/details?id=com.teambartender3.filters
프로 젝트 소개
프로젝트의 시작은 약 2017년 9월 정도로 첫 목표는 웹앱이였다. 코르도바를 이용한 하이브리드 앱을 만들어 사용자가 필터를 직접 만들고 가능하면 그 필터를 사용자들끼리 서로 공유할 수 있게 하는 것이 목표였다. 하지만 코르도바에서 카메라를 세밀하게 다루기 위해서는 결국 네이티브 언어로 ios와 android 버전을 각각 만들어야 했기에 java를 사용하는 안드로이드 버전으로만 제작하기로 프로젝트 방향을 바꾸었다. 그리고 약 8개월 후 인 6월 25일에 Filters를 플레이 스토어에 등록하였다. 초기 프로젝트 이릉은 Bartender였다.
앱 소개
기존의 카메라 앱들은 여러 종류에 필터를 만들어서 사용자들이 그 필터들을 사용하는 방식이였다. 하지만 우리는 사용자가 직접 필터를 만들 수 있으면 좋지 않을까라는 생각을 하였고 이 아이디어를 앱으로 만들었다. 실시간으로 필터의 값들을 바꾸어 마음에 드는 필터를 만들 수 있고 그 필터를 저장하여 다음에는 별도의 생성 과정 없이 사용할 수 있도록 하였다.
이 화면은 필터를 직접 제작 하는 화면으로 하단의 여러 카테고리안에 속성값들을 변경하여 실시간으로 마음에 드는 필터를 제작할 수 있다.
필터를 적용하여 사진을 촬영하는 사진이다.
앱 개발에 대해 아쉬웠던 점
1. 다양하지 못한 필터
원래 계획헀던 것은 여러가지 방식으로 필터를 제작할 수 잇었다. Original Filiter 방식, Retro Filter 방식 등 여러가지 방식으로 제작하는 것이 목표였지만 생각보다 개발 기간이 길어지고 개인의 사정들로 인해 아쉽게도 한가지 방식으로만 필터를 제작 할 수 있었다. ( 본인은 곧 군대를 가고 나머지 팀원 두분은 취업 준비로 상당히 바빠졌기 때문에.. )
2. 디자이너의 부재
이전에 했던 게임 프로젝트와 동일한 문제였지만 팀원 모두 프로그래머다. 학생들이라 넉넉치 않은 자금에 외주를 맡기긴 힘들었고 디자이너 팀원을 구해보려고 했지만 실패하였다. 다행인것은 게임과 달리 높은 수준의 디자인 능력을 요구하지 않았기에 어느 정도 틀은 갖추었지만 약간 아쉬운 부분이 있다.
3. 최적화 문제
우리가 만든 앱은 저사양 폰에서는 엄청난 렉이 발생한다. gpu에 상당한 무리가 가는데 최신폰에 경우 무리없이 돌아가지만 저사양 폰의 경우 정상적인 촬영이 힘들 정도이다. 최적화를 위해 필터의 연산을 최대한 줄이고 레이아웃의 오버드로부분을 많이 줄였지만 많이 부족하였다...
4. 깃 관리
코드 리뷰를 하지 않아 메소드나 변수 이름이 보기 좋지 않았고 중복되는 부분도 있었다. 또한 커밋은 후반으로 갈수록 제대로된 설명 없이 커밋하였다.... 브렌치의 경우 기능에 따라 새로 만들거나 닫지 않고 한가지의 브랜치를 거의 썻다. 후반에 가서야 기능에 따라서 나누기 시작하였다.
배운 점
1. 첫 안드로이드 개발 경험, 안드로이드 지식들
프로젝트를 시작하기 전에는 자바는 대학교 수업 시간에 들었던 자바 프로그래밍 수업 때 배웠던 것 밖에 없었고 안드로이드 앱 개발 경험은 없었다. 프로젝트를 진행 하면서 안드로이드 스튜디오의 전체적인 개발 방법에 대해 알았으며 안드로이드 앱이 어떻게 만들어지는지 알게 되었다. 또한 수업으로만 배웠다 java를 직접 써봄으로써 객체 지향 프로그래밍에 대해 더 자세히 알게 되었다. 처음으로 만든 안드로이드 앱으로는 만족스러웠다.
2. 깃
저번 게임 프로젝트때에 깃을 사용하려고 했지만 언리얼을 깃에서 관리할때 충돌이 너무 많이 발생하였고 경험자가 없었기에 그 충돌을 처리하기 힘들었다. 아마 프로젝트가 실행될때마다 생기는 인스턴스 값들이 문제였던거 같았다. 이러한 과거가 있지만 안드로이드 스튜디오 프로젝트는 깃을 사용하기 편했고 간단했다. 처음 사용해본 깃은 신세게였다.. 여러 방향으로 개발을 진행해도 깃을 통해 합칠 수 있으며 버전 관리가 되기 때문에 삽질을 하다가 전으로 돌아가기 편했다. 버전 관리 시스템은 프로젝트에 필수라는 것을 깨달았고 다음에 다른 프로젝트를 진행하게 된다면 꼭 깃을 사용할 것 이다.
3. 오픈 소스 라이브러리 사용
이번 앱을 개발 할때 오픈 소스 라이브러리를 많이 사용하였다. 오픈 소스 라이브러리는 사용하기 간편했고 개발 기간을 많이 줄여주었다. 그리고 가끔 오픈 소스 라이브러리를 모듈화 하여 우리 앱에 맞게 수정하는 과정에서 코드 해석 능력 향상에 큰 도움이 된거 같다.
4. 영어를 공부를 좀더 하자
앱을 개발하면서 가장 도움이 되었던 것은 stack overflow와 안드로이드 api문서 였다. 한글로 된 자료는 정말 기본적인 것 밖에 없었으며 영어로 된 자료들이 큰 도움이 되었다. 어느정도의 영어가 되기에 큰 문제가 없었지만 영어를 논문 쓸 정도 수준까지 올리면 도움이 되겠다는 생각이 들었다.