[회고록] 첫 넘블 챌린지 참여

나제·2023년 4월 12일
0

코틀린 공부하고 앱 개발 시작한지 1년
매번 챌린지나 프로젝트를 찾아보는데, 내 정보력의 부족도 있겠지만 안드로이드 앱 개발 관련된 것도 적고 그 중 Kotlin은 더더욱 없었다...

(Kotlin 말고 React로 시작했더라면...)

이전에 넘블을 보면서 android kotlin 은 거의 없길래 React Native라도 해볼까 하는 생각도 했었지만 여러 일정 문제에 해보지도 않은 React라 포기하고 있었다.
그 와중 Kotlin으로 앱 제작하는 챌린지가 보였고 지원하고 생각하자는 마인드로 지원했다.

[챌린지]Kotlin과 GPT3 API를 활용한 개인 맞춤형 모바일 Chatbot 만들어보기

챌린지를 시작하고 우선 구현 조건을 보았다.

필수사항

  • Kotlin으로 작성합니다.
  • Android 6.0 부터 지원합니다.
  • 채팅화면은 RecyclerView로 제작합니다.
  • 이미 대화한 내용은 SQLite를 이용하여 저장하고 화면에는 SQLite데이터베이스를 조회하여 보여주는 방식으로 구현해주세요. (Room 을 이용하셔도 됩니다.)

필수사항을 보았을 때, 딱히 문제될 거 같아 보이는 부분은 없었다.
Kotlin 챌린지니까 Kotlin 쓰는건 당연하고,
RecylcerView 사용은 Android 처음 공부할 때 해본 적이 있고,
Room도 활용해본 적이 있으니까.
또한 GPT3 API기에 Retrofit을 이용한 통신이 필요할거라 생각했고, 이전에 한 번이지만 restful API를 통한 개발을 해보았기 때문에 어렵지 않게 구현할 수 있을 것 같았다.

챌린지를 진행하다가 발생한 문제점

openAI에 API를 요청을 계속 보내는데 계속 오류만 돌아왔다.
처음에는 Bearer 을 잘못 붙여서 오류. 그 다음은 파라미터 오류.
두 가지 문제를 해결해도 계속해서 오류가 발생했다.

AuthInterceptor 라는 걸 찾아서, response error 코드를 보기 전까지 계속 헤매고 있었다.
AuthInterceptor를 구현하고 response error 코드를 보았을 때, 사용량을 초과했다고 하길래 무슨 소린가 했다.

해당 api 를 사용해 본 적도 없고, 분명 챌린지 공지에 가입해서 무료 크레딧을 받을 수 있다고 되어 있었으니까.
여러 가지로 해결방안을 찾아봤지만 해결방안을 찾을 수 없었고, 해당 문제에 더 이상 시간을 소모하기엔 시간이 부족했다.
포기하고 그냥 $5 결제해서 진행했다.
그냥 빠르게 결제해서 프로젝트를 진행했으면 좀 더 시간적 여유가 있지 않았을까 하는 생각이 든다.

배운 점

API를 사용할 때, 오류 원인을 파악하려면 AuthIntercepter를 이용하여 오류 메시지를 볼 수 있다는걸 새롭게 알게 되었다.
이전에는 백엔드 개발자랑 실시간으로 테스트하면서 오류 메시지를 알려줘서 필요한지 몰랐는데, openAI api 같은걸 쓰려면 필요할 거 같다.

개발 속도의 약간의 증가?
recyclerView를 활용할 때, RecyclerView.Adapter를 썼었는데, ListAdapter라는 걸 새롭게 구현할 수 있게 되었다. RecyclerView.Adapter 보다 ListAdapter가 좀더 유연한 처리가 되는 것 같다.

아쉬운 점

개발해야 하는 앱의 규모가 작긴 했지만, 기간이 너무 짧았기도 하고 여러 가지 일이 겹쳐 챌린지에 할애할 수 있는 시간이 너무 적었다...
3월 31일 시작 ~ 4월 13일 종료 (14일)
31일 금요일에 오티를 하고, 3일 월요일에 첫 팀 회의를 하고.

주말에 간단하게 어떻게 개발을 할지 계획하고 프로젝트 폴더 구조만 만들어놨다.
그 다음 주 수요일 저녁에 IT학회가 있고, 금토일 풀타임으로 해커톤이 있다보니 화요일, 목요일 그리고 수요일 낮 정도 밖에 시간이 없다는 걸 깨달았다.
설상가상으로 해커톤에서 한 프로젝트를 이어가기로 해, 마감주에도 시간이 거의 없었다.
심지어 오류로 인하여 오류 해결을 위해 생각보다 많은 시간이 들어가게 되었다.

개인사정으로 시간이 너무 부족해짐을 깨닫고, 추가 기능 구현은 사실 상 포기 상태였고, 필수 구현 기능만 깔끔하고 빠르게 개발하기로 했다.

chat을 api에 보냈을 때 다음 chat을 또 보내서 발생하는 문제를 방지하거나, chat view에 카카오톡 처럼 날짜를 구분 짓고, 시간을 표시하는 등의 추가 기능도 구현해보고 싶었지만 어쩔 수 없이 포기했다.

최대한 기능 별로 코드를 분류하고 싶었는데, 시간에 쫓겨서 급하게 짜다보니 api랑 database랑 처리하는 코드가 같은 클래스 안에 들어가게 되었다. 이 코드들도 분리하는게 좋을지 그냥 쓰는게 좋을지는 모르겠지만, 우선은 기능별 분류를 깔끔하게 해보고 싶었는데 약간 아쉽다.

마무리

세세하게 들어가면 시간은 핑계긴 하겠지만, 챌린지 기간이 좀 더 길었으면..하는 바램은 있다.

앱 개발 공부를 시작한지 얼마 안되서 잘 모르지만, 앱은 웹이랑 다르게 뷰 구현보단 API나 Room 내부 기능 구현에 중점을 두고 있는 느낌이었다. 이전에 앱 프론트엔트 테스트를 봤을 땐 뷰 구현에 중점을 두고 있었는데, 뷰 구현에 중점을 두는 챌린지 같은 것도 재밌을 것 같다. 예를 들어 마켓컬리 뷰 클론코딩이라던가..
(안드로이드 kotlin 개발자나 희망자가 너무 적은 거 같아서 안드로이드 kotlin 관련 챌린지가 또 나올지는 모르겠다..ㅠㅠ)

다음에 이런 챌린지가 있다면 좀더 시간적 여유를 가지고 해보고 싶다.

profile
안드로이드 신입 개발자!

0개의 댓글