관리 메뉴

사과하는 제라스

[회고] Apple Developer Academy @ POSTECH 3기 14주차 회고 본문

Apple Developer Academy @ POSTECH

[회고] Apple Developer Academy @ POSTECH 3기 14주차 회고

Xerath(제라스) 2024. 6. 12. 05:30

목차

    728x90
    반응형

    서론

    안녕하세요. 늦은 회고하러 돌아온 개발자 제라스입니다~!👋🏻 🤖 👋🏻

     

    회고가 늘 늦는 것 같은데 하하하... 이번주는 WWDC가 있었으니 ㅎㅎ

    인정티비잖아요...!!??

     

    작년에 이어서 올해는 좀 더 제대로 WWDC를 즐겼던 것 같습니다.

     

    Apple Developer Academy@POSTECH에서 준비한 WWDC Watch Party에서 다른 러너 분들과 함께 즐기고 왔는데

    너무 재밌는 시간이었습니다 ㅎㅎ

     

    뭔가 혼자 집에서 모니터로 볼 땐 '우와 신기해!', '이런 것도 나오는구나~' 정도에 그쳤지만

    올해는 다같이 새로 나올 것들에 대한 얘기들도 나누고 새로 얻어갈 것들을 함께 얘기 나누고서 보니 충분히 더 재밌게 볼 수 있었던 거 같네요!

    기타를 넘어서 파쿠르까지 보여준 크레이그...당신이 짱이야!

    이번 떱떱을 통해

    애플이 확실히' Apple Intelligence를 통한 On-Device AI 도입'과 '개인 정보 보호'에 아주 많은 신경들을 썼구나~

    그리고 'Calculator' 앱의 변화와 'Math Note' 기능을 탑재한 Apple 기본 앱들이 아주 재밌었던 것 같습니다!

     

    너무 할 말이 많지만...!

    자세한 WWDC24 후기는 추후에 15주차 회고 혹은 개별 후기로 남겨보겠습니다!

     

    지난주에 14주차에 학습했던 것들을 기반으로 회고를 시작해보겠습니다!

    들랑날랑의 Firebase 도입기(라고 쓰고 구조 얘기만 하기)

    지지난주 금요일에 MC2 프로젝트가 끝나고서 추가로 진행하기로 한 '들랑날랑'의 기능 추가 & 리팩토링!

    그 중 제가 맡은 건 서버와의 연동이었어요!!

     

    하.지.만 Firebase를 적용해본 것도 까마득한 옛날이라... 시간이 많이 걸릴 것 같았는데

    하하하

    아직도 잡고 있네...?? 🤦🏻‍♂️🤦🏻‍♂️

     

    일단 Network 기능을 구현하다보니 데이터를 NetworkService가 들고 있게 되고... View마다의 동작이 달라질 수 있다보니...

    ViewModel, Repository의 직접적인 필요성을 많이 느끼게 되었습니다.

     

     

    현재 제가 구현하고 있는 방식은 위와 같은 형태였습니다.

     

    먼저, NetworkService를 싱글톤으로 구현해두고서 이름 그대로 Service로써 사용하고자 했습니다.

    NetworkService에선 CRUD를 하는 API를 가지고 있고 View는 이러한 NetworkService를 통해 데이터 통신을 해서 AppState에 저장을 하고 이 AppState를 View에서 사용하게 됩니다.

     

    이때 Network 과정을 Service로 표현했는데 일단 제가 생각하는 Service와 Manager 차이기능만 제공하느냐 vs 데이터도 함께 다루느냐 정도 입니다 😃😃

     

    근데,,, 지금과 같은 형태로 구현을 하다보니 NetworkService가 자연스레 NetworkManager가 될 수도 있지 않을까 하는 생각이 많이 들더라구요.

     

    이런 고민을 하게 되는 이유에 대해 생각해보면 '결국 모든 데이터들은 CRUD를 거쳐야 하고 그 결과값들을 사용하게 되는데 AppState란 객체로 굳이굳이 분리를 해야되나?'란 의문이 생겼기 때문 아닐까 싶어요!

     

    하지만 당연히 유지보수성을 높이기 위해서는 습관적으로, 그리고 본능적으로 이러한 분리를 가져가야 하기도 하고,

    만약 네트워킹이 불필요한 App 전반에서 쓰이는 데이터를 고려해서 AppState가 존재할 필요가 있다고 생각했습니다.

     

    그리고 이것을 좀 더 Clean Architecture 면에서 반영해보면 ViewModel > UseCase > Repository를 고려해서

    ViewModel을 좀 더 나누고 UseCase를 만들고(사실 테스트를 위한 것이 아니라면 이렇게 작은 프로젝트에서 더 나눌 필요가 있을까 싶긴 합니다.) 그 안에서 사용될 Repository를 만들어서 이 Repository가 Protocol로 구현이 되든, Function을 가진 객체로 사용되든 하면 충분히 많이 나눈게 아닐까 싶습니다.

     

    지금 이렇게 쓰다보니 한도 끝도 없긴 하네요...!

     

    간단히 요약하자면,

     

    Data Layer(지금의 경우엔 Network)가 Present Layer(View, ViewModel)까지 오는 과정에서 Data와 결합이 되는 순간 너무 무거워지는 것을 느꼈고 결국 Clean Architecture가 생각나게 하는 순간이 오는 것 같습니다.

    울지 말고 Clean Architecture 써봐...!

    그리고 지금과 같이 AppState가 Observable로 구현이 되어있고 전역으로 Environment로서 쓰이고 있다면

    굳이 ViewModel을 만들 필요성도 상실하게 되었고...

    결국은 이 AppState 자체가 NetworkService를 들고서 모델로서의 역할과 Data Networking에 대한 Repository까지 모두 들고 있으면 되겠다는 생각이 듭니다.

     

    너무 깊게 들어간 것 같은데...! 이번 기회에 Clean Architecture의 필요성을 조금이나마 옅볼 수 있어서 좋았습니다!

     

    뭔가 프로젝트가 다 끝나고 난다면 구조를 좀 더 깊게 풀이해봐야겠네요 ㅎㅎㅎ

     

    스유 미식회 발표 - ObservedObject vs StateObject, 이 둘 언제 쓰는데?

    한 3주 전 쯤에 라뮤로부터 연락이 왔었는데

     

    늘 동경해오던 iOS 관련 발표를 함께 할 수 있다는 제안에 너무 감사하게도 바로 OKOK를 했습니다...!!

    (Thank U 2 라뮤~~~~~~~)

    이렇게 6명이서 '스유미식회'라는 프로그램을 만들어서 점심시간에 러너 분들을 대상으로 iOS 개발 과정 중에서 학습한 것들을 공유하는 장을 만들게 되었습니다.

     

    그렇게 시작한 첫 스타트를 어쩌다보니 저와 온브가 끊게 되었어요

     

    사실,,, 제가 생각보다 준비가 많이 안 되어있던 것도 같고 무슨 얘기를 하는게 좋을지 계속 고민이 되긴 하더라구요...!

    그래서 가장 중요하면서도 러너 분들께 공유했을 때 가장 맛있다 혹은 제일 필요하다고 느낄 만한 것들을 찾아보게 되었어요

    그렇게 정해진게 ObservedObject와 StateObject를 대체 언제 쓰는게 좋을까를 가지고 발표를 하게 되었습니다.

    사실 발표 준비는 오래 안 걸렸지만 제대로 이 둘의 동작 과정과 이 둘을 언제 쓰는지를 설명하기 위해 확실한 테스팅 과정들이 필요했어서...

    많은 시간을 쏟았던 것 같아요 ㅠㅠㅠ

     

    다행히 몇몇 분들께서 너무 좋은 시간이었다고들 말씀해주셔서 다행이었단 생각이 많이 들었습니다 ㅎㅎㅎ

    다음번에 또 발표를 하게 된다면 그땐 조금 더 깊되 맛있는 재료로 준비해보려고 합니다...!!

     

    혹시 발표가 궁금하신 분들은 다음 자료와 영상을 참조해주세요~!

    https://xerathcoder.tistory.com/281

     

    [Swift 지식] @ObservedObject vs @StateObject 이 둘 언제 쓰는데? (feat.Observation) - (24.06.07 업데이트)

    서론안녕하세요~! 개발자 제라스입니다! 👋🏻🤖👋🏻 오늘은 아주 기본적인 개념을 들고 왔습니다ㅎㅎㅎSwiftUI 학습 초반에 많이들 배우겠지만 사실 요즘 워낙 iOS17의 입김이 센 요즘이기에

    xerathcoder.tistory.com

    https://youtu.be/bUul1MtIcE8?si=QOkLcTNw3o6cYUeA

    영상에 관심갖고 학습하기

     

    요즘 저는 어느 것에 특출난 개발자가 될 수 있을까 고민이 들었어요.

    현재도 iOS 개발자 분들도 많으시고 지망하는 분들도 많으신데 이 중에서 과연 나는 어떤 쓰임새가 있는 개발자가 될 수 있을지 고민이 들더라구요...!

     

    (근데 또 막상 생각해보면 이거 찾는 거 상당히 어려움...ㅠㅠ)

     

    제가 살면서 절대 포기하지 않고 돈을 들여서라도 하고 싶은 것은 야구와 관련된 직업을 갖는 것인데,

    이것에 가장 관련된 것을 생각해보면 실시간 스트리밍이 아닐까 싶어요.

    올해 티빙에서 KBO 중계를 맡으면서 엄청난 수익을 거뒀는데 실시간 스트리밍 기술을 제대로 확보하지 못한 채 하다보니 온갖 비난을 다 받았었죠 ㅎㅎㅎ

    그래서 만약 이런 쪽으로 잘 학습해둔다면 꽤나 관련된 산업에서 인정받는 개발자가 될 수 있지 않을까 싶습니다.

     

    그렇기 때문에 조만간 HLS, RTMP, SRT 등 영상 프로토콜을 학습해보고 구현해보는 연습을 해보고자 합니다.

     

    다음 주의 나에게

    이번주부터는 이전과 달리 조금 더 제 학습에 온전히 시간을 쏟았던 날들이 되고 있는 거 같아요.

    프로젝트도 개선하면서 코드도 계속 뚜왕~뚜왕 독짓는 늙은이마냥 계속 쳐보기도 하구 ㅋㅋㅋ

    하고 싶은 공부들도 해보고 있는 거 같아서 좋은 것 같습니다.

     

    다만, 요즘 많이 놓치고 있는 것이 사람들과의 네트워킹인 것 같아요...!

    예전엔 정말 심적 여유도 있고 잘 웃고 했던 것 같은데,

    요즘 들어 너무 스스로 치열한 생각을 많이 하다보니 웃음을 잃어가는 거 같네요 헣허허헣...

     

    다음주(사실은 이번주...ㅎㅎ)엔 조금 더 밝게 지내려고, 자동으로 그 밝음이 나올 수 있게 마음을 잘 추스리면서 성장해야겠습니다!

    하고 싶은 공부로는 앞서 말한 영상 프로토콜 관련 학습도 있고, '들랑날랑' 프로젝트도 잘 마무리 지어야 할 것 같아요 ㅎㅎ

    그리고 부캠 분들과 함께 하는 면접 스터디, 애플 아카데미 분들과 함께 하는 UIKit 스터디도 있으니 일단 안정적으로 시간을 잘 보내고 난다면 충분히 좋은 성장을 하게 될 것 같다는 생각이 듭니다!

     

    그럼 다음주에도 의미있는 회고로 돌아오겠습니다! 👋🏻😃👋🏻 

    728x90
    반응형