🖊생활/✒️프로젝트 회고

[프로젝트 회고] 늦은 프로젝트회고....

아무루 2022. 5. 28. 14:36

3번째 팀프로젝트 회고

결과

소스코드

기술

구분 내용
팀원 루이, 케이, 본인
IDE Android Studio
언어 Kotlin
아키텍처 mvvm
Bulid Gradle
문서 git, notion
형상관리 git, github
학습 내용 Flow, Room, StateFlow, RecyclerView, kotlinx.Serialization, form data, lottie animation,tab layout

학습 내용

  • live data vs state flow
    • 문제
      • 처음에는 둘이 같이 사용을 하려고 시도 하였는데, 같은 기능을 하는 기술을 두개를 혼용할 필요가 없다고 생각해서 State Flow로 변경하는 작업을 하였고 그 와중에 State Flow 같은 경우 live data처럼 옵저버를 이용하여 관찰하는게 아니고 lifecycleScope를 이용하고 repeatOnLifecycle를 사용해야한다는 것을 알게 되었는데 fragment에서 사용할때는 조금 다른 것을 알게됨
    • 해결
      • 경고문을 확인하고 공식문서를 찾아본 결과 fragment에서는 viewLifecycleOwner에 있는 lifecycleScope와 repeatOnLifecycle를 사용해야한다는 것을 알아서 적용하였다
  • 나만의 메뉴에 추가 삭제
    • 문제
      • 모든 기능을 2주안에 구현하는 것은 힘들다고 판단 나만의 메뉴 기능은 클라이언트에서 처리가 가능할거 같아서 백엔드분들과 협의를 해서 Room을 이용해서 구현해보기로 결정하였고, Room을 처음 이용하는 것이기 때문에 학습이 필요하였다.
        • 해결
      • 일단 공식문서로 룸을 학습하고 SQLite와의 차이를 학습을 진행한후에 Room을 적용하였고 Koin과 함께 사용하는데 무리없이 진행할 수 있었다.
  • vs 학습
    • Gson -> Seralization, Hilt -> Koin, Glide -> Coil로 바꿔어서 새로운 기술을 적용해보고 차이를 분석
    • Gson -> Seralization
      • 일단 널리 알려진 차이는 Gson은 자바 Seralization은 코틀린 친화적이고 Gson은 null이 들어 올 수있고 기본값이 적용이 안되지만 Seraliztion은 다 적용이 되고 앞으로의 확장성도 기대가 된다는 차이가 있고, 반대로 Gson은 오래되었기에 자료를 찾기 쉽지만 Seralization은 자료가 많이 없었다.
        • 사용
          • 처음에는 Gson이 조금 더 익숙해서 데이터를 받아오거나 data class를 만들때 헷갈려서 고생을 했지만, 방법을 알고 익숙해지니 지금 단계에서는 큰 차이점을 느낄 수는 없었다.
        • 결론
        • 앞으로 더 큰 기능을 구현해야하거나 서버쪽과 지금처럼 실시간으로 소통을 할 수 없는 상황이라면 Seralization이 안정성이 높다고 판단되기에 Seralization에 익숙해지는게 좋을 거 같다.
    • Hilt -> Koin
      • 둘의 큰 차이는 Hilt는 컴파일 타임에서 DI를 하고 Koin은 런타임에서 DI가 진행이 된다는 점이다. 그리고 Hilt에 비해서 Koin이 조금 더 적용이 쉽다는 차이가 있다.
      • 사용
        • 역시 Hilt부터 학습을 진행해서 그런지 Koin도 처음에는 불편하게 느껴졌다. 하지만 익숙해지니 Koin이 확실히 Hilt에 비해서 DI 추가가 쉽다고 느꼈고, 적용에도 무리가 없었다.
      • 결론
        • 역시 아직까지는 큰 프로젝트가 아니라 둘의 명확한 차이를 느끼기에는 너무 이르다는 생각을 했지만, 현업으로 가거나 큰 어플을 만들때나 또 배포를 진행하게 되어 이용자가 생긴다면 컴파일 타임에서 미리 에러를 찾아 예방할 수 있고 어플 성능에 영향을 덜 주는 Hilt의 사용에 익숙해지는 것이 더 낫지 않을까라는 생각을 하였다.
    • Glide -> Coil
      • Gilde는 안정적이고 레퍼런스 자료 많다 Coil은 Glide에 비해 가볍고 빠르지만 Glide에 비해 안정성 떨어진다.
      • 사용
        • 이 둘은 사용법에 큰차이가 없어서 금방 익힐수 있었고, 적용도 빠르게 해볼 수 있었다.
      • 결론
        • 역시나 내가 직접적으로 둘의 차이를 크게 느낄 수는 없었다. 하지만 큰프로젝트라면 역시 안정성을 위해서 아직까지는 Glide가 낫겠다 라는 생각을 하였고, 작은 프로젝트거나 성능을 올려야하는 프로젝트라면 Coil을 적용해보는 것도 좋을 듯하다.

회고

이번 프로젝트 기간은 사실 개인 학습 기간이라 팀이 주어지지 않았지만, 감사하게도 루이와 케이가 도움을 주셔서 함께 즐코할 수 있는 2주가 되었던거 같다.
아무래도 Android 부분은 나혼자 진행을 하다보니 자유롭다는 장점이 있었고 git이나 협업에 대해서 고민을 덜 하게 되어 구현에 집중을 할 수 있었다.
그리고 루이와 케이 덕분에 백엔드 분들과도 친해 질 수 있어서 아주 좋았던 2주였다.

하지만 2주라는 기간이 짧아서 주어진 미션을 모두 구현하지 못한것이 아쉽고 나중에 개인프로젝트가 필요하다면 이 프로젝트를 디벨롭시켜서 진행해보아도 좋을 듯하다는 생각을 하였다.

우선 코테부터 공부하자