DB 구축 및 접근 안드로이드 앱 개발

Stella Kim·2022년 9월 1일
0

Android App Programing

목록 보기
1/1
post-thumbnail

1. 프로젝트를 시작하며

1) 개발 배경 및 동기

K-POP의 위상은 날이 갈수록 높아지고 있다. 각종 연말 시상식은 실시간으로 해외로 송출되어 많은 K-POP 팬에게 화려한 무대를 선보이고 있다. 파급력 또한 점점 커져 새로운 앨범을 발매할 때마다 우리나라에서 뿐만이 아니라 전 세계적으로 주목받고 있다. 빌보드 차트와 같은 해외 유명 음원 차트 상위권에 오랜 기간 안착해있기도 한다. 또한 다양한 미디어 플랫폼이 발전한 요즘에는 음반 판매량뿐만이 아니라 음원 스트리밍 횟수를 비롯하여 Youtube, V live 조회수에서도 K-POP의 저력을 확인할 수 있다. Universe, DearU Bubble과 같은 K-POP 아티스트와의 프라이빗 채팅 플랫폼 사용자의 80% 이상이 해외 사용자일 만큼 K-POP은 이제는 국내에서만의 관심사가 아니다. 이를 증명하듯 해마다 수많은 가수가 데뷔하고, 기존의 가수들도 매 컴백마다 새로운 콘셉트를 시도하며 파격적인 변신으로 대중 앞에 나타나 눈과 귀를 즐겁게 만들어준다.

요즘은 대부분의 음원 스트리밍 사이트에서 단순히 음원 판매 및 스트리밍뿐만 아니라 다양한 서비스들을 제공하고 있다. AI 기술과 결합하여 사용자의 성향을 파악한 플레이리스트를 만들어 추천해주기도 하고, 사용자가 플레이리스트를 생성하여 다른 사용자와 함께 공유할 수 있도록 하는 서비스 또한 제공하고 있다. 즉, 사용자의 취향을 고려한 플레이리스트를 제공하기 위해 사이트마다 독자적인 서비스를 내세우며 점유율 경쟁에 뛰어들고 있다.

오랫동안 음악 감상을 취미 생활로 즐겨왔기 때문에 여러 장르의 음악에 관심이 있었지만, 그중에서도 단연 K-POP에 가장 큰 관심을 가져왔었다. 그렇기에 흥미도 높은 주제를 선정하여 애플리케이션을 개발하다 보면 즐겁게 구현에 임할 수 있으리라 생각하였다. 따라서 즐겨 듣는 곡들이 수록된 앨범 및 아티스트에 대한 정보를 간략히 출력하는 리스트와, 리스트를 선택하면 상세 정보를 소개하는 화면을 띄우는 애플리케이션을 구현해보기로 하였다.

2) 개발 목표

개발 목표는 SQL로 데이터베이스를 구축한 다음, Express 서버를 개발해 JSON 형태로 데이터베이스의 내용을 출력하는 것이다. 이후 구축된 데이터베이스에 접근하는 애플리케이션을 Android Studio를 통해 개발하는 것을 목표로 한다. 이때, 이미지 저장 경로를 사용해 데이터에 접근하고, 기본적으로 내장된 레이아웃이 아닌 커스텀 레이아웃을 제작하여 이를 적용한 커스텀 리스트를 구현하는 것을 목표로 한다.

2. 작품 개요

1) 전체 구성도


구현하고자 하는 기능을 간단히 도식화한 이미지이다. SQL 문으로 데이터베이스를 만들어놓고 Express를 사용하여 서버를 실행시킨다. 추가로 JSON 파일에서 경로를 통해 이미지에 접근할 수 있도록 구현하여 커스텀 리스트에 앨범 표지가 출력될 수 있도록 한다. 각각의 목록을 선택하면 Intent를 통해 다른 Activity로 전환되어 각 곡에 대한 상세 정보가 화면상에 나타날 수 있도록 한다.

2) 작품 설명

개발하고자 하는 작품은 GoormIDE에서 SQL 문 작성 및 Express 서버를 실행시켜 song에 해당하는 데이터베이스 테이블을 저장하고 이를 애플리케이션에서 접근할 수 있도록 한다. 안드로이드 스튜디오 상에서는 Volley, RecyclerView, CardView, ViewModel, Intent 등의 기능을 사용해 데이터베이스에 접근한 후 이를 토대로 가시성 있는 커스텀 리스트를 출력해낸다.

데이터베이스 테이블의 구성은 다음과 같다. song이라는 명칭의 테이블은 primary key에 해당하는 번호와 곡명, 아티스트, 해당 곡이 실린 앨범의 표지, 곡에 대한 짧은 설명까지 총 5개의 애트리뷰트를 가진다. 위 데이터를 가지고 리스트 상에서는 곡명, 앨범 표지, 아티스트에 대해 출력한다. 각각의 목록을 선택하면 나타나는 상세 정보 화면에서는 곡명, 앨범 표지, 곡에 대한 짧은 설명을 보여준다.

3. 설계

1) Use Case

  • GoormIDE에서 컨테이너를 실행시킨 후 개발 환경을 실행한다.
  • GoormIDE 상에 표기된 주소를 복사한 후 주소창에 입력하고, 추가로 /song을 입력해 로드하여 데이터베이스 구축 여부 및 서버 실행 여부를 확인한다.
  • Kotlin 코드상에서 해당 주소를 통해 데이터베이스에 접근하여 리스트로 데이터를 출력한다.
  • 애플리케이션 내에서 구축한 데이터베이스에 관한 내용이 출력된다.

2) UI Design

가. 애플리케이션 MainActivity

나. 애플리케이션 SongActivity

3) DB Design

가. Conceptual Design

[K-POP 정보를 한눈에]의 E-R 다이어그램이다. 해당 다이어그램은 MySQL Workbench를 이용해 만들었다. 하나의 테이블만 만들었기 때문에 Join이나 테이블 간의 관계는 존재하지 않는다. song 테이블은 id에 해당하는 번호를 primary key로 선정하고 차례대로 곡명, 아티스트, 앨범에 대한 간략한 설명, 앨범 표지에 대한 경로 속성으로 이루어져 있다.

나. Logical Design

  • 곡의 정보를 저장하는 song

4) Use Case별 Sequence Diagram

가. 애플리케이션

[K-POP 정보를 한눈에]의 애플리케이션 시퀀스 다이어그램이다. GoormIDE를 통해 서버를 실행시킨 다음, 애플리케이션을 통해 구름에서 제시된 URL에 접근하면 데이터베이스에서 레코드를 불러온다. DB에서는 레코드를 JSON 형식의 데이터로 반환하여 전달하고, Android 개발 환경상에서 구현해놓은 xml 레이아웃 형식으로 커스텀 리스트가 애플리케이션 화면에 출력된다.

4. 구현

1) 애플리케이션




5. 결론

즐겨듣는 곡들과 이를 부른 아티스트, 해당 곡이 수록된 앨범, 앨범에 대한 간략한 정보를 담은 데이터베이스 테이블을 구축하고 이를 리스트 형식으로 출력하는 안드로이드 애플리케이션을 만들어보았다. Express 서버를 개발하여 JSON 형태로 데이터베이스 내용을 출력하고 Volley, RecyclerView, CardView, ViewModel, Intent 등을 사용하여 데이터베이스에 접근하는 어플리케이션을 개발하였다. 어플리케이션에서 상에서는 커스텀 리스트로 데이터를 볼 수 있도록 하였고, 각각의 아이템을 클릭하면 상세 페이지를 출력할 수 있도록 하였다.
향후 이 과제에 대해 개선할 수 있다면, 데이터베이스 테이블 상에 부가 설명으로 적어두었던 내용들을 조금 더 보충하고 싶다. 안정적인 기능 구현을 목표로 삼았기 때문에 실질적인 내용 측면에서는 심혈을 기울이지 못했던 부분이 아쉬웠다. SQL 문 상에서 보다 더 가치 있는 데이터베이스 테이블을 구축해놓는다면, 더 의미 있는 애플리케이션이 될 수 있을 것 같다. 이는 시간 투자의 문제이기 때문에 조금 더 여유가 있을 때 구현 내용을 확장해나가고 싶다.
이번 프로젝트를 통해 구축한 데이터베이스의 내용들을 애플리케이션 상에 출력해낼 수 있었다. 이를 응용한다면 관심 분야 및 취미뿐만 아니라 개별적으로 프로젝트를 진행하면서 모아온 내용 혹은 공부를 하면서 정리해두었던 기타 자료들을 개인만의 레이아웃 구성으로 출력할 수 있을 것이다. 또한 조금 더 욕심을 낸다면 단순히 데이터 출력에 그치지 않고 이를 주제에 따라 xml 파일을 통해 효과적으로 시각화할 방법을 고안해볼 수 있으리라 예상한다.

6. 자체 분석 및 평가

동영상 강의와 실시간 강의, 그리고 기말고사 문제로 출제되었던 내용을 프로젝트로 진행하였기 때문에 이번 텀 프로젝트를 구현하면서는 큰 어려움은 없었던 것 같다. 게다가 추가로 구현해야 할 부분 없이 한 학기 동안 배운 내용들을 활용해 단순히 리스트를 애플리케이션에 출력하면 됐기 때문에 빠르게 프로젝트를 마무리를 지을 수 있었다.
1학기 때 데이터베이스를 수강했기도 했고, 데이터베이스 과목의 텀 프로젝트에서처럼 복잡한 데이터베이스 구축까지는 필요 없었기 때문에 SQL 문 작성도 그다지 오래 걸리지 않았고, 속도감 있게 구현할 수 있었다. 비록 Android Studio 개발 환경에서 버전 차이로 인한 오류 발생이 몇 번 있었지만, 구글링을 통해 금방 해결할 수 있었기 때문에 크게 힘든 점은 없었던 것 같다.
프로젝트에 대한 예시로 실시간 강의에서 SongList를 들어주셔서 주제가 겹치는 부분에 대해 걱정이 되긴 했지만, 데이터베이스를 직접 구축할 만큼 잘 아는 분야가 아무래도 음악밖에 없다는 생각이 들어 소신껏 프로젝트를 진행해보았다. 그리고 개발 내용에 대한 보고서를 작성해본 경험이 있어서인지 막힘 없이 술술 진행할 수 있어서 그만큼 약간의 여유와 보람도 느꼈던 것 같다.
시간적 여유가 더 있었다면 미학적으로도 훨씬 더 완성도 높은 애플리케이션을 구현해내고 싶었지만, 이번 프로젝트에서는 기본적인 기능 구현에만 충실히 하는 것에 그쳤다. 이후의 과정들에 대해선 방학을 활용해 추가로 진행해보고 싶다고 생각했다.

코드

자세한 코드는 Github에서 확인할 수 있다.

profile
취업 준비 용으로 사용했던 기술 블로그입니다. 이제는 업로드 거의 안 할지도..

0개의 댓글