Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
@JeongJinyong 11시 59분에 커밋했는데 실수로 main브랜치에 머지하여 다시 올립니다.
2주차 Task
이번 주는...?
이번 주에 가장 제일 잘한 일을 꼽자면 Gson -> koltinx-serialization으로의 마이그레이션 작업을 꼽을 수 있을 것 같습니다. 많은 작업과 스스로 만들어낸 일 덕분에 이번 주는 피곤하였지만 그래도 제 자식과 같은 앱이 잘 성장한 것 같아서 기분은 좋은 한 주인 것 같습니다...그럼 이번 주 작업도 요약 함 해보겠습니다.
1. 정처기 공부
그거 아세요? 올해 안에 정처기를 따지 못하면 군대에 가야하는 슬픈 전설을...
정보처리기능사를 올해 안에 꼭 따야 회사에서 배정받아놓은 헌역 산업기능요원을 할 수가 있기 때문에 이번 마지막 시험에서 꼭 붙어야합니다. 그렇기 때문에 원래같으면 공부 안하고 보러 갔을테지만 열심히 기출문제와 개념공부를 진행했습니다.
전체적으로 쉬웠지만 SQL고급 문제와 워터링홀이 뭔지 물어보는 문제와 같은 이상힌 문제도 있어서 애를 먹었던 것 같습니다..그리고 혹시 ATM프로토콜에 대해서 아시나요..? 전 이번에 정처기 공부하면서 처음 알았습니다..
암튼 틈틈히 남는 시간에 잠도 계속 기출문제 풀고 개념들을 때려박고 하느라 자꾸 저를 힘들게하고 괴롭히던 친구인데 오늘 정처기 시험이 끝나서 홀가분하네요 :)
2. 회사 앱에서 기술부채 갚아나가기
이번 주는 Appsflyer SDK문서도 읽고 SDK설치해서 deeplinklistener로 resut값을 가지고 유의미한 값을 수집하고 해보려했는데 현재의 경우에서 딥링크 동작만 제대로 된다면 result값을 따로 mixpanel에 적재하거나 하지 않아도 될 것 같아 모두 구현한 상태에서 다시 구현한 부분을 지워버리는 결정을 내렸습니다.
요번 주는 기능 개발은 요 정도로 짧게 하고 기존에 있었던 기술부채를 갚아나갔습니다. 작업한 내용을 볼까요?
2-1 Jetpack Compose DesignSystem
이번 주부터 Jetpack Compose DesignSystem을 차근차근 구현해주기 시작했습니다!
기존 우쥬 앱은 모두 XML로 구현하였기 때문에 우선 Compose로 Design System을 만들고, feature모듈 별로 마이그레이션 해나가면 xml to Compose 작업이 쉬울 것이라 판단하였고 Compose migration작업의 시초로 Design System을 Compose를 사용해 새로 구현하기로 했습니다.
이번 주에는 Color, Typography, Theme을 구현해주고 Dialog Component를 구현해주었습니다.
사이드 프로젝트로 Compose를 잠깐씩 맛보긴했지만 제대로 각잡고 작업하다보니 리컴포지션을 고려하며 설계하고 구현하는 것이 쉽지 않았습니다.
앞으로 차차 익숙해지겠죠..? 그런 날이 오길 바라며..열심히 공부해야겠습니다.
2-2 Gson -> Kotlinx-Serialization Migration
이번 주에는 또한 Gson에서 Kotlinx-Serialization으로 마이그레이션해주는 작업을 진행하였습니다.
kotlinx-serialization에 대해 모르시는 분이 있으실까봐 짧게 요약하자면 kotlinx-serialization은 Json형식의 데이터를 다루는 Kotlin에 적합한 직렬화 라이브러리입니다. kotlin에 친화적이고, moshi보다 빠르고, 기존에 Gson에서 지원하지 않았던 data class default value이슈와 null을 허용하지 않는 프로퍼티에 null값이 들어왔을 때 런타임에 에러가 나는 등의 문제들을 해결해줄 수 있습니다.
Moshi라는 선택지도 있었지만 여러 글과 벤치마킹 결과를 보고 최종적으로 kotlinx-serialization을 도입하기로 결정하였습니다.
�
+ Kotlinx-Serialization이 궁금하시다면 아래 글들을 확인해보세요!
이 부분은 data모듈 부분을 통째로 마이그레이션하다보니 조금 무게가 있는 작업이었는데요.
data모듈을 통째로 마이그레이션하는만큼 모든 네트워크 작업이 제대로 작동하는지 작업 후에 자체검수하고 에러가 나지 않게 매우 조심조심하며 4번 5번 체크하며 작업을 진행하였습니다.
오늘을 기준으로 우쥬 안드로이드 앱에서 사용되는 api가 60여개 정도 되는데 이들 모두 정상작동하는지 체크하려니 작업시간보다 검수하는 시간이 더 오래걸렸던 것 같습니다... :)
여담으로 이 작업을 위해 목요일과 금요일동안 잠을 자지 않고 밤을 새어버렸답니다..후후 :) 잠은 죽어서 자는 것이라고 배웠습니다.
2-3 접근제어자 붙혀주기
별거아닌 부분이지만 접근제어자를 붙혀주는 것은 매우 좋습니다. 당연하지만 외부에서 내부 구현에 함부로 접근하지 못하도록 은닉화, 캡슐화해줄 수 있기 때문이죠.
제가 우쥬 앱을 혼자 개발할 때에 빠른 개발을 핑계로 접근제어자를 붙혀주지 않고 있는 부분이 몇몇군데 존재하였고 접근제어자를 빼놓은 부분들에 각각 멤버의 상황에 알맞는 접근제어자를 붙여주는 작업도 진행해주었습니다.
3. 사이드 프로젝트
제가 옛날옛적 고등학교 2학년 때 실제로 기획, 디자인, 개발까지 모두하여 플레이스토어에 출시했던 카드수집 게임인 DSM-TCG라는 앱이 있는데요.
현재는 플레이스토어에서 내려와있고 이 앱을 개발실력이 훨씬 발전한 지금 더욱 더 좋은 코드 퀄리티로 구현할 수 있지 않을까 생각이 들어 새로 1인 사이드 프로젝트 개발을 시작하게 되었습니다.
현재는 프로젝트 세팅과 data모듈, doamin모듈을 구현하며 각각 api하나씩 테스트로 만들어놓은 상태인데요. 그 과정에서에서 Kotlinx-Serialization을 먼저 적용해보고 kotest로 역직렬화 unit test도 작성해보며 Kotlinx-Serialization를 미리 사용해볼 수 있었습니다.
덕분에 위에서 언급했던 회사 앱에서 Gson에서 Kotlinx-Serialization Migration작업을 순조롭게 구현할 수 있었던 것 같습니다 :)
이번 주 회고
이번 주에는 회사 일(기술부채 작업), 정처기 공부와 여기에는 적지 않았지만 F-Lab멘토링까지 진행하고 멘토링 내용들을 복습하느라 정신없는 한 주를 지냈던 것 같습니다.
한 주 안에 많은 작업을 하며 조금은 무리하며 느꼈던 것은 시간은 정말 소중하다는 것과, 저는 아직도 너무 부족한 사람이라는 생각이 들었습니다.
일주일이라는 시간 안에 아주 많은 작업들을 진행하고 작업을 하면서 느낀 것은 시간은 한정적이고 제 몸은 하나이다보니 무리를 할 수 밖에 없더라고요.
거기다 주말에 사이프 활동까지 하다보면 더욱 더 평일과 주말에 성장에 할애할 수 있는 시간이 부족하다고 느꼈습니다. 근본적인 문제는 제 머릿속에 안드로이드 뿐만 아니라 모든 소프트웨어적인 부분에서 성장하고 싶은 욕심도 있어서 개발과 관련된 모든 부분에 대해 공부하려는 욕심 때문에 무리하게 될 수 밖에 없었던 것이 근본적인 문제 같다는 생각이 들었습니다.
성장에 대한 욕심을 조금은 내려놓고 무리하지 않는 선에서 해야할 필요성이 있다는 것을 느끼고 그래야 지속가능한 발전을 해야할 수 있다고 생각이 드는 동시에 저는 또 너무나도 기술적으로 부족하다는 생각에 사로잡혀 부족한 부분에 대한 공부를 모두, 빨리 하고싶은 욕망이 더 쎄서 무리하게 되는 것 같네요... 지금 당장은 제 성장욕구룰 이길 적절한 해결방안이 떠오르지 않아 이에 대한 해결책에 대해 더 생각해봐야할 것 같습니다.
혹시 이 글을 읽으시는 분들 중에 좋은 해결책이 있거나 같은 사례가 있었다면 알려주시면 감사하겠습니다.
그럼 이번 한 주도 열심히 살았으니 다음 주도 우리 모두 화이팅입니다! :)