본문 바로가기
졸업프로젝트

#00 졸업프로젝트 시작

by Soo-minJeon 2022. 5. 2.

티스토리 첫 글을 졸업프로젝트에 관한 글로 시작하게 되었다. ㅎㅎ

내가 재학중인 덕성여자대학교 컴퓨터공학과는 졸업요건에 '졸업프로젝트 참여'항목이 있다.

1년 내내 진행되는 프로젝트이기에 중간중간 느끼고 배운 것을 정리할 필요가 있을 것 같다는 판단이 들어 카테고리를 만들었다.


우리 팀의 주제는 '감정분석 기반 영화추천 서비스'이다. 

 

✅ 간단 소개

사용자가 영화를 보고 있으면 일정시간 간격으로 사용자의 감정과 집중도를 분석하고

그 결과와 영화 장면을 분석한 결과를 비교하여 영화를 추천하는 서비스이다.

 

✅ 사용기술과 선택 이유

🌐 앱/코틀린(안드로이드 스튜디오)

1. 코틀린은 문법이 간결하고, 비교적 직관적으로 코드를 작성할 수 있다는 장점이 있다.

2. 라이브러리가 풍부한 자바의 코드를 쉽게 코틀린으로 변환할 수 있다.

3. 컴파일 속도가 자바보다 빠르며

4. 국내의 많은 회사들이 코틀린으로 개발하는 것을 선호하고 있어, 코틀린으로 개발 경험을 쌓는 것이 낫다고 판단하였다.

 

+) 리액트 사용도 고민해보았는데

리액트를 사용하고 싶었던 이유 중 가장 큰 이유는 안드로이드와 ios 모두에서 작동하는 하이브리드 앱을 만들 수 있다는 점이었고, 또 다른 이유는 디자인 면에서 Material UI, Ant Design, Chakra UI, React-Bootstrap, Reactstrap 를 활용하면 보다 완성도 높은 화면을 완성할 수 있다는 점이었다.

리액트의 단점은 우선 빈 화면을 로드하고, 마운트를 통해 코드를 반영한 화면을 다시 한번 더 로드하는 과정을 거쳐서 약간의 지연시간이 소요된다는 점이었는데, 우리의 프로젝트는 사용자 감상모습을 실시간으로 분석해야 하고 파이썬 코드와의 통신도 빈번히 일어나므로 더 이상의 불필요한 로딩시간은 배제해야 했으므로 리액트를 사용않기로 했다.

 

🌐 MongoDB

관계형 DB를 사용하느냐, nosql을 사용하느냐를 긴 시간 고민했었다. 

관계형 DB는 오랜기간 사용된 만큼 신뢰성이 높고, 데이터 구조 상 데이터의 무결성(정확성, 일관성, 유효성)을 보장해주며 무엇보다 데이터의 분류/정렬/탐색 속도가 빠르다는 장점이 있다. 처음에는 이러한 이유로 관계형 DB를 사용하려고 했으나, 백엔드를 맡은 다른 팀원과 DB를 설계하는 과정에서 개발하면서 변경될 수 있는 부분들이 많다고 판단했다. 예를 들어 사용자의 감정의 폭이 가장 큰 장면을 계산한다고 하면, 그 계산 과정에서 DB에 저장되어있어야 하는 정보들이 뭐가 있는지에 대해 로직을 세세하게 짜놓지 않았기 때문에 개발하는 과정에서 유동적으로 추가할 column들이 많은데, 변경사항이 생길 때 마다 DB를 수정하는 것에 대한 부담이 컸다. 관계형 DB의 여러 기능(join, cascade 등)을 사용 못하더라도 유연하게 DB를 수정할 수 있는 nosql을 선택하는 것이 이번 졸업 프로젝트에 어울린다고 생각해서 nosql을 선택했다.

 

nosql중에서도 MongoDB를 사용한 이유는, 노드와 통신을 할 때 JSON객체의 형태로 쉽게 데이터를 저장하고 꺼내올 수 있기 때문이다.

 

🌐 openCV(아이트래킹에 사용)

사실 처음에는 seesoSDK를 사용하고자 했다. seeso SDK를 사용하면 눈의 초점이 어디를 향해 있는지에 대한 자세한 결과를 얻을 수 있는데, 본 프로젝트에서는 단순히 초점이 어디를 향해 있느냐를 알고싶다기 보다는 눈이 향한 방향을 통해 전체적으로 사용자가 영상에 집중을 하고 있는지 아닌지, 졸고 있는지 아닌지 의 정보를 얻으려고 아이트래킹을 사용하는 것이기에 open cv를 사용해서 좀 더 프로젝트에 최적화된 정보를 얻고자 했다.

 

이외에도 소통방식에 활용하는 프로그램들에 대해서도 할 말이 좀 있지만 추후에 더 얘기 하는 것으로 하겠다


일상 블로그 쓰는 건 쉬운데 개발 블로그 쓰는 건 참 힘들다는 것을 느낀 오늘 ... 

다음 글은 좀 더 알찬 내용으로 작성해야겠다는 생각이 든다