티스토리 뷰

728x90

첫번째 프로젝트 - VoiceRecorder도 회고록 작성을 아직 안했는데

가장 최근에 끝나서 기억이 새록새록하기 때문에 작성을 해보려고 합니다.😅

 

월요일 ~ 토요일 매일 09:00~21:00 총 12시간 이라는 빡센 일정으로 프로젝트를 진행한지 벌써 한달이 지났다니..

체력적으로 힘이 들긴하지만 이제 다음주면 마지막 1주일 개인 프로젝트만하면 끝나니 마지막까지 빡 집중해서 해보자아!!

 

시간이 정말 어떻게 간줄도 모를만큼 7월은 순.삭 이었다.

그럼 능력자 두 분을 만나 기술적으로 많이 배울 수 있었던 두번째 프로젝트 회고를 작성해보겠습니다!!


두번째 프로젝트는 CustomKeyboard를 만드는 프로젝트였다.

키보드 화면을 `직접` 만들어서 버튼이 눌릴때마다

초성, 중성, 종성을 조합해 글자를 만들어 내는 기능이 주요기능이었는데..

 

 

막막했다...

유니코드요..? 

모음 ㅗ,ㅏ,ㅣ 가 눌리면 ㅙ 가 나오게 하라구요..? ㅙㅛ..?

조원들이 저 세상 사람들인것 같다구요.. 

한국어를 하고 있는건가요..?

 

 

조원들은 나를 포함해서 총 세명이었다.

이 코스를 시작하기 전에 다른 코스를 수료하고 와서 그런지 개발지식이 차이가 많이 났던것 같다. 

iOS 쪽을 독학으로 공부하고 코스를 진행한 나는,

조원분들의 대화에 내가 모르는 개발용어들을 무작정 따로 적어놓고 하루 일과가 끝나면 찾아보고 또 찾아봤다. 

말이 9시부터 9시까지지 이후에도 추가적으로 공부가 더 많이 필요했었다. 

 

어떻게든 대화에 껴보고 싶고, 일일히 모르는 단어가 들릴때마다 질문을 할 수 는 없었으니까.

 

프로젝트 시작전

실제로 개발을 시작한건 3일 뒤였다. 

그동안 개발을 어떻게 진행할건지 컨벤션은 어떻게 할건지에 대한 논의가 끊이지 않았고,

위에서도 언급했지만 몰랐던 키워드들이 툭툭 나와 받아적기에만 급급했었다. 

 

네트워크의 경우에도 개인 프로젝트를 할때는 Singleton 패턴을 사용해서만 네트워크 처리를 했는데, 

Network Layer로 각 상황에 맞게 네트워크 호출을 하고 처리할 수 있도록 구현하자는 방식에 '이건 꼭 공부해봐야겠다' 싶었다. 

 

사실 커스텀 키보드 프로젝트에 대한 말들이 많았다. 

포트폴리오에 쓸수 있을까..?

너무 키보드에만 집중되어 있어서 다른회사에 지원하게 되더라도 메리트가 있을까?

현업에서 사용하는 기술들 패턴들을 최대한 많이 사용해서라도 포트폴리오로 사용해볼까? 라는 의견도 나왔고,

여러 기술들을 적용해보자고 정리가 된후 멘토링을 받았을때 들었던 피드백은 

 

여러 기술을 사용해서 어필하는것 좋지만, 

쥐잡으려고 소잡는 칼을 만드는것 같다. 

적재적소에 기술을 사용하는걸 더 중점으로 보지 않을까라는 피드백을 받았다. 

 

그 말에 바로 납득이 갔다. 

그렇게 다시 구현할 방법을 정리하기 시작했고 그제서야 개발을 시작할 수 있었다.

 

 

프로젝트 시작

 

본격적으로 프로젝트를 시작하기전 구현해야하는 기능들을 세부적으로 나누어 issue로 하나 둘씩 적어놓고 해결해 나가는 방식으로 진행을 해서 어떤 작업을 해야할지 명확하게 파악할 수 있었다. 

 

issue 리스트

이전 회사에서 Bitbucket, Jira을 사용해서 일정관리, 이슈관리를 했었는데,

이번 프로젝트를 통해 GitHub의 사용방법도 조금더 알 수 있었던것 같다. 

 

구현해야했던 기능들은 아래와 같다. 

 

기능 소개

ReviewListPage

Review 표시, 작성, 등록

KeyboardPage

중성조합
(ㅗ,ㅏ,ㅣ = ㅙ)
종성조합
ㄱㅅ = ㄳ
종성->중성
음절 단위삭제 단어 단위삭제

 

저 키보드 문자 조합하는데 쓰여진 오토마타 알고리즘.. 

 

나와 Nala가 NetworkLayer를 구현하는동안,

 

기본 알고리즘 구축을 해줬던 Downey,

해당 알고리즘을 이해하고 각 case 마다 문자조합을 할 수 있게 구현했던 Nala,

마지막에 어느정도 완성된 오토마타 기능에 숟가락을 얹은 나 🥲

 

다행히도 프로젝트 마감전날 새벽까지 혼자 코드 분석했던 덕에 

마지막 날 테스트해볼때,

이전 글자에 스페이스(공백)이 있으면 다음 글자를 입력시 에러가 났던걸 해결할 수 있었다. 

 

Network Layer 

아마 이번 프로젝트를 진행함에 있어서 가장 의미있던 시간이지 않았을까 한다. 

 

기존에는 싱글톤 패턴을 이용해서 무작정 사용을 하고 Protocol도 사용을 해보진 않았어서, 이게 어떤걸 위해서 개발이 되는건지 왜 하는건지의 의도가 파악이 되지 않았다.

Network Layer를 공부해보고 조원분들이 참고해보면 좋을것 같다고 링크도 보내주고, Nala도 잘 설명을 해준 덕분에 흐름파악에 도움이 많이 되었다. 

뭔가를 배움에 있어서 
'왜 해야하는건지' 
의도를 파악하는것 부터가
방향성을 잡아주고 그에따른 이해의 속도가 빨라진다는걸 느꼈다.

 

이번 프로젝트에서 Network Layer의 구조는 아래와 같이 적용했다. 

 

  • Network Layer
    • 개인적으로 싱글톤 패턴을 이용하여 NetworkManager에 URL, URLSession, dataTask 등 모두 한곳에서 네트워크를 호출.
    • 문제점
      • HTTPMethod 별로 요청해야하는 URL도 달라지고, 고정되어있는 URL주소도 불필요하게 반복해서 써야하는 문제 발생.
    • 개선
    • EndPoint
      • 각 상황에 맞게 baseURL, path, HTTPMethod, query를 나누어 값을 return 후 return값들을 조합한 requestURL 구현
    • NetworkRequester
      • 공통적으로 사용할 수 있는 dataTask 메서드 구현 및 필요에 따른 request 메서드 구현
    • ReviewAPIProvider
      • EndPoint -> NetworkRequester에 메서드를 사용하여 상황에 맞게 fetchReview, upload 메서드를 활용해 네트워크 처리

EndPoint → NetworkRequester → APIProvider → ViewController 순으로 

각 상황에 맞게 값을 받아와 최종적으로 사용할 ViewController에서 정제된 메서드를 사용만 하면되는식으로 구현이 됐다. 

 

 

ViewLifeCycle .. (1VC → 2VC) 

1VC: firstViewController
2VC: secondViewController (modal) - 풀스크린x

 

상황은 이랬다. 

1VC → 2VC(modal) 로 넘어가는 상황이었는데

 

1VC 에서 2VC로 넘어갈때마다 viewDidLoad가 계속 호출되길래 

풀스크린일때만 viewDidLoad가 호출돼야하지 않나? 라고 생각했는데

 

이건 좀 어이없었다 .. ㅋㅋㅋㅋ 

1VC에서 적용되는 상황과 헷갈렸었다.. 

 

당연히 2VC에서는 dismiss가 될때 메모리에서 사라졌다가,

다시 present로 메모리에 할당되니 호출되는게 맞는거였다.

 

공부를 계속 하다보니 이전의 지식들이 뒤죽박죽 되는 느낌이어서 알고있던 것들도 나중에는 헷갈리게 되는것 같다.

이번 경험을 통해서 제대로 각인된것 같다 👀

 

마지막으로

 

이번 프로젝트엔 Downey, Nala가 정말 잘 이끌어줬다.

조원분들의 속도에 따라가지 못했던 부담감과 압박감에 심적으로 많이 힘들었었지만,

개발에 대한 부족한 부분들을 이해할 수 있도록 정말 많이 도와줬고, 잘 따라갈수 있게 리드도 잘해줬다.

 

우디 멘토에게도 뒤쳐짐에 대해 상담을 받았을때 이 말이 가장 와닿았다.

다른 사람과 비교하며 버거워하는 것 보다 자신에게 무엇이 부족한지 파악하고 채우는 자세가 중요하다고 말씀드리고 싶어요.


각자 다른개발 경험이 있을 뿐이고, 조원분들도 이런 고민들을 먼저 겪었을 뿐 이것 또한 누구든 겪는과정이지 않을까.

이번에 부족했었던게 어떤건지 확실히 알 수 있었고 그것부터 차근차근 공부해나가보자 

 

열심히 하다보면 저절로 도움을 구할 사람도 생기는것 같다. 

 

2주동안 고생한 Nala, Downey 너무 감사했습니다 🙌

 

 


해당 프로젝트는 여기서 확인할 수 있습니다.

728x90

'Story' 카테고리의 다른 글

호텔리어 개발자의 삶의 지도  (4) 2023.01.06
2022 회고  (2) 2023.01.02
프리온보딩 iOS  (0) 2022.07.01
BestEats 앱 배포 회고  (0) 2022.05.16
2021 회고  (4) 2022.01.09