Day 09 개발일지 iOS - boostcamp-2020/Project03-A-TOTP GitHub Wiki

Day 09 개발일지

앱 이름

프로젝트를 생성하려고 보니 아직 앱 이름이 정해지지 않았었다. 급히 팀원들을 소집하여 앱 이름에 대해 논의를 해 보았다. TOTP라는 단어에 얽매여 한 동안 좋은 아이디어가 나오지 않았다. 그러다 The more, the Best 라는 이야기가 나왔다. 보안을 두텁게 하면 할 수록 좋은거다! 라는 의미로 우리의 2FA 기능을 사용하라는 의도가 담겨있다. 이 말이 나오고 곧 인구님이 '다다익선'이라는 신선한 이름을 제안해주셨다. 그리고 바로 낙찰!

우리의 앱 이름은 "다다익선 - TOTP"

출시되어도 손색 없어 보인다.

개발환경설정

프로젝트 이름 설정

우리의 자랑스러운 앱 이름으로 프로젝트 이름을 설정하였다. "DaDaIkSeon"

.gitignore 설정

gitignore.io에서 xcode, macOS, swift, cocoaPods를 선택하여 파일을 생성했다.

깃허브 2FA로 인해 생긴 일

어진님 Mac에서 환경 설정을 마친 후 Push를 하려고 했는데 되지 않았다. 패스워드가 invalid하다는 오류 메세지가 출력되었다. 설마해서 찾아보았는데 어진님께서 TOTP 2FA을 경험 해보기 위해 어진님께서 깃허브 아이디에 2FA 설정을 걸어두었었는데 이게 문제였던 것이다. 그래서 다음 링크 내용을 참고하여 terminal에서 새롭게 깃허브 password를 적용해주었다.

깃허브 2FA Personal Access Token 사용하기 Github Two Factor 인증 설정하기 (feat. Authenticator) git password 변경시 로컬에 적용하기

린트 설정

swiftLint를 사용하여 Convention을 맞춰보기로 결정했었다. 그래서 이전에 사용하던 yml 파일을 가져와 조금 수정해서 프로젝트에 추가해주었다.

  • 변수으로 id 허용
  • 한 줄에 100자가 넘어가면 경고
    • 속독을 하기 위해 가장 먼저 훈련하는 것이 무엇인지 아시나요? 바로 눈알 굴리기 입니다. 무언가를 읽기 위해 눈알을 굴리는 것은 훈련이 필요할 정도로 쉽지 않은 일입니다. 그래서 우리는 가로로 코드가 너무 길어지지 않게 하기 위해 제한을 두었습니다.
  • url 가로 길이는 길어져도 무시
    • 읽기 위해 넣는 코드가 아니기 떄문

코코아 팟 버전 이슈

이전 프로젝트에서 서로 코코아 팟 버전이 달라 머지할 때 마다 pod install을 해주어야 했었다. 혹시나 해서 서로 버전을 확인해 보았는데 어진님은 1.9 버전이었고, 재명님은 1.10 버전이었다. 그래서 최신 버전으로 맞춰주었다.

이 과정에서 어진님의 cocoaPod 버전이 올라가지 않는 일이 있었다. 아무리 brew upgrade 같은 명령어를 사용해도 이미 최신 버전이라는 말이 나와도 pod --version을 해보면 그대로였다.

그래서 혹시나 해서 brew 말고 gem으로 설치한 내역이 있는지 확인해 보았다. 역시나 gem으로도 코코아팟을 설치했던 것이다. 그래서 아무리 brew로 업그레이드를 해도 되지 않았던 것이다.

여기서 gem에 있는 cocoapod의 버전을 올려주었다면 쉽게 해결될 문제였지만, 중복이 싫은 개발자의 본능에 따라 brew만 남이고 gem에 있는 cocoapod을 삭제하기로 했다. 하지만 그랬으면 안됐다.

아래 링크에 있는대로 gem으로 설치한 cocoapod을 삭제 했는데, 결과는...

cocoapod을 삭제하고 다시 버전을 확인했더니 아래와 같은 결과가 출력되었다.

왜 이런 메세지가 출력되는지 이유는 찾지 못했다. 훌륭한 개발자가 되어 나중에 저 이유도 알 수 있는 날이 오면 좋겠다.

결국 다시 gem으로 cocoapod을 설치했고 잘 마무리 되었다.

셀프 머지 시스템

iOS 팀원 간 정해진 룰이 있었는데, 리뷰를 받고 머지 승인을 다른 팀원에게 받더라도 머지는 본인이 하는 것이었다. 그런데 재명님이 승인하고 바로 머지하는 일이 있었다. 주의 바람!

트래비스 설정

Web의 도경님이 TravisCI 밑 작업을 해주셔서 iOS는 코드만 넣어 설정할 수 있었다!!!

iOS만 빌드할 수 있도록 설정하기

  • 우리가 작업하는 dev-iOS브랜치에 있는 .travis.yml파일에 Web 설정 부분도 있었다. 이를 지우고 iOS만 남겨도 Travis CI가 잘 돌까...?
  • 결과는 성공이었다! iOS 설정 코드만 남기고 다 지울 수 있었다!

PR단계에서 TravisCI 돌리기

  • 머지 후 빌드에서 PR을 날릴 때에 Travis가 돌 수있도록 변경했다.

폴더 Depth가 있는 프로젝트에서 Pod 경로 찾기

  • 어진님이 개인 Repo에서 Test해보았던 코드를 그대로 사용하려다 보니, 폴더 구조 Depth가 있는 우리 TOTP 프로젝트에서 pod이 설치되지 않는 상황이 발생했다!!!!
  • 이때, before_install에있는 pod설치 코드를 넣기 전에cd pod파일경로로 pod 경로를 찾아주어 해결하였다.
    • 짜잔~ TravisCI Build가 Pass한 모습

plist 파일을 그룹으로 넣었더니 생긴 문제

plist 파일을 Common 그룹에 넣었더니, 프로젝트에서 인식을 못하는 상황이 벌어졌다. 그래서 아래와 같이 경로 설정을 다시 해주어야 했다.

주석

파일 생성하면 자동으로 생성되는 주석

//
//  ContentView.swift
//  DaDaIkSeon
//
//  Created by 양어진 on 2020/11/24.
//

재명님은 이거 지우는 게 갠취, 어진님은 안 지우는 게 갠취. 안지우기로 결정했다.

메인화면 그리드 레이아웃 설정

빠르게 알고 있는 범위 내에서 레이아웃을 잡아보았다.

그리고 데이터를 추가 해서 바인딩을 하려고 했는데...

우리가 모르는 것

  • ForEach 사용법
  • .self
  • property wrapper: Struct, class에서 사용법 차이
  • Timer 사용법
  • 단방향 데이터 흐름 이해

그래서 우선 학습을 하기로 했다.

VSCode 라이브 쉐어

둘 다 아직 SwiftUI 지식이 많이 모자란 상태여서 일을 분배해서 일하는 것보다는 함께 작업하면서 공부하면 좋겠다고 판단을 했다. 그래서 함께 할 수 있는 방법을 찾다가 VS Live Share 기능을 사용하면 어떨까 싶어서 바로 시도해보았다.

처음에는 신기하고 할 만 했는데 할수록 답답함이 생기는 것은 어쩔 수 없는 것 같다. 그래도 생각보다 유용하게 쓰일 것 같다.

불편하지만 불편하지 않은..? 없는 것보다 낫다!


개인 회고

(솔직히 쓰기 - 현재 파트너 또는 누군가가 본다고 생각하지 말고 미래의 내가 본다고 생각하며 쓰면 어떨까요??😏)

어진

  • 우리의 앱 이름은 바로바로...? 다 다 익 선. DaDaIkSeon..ㅎㅎ
  • 드디어 프로젝트를 팠다!!!! 첫 주부터 말로만 하던 트레비스와 린트를 설정할 수 있었다.
  • 메인 UI를 조금 건드려봤다. 바로바로 프리뷰에 뜨고 간단한 코드로 만들어지는것이 재밌었다!!!!! SwiftUI를 공부할 때 역시 처음이 제일 자신감 있다더니 바로 지금이 그 때인 거 같다..ㅎ
  • 지금까지는 SwiftUI가 개발을 하는 부분에서는 굉장히 편할수도 있겠다고 느꼈다. 그런데 디자이너가 존재하고, 이 디자이너가 지정한 디테일한 픽셀단위를 개발한다고 생각했을때는 아직 오토레이아웃 잡는것이 개인적으로 편하다는 생각이 들었다.
  • 결론 : 더 해봐야 더 잘 알 수 있을 것 같다!!!

재명

  • 드디어 앱 이름도 정하고 프로젝트 설정도 마무리 되었다. 그리고 메인 화면의 뷰도 SwiftUI를 사용하여 그려보았다. 굉장히 뿌듯한 하루였다.
  • 지난 주부터 오늘까지 프로젝트가 원할하게 진행될 수 있도록 많은 고민을 했었다. 지난 프로젝트에서 그렇게 하지 못했던 것들을 다음에는 그러지 말아야지, 다음에는 이런 것도 해봐야지 하는 것들을 기억해 두었었다. 그리고 이번 프로젝트에 최대한 반영해보려고 노력했다. 우리의 목표 설정, 개발 일지, 스크럼, 회고 문화, 공부하고 발표하는 문화 그리고 사용자 스토리를 통한 계획 수립 등등.. 물론 보완할 점들이 있지만 노력한 만큼 팀에 이런 것들이 많이 녹아든 것 같다.
  • 이렇게 팀으로서 함께하는 문화가 정착되고 나니 효율성도 매우 좋아진 것 같다. 서로의 장점을 발휘하고 단점을 보완해주는 것들이 잘보여서 남은 시간들이 굉장히 기대된다.
  • 어제 약속한 대로 사용자스토리로부터 할 일을 추려내는 방법에 대해 웹 팀원들에게도 설명을 해주었다. 오늘 실제 작업을 해보니까 이렇게 도출한 백로그가 실제로도 의미있게 사용되고 있다는 점이 좋았다. 이러한 경험을 함께 이야기했더니 백로그에 반영해 보겠다고 하셨다.