<aside> 💜 강수진 최고!
일단 목표한 다섯개 중 세개는 한 것 같네요 ㅎㅎ 페어프로그래밍 넘 재밌었는데 시간 이슈 상 리팩토링 할때 한번만 진행해본게 아쉬워여
이외에도 아래의 사항들을 시도해볼 수 있어서 좋았습니다.
RxSwift 의 경우 제대로 쓴건 아닌것 같지만,, 그래도 시도해볼 수 있어서 좋았습니다 ㅎ
Coordinator도 적용해보려고 했지만, TabBarController 에 코디네이터를 적용하는 부분이나 다른 ViewController 로 이동할 때 data 를 넘기는 부분에서 기존에 작성해둔 BaseCoordinator 의 일관성이 깨지더라구여. 시간이 없어서 더 알아보고 해결하지는 못하고, 그냥 기존에 적용했던 부분들을 다 revert 시켰는데,,, 애매하게 알면 함부로 도입하지 말아야한다는 큰 교훈,, 얻었습니다요
이번에 처음으로 제대로 깃헙에서 issue 파고, branch 따고, pr 날리고, 코드 리뷰까지 해보는 사이클을 경험할 수 있어서 좋았어여! 근데 리뷰를 너무 빡빡하게 달아서 여러분이 앱잼 진행 자체에 흥미를 잃지 않을까? 하는 걱정이 중간 중간 들긴 하더라구욤,, 처음엔 좀 빡세게 하다가 그런 걱정 + 저의 현생 이슈로 갈수록 살살 보게 된거 같긴한데,, 앱잼에서의 완성과 코드 퀄리티 사이에 타협을 잘 한건지 모르겠네영. 어렵다 어려워!
하지만 사실 다 필요 없고 여러분들을 만나서 너무 좋았습니당 💜 부족한 점도 많았을텐데 다들 잘 따라와주셔서 감사해용! 천재 만재들~~ 최고의 개발자들 추천합니다~~!! 저랑 나중에 또 놀아주세여~~! 슨배 꽈뤼들 다들 칭찬 도장 쾅쾅쾅쾅!!!
</aside>
<aside> 💜 앱 잼 목 표 : 도약 및 행복
앱잼을 하면서 제대로 된 협업 경험을 한 것 같아 제법 뿌듯하고.. 좋은 경험이었습니다.. ! 다른 파트랑도 소통하는 법을 배웠고, 아요끼리도 같이 소통하며 하나의 앱을 만들어나가는 과정이 .. 행복했습니다.. !!
코드리뷰를 열심히 하면서 코드가 점점 깔끔해지고, 오류가 날만 한 것들을 미리 수정하고 반영할 수 있어서 너무 좋았습니다. 앱잼이라는 짧은 시간 동안 코드리뷰를 전부 반영하는 것은 조금 힘들었지만, 리뷰를 반영하면서 많은 것들을 배웠습니다 ~~ 다들 감사해요 !! :)
처음 기초세팅을 하는데 어렵기도 하고 다양한 것들을 적용해보려고 하다보니 조금 시간이 오래 걸렸지만 나중에 서버 연결이나 , Base 코드 상속 받아서 활용할 때 편해서 좋았습니다. 어려운 개념들도 한번씩 공부해보는.. 좋은 경험이었습니다.. !! 서버연결 제대로 해본 건 처음이었는데 수진언니가 너무 차근차근 설명해줘서 고마웠습니다.. 진짜 따듯한 해빗아요의 엄마.. 그리고 해결 안되는 것들이 있으면 윤아언니 승현 오빠가 옆에서 잘 도와줘서 내가 맡은 뷰를 잘 해낼 수 있었고, yb로서 1인분은 한거 같아서 뿌듯했습니다 >< 예빈언니랑도 코드리뷰를 하면서 소통을 할 수 있어서 넘 좋았습니다 ㅎㅎ
해빗 뷰가 조금 많았지만, 5명이서 으쌰으쌰 잘 해낸것 같아서 넘나 뿌듯하고요.. 다들 고생꽈리 💜
해빗 아요들 최고 ! 고마워요.. 증말로.. 앱잼 목표 달성 완료 ! 도약 + 행복
</aside>
<aside> 💜 이번 앱잼을 한 마디로 요약하자면 ‘도전 앱잼’이 아닐까 싶습니다. 단순히 뷰를 짜고 코드를 치는 것에 그치는 것이 아닌 어떻게 하면 더 클린한 코드를 짤 수 있을지, 컨벤션을 어떻게 더 잘 지킬 수 있을지, 협업에서 발생하는 이슈들을 어떻게 핸들링할 수 있을지를 고민했고, 그 과정을 팀원들과 함께 할 수 있어 너무 좋았습니다. 😉
뭐니뭐니해도 저희 팀원들 만난게 넘모 행복해요 감사합니다 💜
</aside>
<aside>
💜 앱잼 목표: 광활한 도약 및 행복 앱잼
이번 앱잼은 사람이 많은만큼 많은 도전을 하자는 생각으로 임했습니다. 도전만 하느라 행복 앱잼을 잊을 정도..🥲
가장 큰 도전은 뭐니뭐니해도 젠킨스가 아닐까 싶네요. 젠킨스를 사용해서 CI를 구축해보자! 하고 시작했던 일인데, 진짜 눈물이 났습니다. 너무 힘들었습니다..
첫 번째 시련 [ 로컬 호스트 ]
젠킨스는 기본적으로 로컬 호스트에서 작동합니다. 젠킨스를 처음 도입하면 BaseURL이 제 IP로 잡히더라구요. 따라서 저 혼자서 CI를 돌리고 테스트하는 부분은 정말 쉬웠습니다. 그냥 Build Test 버튼만 누르면 뚝-딱 테스트를 해줍니다. 하지만 저희는 Github를 사용해서 Pull Request를 날릴 때마다 테스트를 해줄 젠킨스가 필요했습니다. 해당 젠킨스는 로컬 호스트로 절대, 절대 구축 불가능합니다. Github Webhook이 안걸립니다.^_ㅠ 따라서 저는 제 로컬 호스트를 대체해줄 IP가 필요했어요.
첫 번째로 손을 댄 건 [도커] 였습니다. 도커로 젠킨스를 돌리는 거죠. 하지만 도커는 호락호락하지 않았습니다. 도커로 젠킨스를 구축을 했지만, Linux를 Base로 하고 있어서 Xcodebuild를 돌려야 하는데 Xcode 빌드가 안되는겁니다. 따라서 다시 제 로컬 호스트로 돌아올 수 밖에 없었습니다.^_ㅠ
두 번째로 손을 댄 건 [ngrok] 입니다. 결론적으로 말하면 성공했습니다. 약간 대충 어물쩡 성공이긴 하지만 현재 저희 젠킨스는 ngrok이 외부 접속을 가능하게 해주어서 잘 돌아가고 있습니다. ngrok은 외부에서 로컬에 접속 가능하게 하는 터널 프로그램인데요, Jenkins는 Github Webhook에서 외부 접속을 해야만 사용이 가능하기 때문에 ngrok를 넙죽 받아드렸습니다. 물론 랜선을 사용해서 고정된 IP를 사용해도 되지만 저는 와이파이를 사용하는 IP 유목민이기 때문에 너무나도 ngrok이 필요했습니다. 현재도 제 로컬 호스트를 외부 접속 가능하게해서 빌드를 하는 중입니다. 젠킨스 너무 편하고 Github Action에서 private repo로 돌렸을 때 나타나는 limit build time도 없어서 좋지만.. 로컬 호스트에서 돌리다보니 제 컴퓨터가 부담스러운 느낌..... 더 좋은 방식을 찾고 싶습니다.
두 번째 시련 [ 듄킨스 ]
제가 컴퓨터를 꺼버리면 젠킨스가 돌아가지 않습니다. 제가 곧 젠킨스고 젠킨스가 곧 저입니다. 눈물 납니다. Xcode에다가, 피그마, 제플린, 그리고 젠킨스까지 많은 프로그램이 저의 맥북을 사용해서 돌아가고 있고 결국 제 맥북은 화가 나서 1회정도 분노 표출용 강제 종료를 시전했습니다. 앱잼 내내 1일 10칭찬을 하면서 맥북을 달래긴하지만 영구적으로 이럴수는 없으니 고민이 많습니다. 얼른 맥북에게 자유를 주고 싶어요. 일단 도커를 Mac OS기반으로 생성해서 진행하는 것이 가장 좋은 방식일 거 같지만.. 도커 공부를 더 심화해서 해야지만 구축이 가능할 거 같네요.
Github Action만 간간히 돌려봤던 저에게 이번 젠킨스는 정말 큰 시련이자 도전이었습니다. 처음에는 진짜 하지말까 붙이지말까 이게 이렇게 중요할까 이런 생각들이 많았는데. 다 하고 나니 제 컴터를 통해서 돌아가는 빌드들이 뿌듯하고 다른 CI툴도 도전해볼 수 있는 용기가 생겼습니다. 다음에는 Fastlane와 연결해서 젠킨스를 사용해볼까 싶기도 하네요. 역시 **자동화 최고!
젠킨스 관련 이슈 해결 진행 링크**
https://github.com/TeamHavit/Havit-iOS/issues/20
</aside>
<aside> 💜 앱잼 목표
이번 앱잼을 통해 아요 파트원, 다른 파트 파트원들 팀원들과 함께 대화를 하며 행복 앱잼이라는 하나의 목표를 두고, 전반적인 앱 개발의 flow를 경험해보았습니다.
이번 앱잼에서는 하나의 키보드, 하나의 모니터를 두고 돌아가면서 진행하는 페어프로그래밍을 진행해보았는데요!
앱잼 전에는 평소 코드 줄이 짧을 수록, 간결한 코드가 좋은 코드라고 생각했었습니다.
하지만 앱잼을 진행하며, 다섯명이라는 적지 않은 팀원과 함께 협업을 하며 “읽기 좋은 코드”에 대해 함께 고민해볼 수 있었습니다.
나의 옆자리 동료가 내가 작성하는 코드를 함께 고민해주고, 나의 코드를 읽어줄 동료들의 수고를 덜어주기 위해
또, 개발을 지속 가능하게 만들기 위해 코드의 가독성을 높여야 함을 깊게 깨닫게 되었습니다.
변수명, 함수명부터 시작해서 읽기 좋은 코드에 대해, 팀원들이 읽기 편한 코드란 무엇인지 고민해보며
내가 변수명 함수명을 짓기 위해 투자하는 5분의 시간이 팀 전체의 생산성에 큰 영향을 끼친다는 것을, 깨닫고
가독성을 염두해두고 코드를 작성을 해보는 경험을 해볼 수 있어 너무 유익했습니다.
또, 이번에 쉐어 익스텐션이라는 기능을 처음 개발해보았습니다.
처음에는 Build Target이 달라 Main App에 접근하기 위해 설정해줘야하는 것이 꽤나 많아 많이 헤맸지만 팀원들과 함께 고민해보며 풀어나가며 많이 배웠습니다.
그리고 Share Extension의 Entry Point를 설정하며 Main App이 아닌 Share Extension의 실행과정에 대해 익힐수 있었습니다!
https://github.com/TeamHavit/Havit-iOS/pull/49
lint check는 bot이 담당하게 하도록하고, 팀원들이 코드리뷰 하실 때 핵심적인 로직만 볼 수 있도록
githooks, Github Actions를 이용해 lint check를 자동화하여 간단한 CI환경을 구축해보았습니다!
https://github.com/TeamHavit/Havit-iOS/pull/19
이번기회에 코드베이스로 UI를 처음 구성해보았는데,
팀원분들이 알고계신 지식을 너무 잘 공유해주시고, 도와주신 덕분에 빠르게 이해하고, 적용해볼 수 있어 너무 너무 감사했습니다!
여러분들과 함께할 수 있어 이번 앱잼 너무 행복했습니다~!! 선배꽈리들 최고~!!!👍👍
함께해주신 수진, 윤아, 예빈, 수연 너무 고마워요~!!🥳
</aside>