1주차 데모 - boostcamp-2020/IssueTracker-13 GitHub Wiki
2020년 10월 30일 금요일 1차 데모 및 페어세션
- 페이지에 접속한다.
- 이슈목록화면이 출력된다.
- 이슈목록화면에 Label, Milestone 버튼을 클릭하면 해당 페이지로 이동한다.
- 이슈목록메뉴에 있는 속성별 필터버튼을 클릭하면 좌측에 버튼의 이름이 출력된다.
- 이슈목록화면 하단엔 이슈목록이 출력이 되는데 관련 데이터는 front에 json형식의 mock-data로 저장되어있다.
- 앱을 실행한다.
- 로그인이 되어 있다고 가정한다.
- Issue, Label, Milestone, Setting 탭이 있는 Tab bar Controller가 보인다.
- 첫번 째 탭인 Issue 목록 화면이 보인다.
✔️발표내용: 팀 구성원 소개, 팀의 그라운드 룰, 팀 빌딩 방식, 코딩 컨벤션, 팀만의 GitHub 사용 규칙 등 팀에 대한 모든 것, 자유롭게~! ✔️발표자료: 자유
- 팀 구성원 소개
- 팀 빌딩 방식 - 게임 이야기, 잡담 마스터
- 팀 그라운드 룰 - 이터레이션, PR 규칙, 갈등해결 규칙
이터레이션 장점
- 팀원들의 컨디션 상태를 공유하면서 '오늘은 내가 컨디션이 좋으니 좀 더 주도적으로 작업을 진행해야겠다'라고 생각하게 되어 팀작업의 밸런스를 조절할 수 있었습니다.
- 팀원들 간 작업상황 공유가 실시간으로 이루어진다.
- 하루 동안 무엇을 했는지 한눈에 파악하기 좋다.
- 집중도가 높아서 시간이 정말 빨리 간다.
- 쉬는시간이 짧게 정해져있고, 팀원들 간 지켜야 하는 규칙이기 때문에 핸드폰 등 방해요소를 멀리하기 쉽다.
이터레이션 단점
- 45분 시간 단위를 딱 잘라 끝내는게 쉽지 않다. (아직 마무리가 안됐을때 아쉬움....)
- git을 이용하여 협엽을 하는데 컨벤션을 맞춰야했다.
- ex) git commit message, PR message,
- API의 형식과 관련하여 iOS와 사전 협의가 필요했다. 필터링을 서버에서 할지 클라이언트에서 할지를 결정하고, 이에 따라서 API 구조를 잡는 것에 많은 시간이 걸렸다.
- React가 아직은 생소한 팀원들이 많아서 새로운 개념을 학습하고 서로 이해하는 것이 어려웠습니다.
- iOS 개발자끼리 어떻게 해야 잘 협업할 수 있을지 몰라 어려웠다.
- 협업 단위, 짝 프로그래밍,
nCloud Object Storage를 사용하여 프론트엔드 빌드 파일을 배포하였습니다. AWS의 S3 스토리지와 유사하게, 정적인 html, js를 파일 URL을 통해 배포하는 방식입니다.
collection view를 이용하는데, 기존에 사용하던 UICollectionViewDataSource
와 UICollectionViewFlowLayout
가 아닌,
ios 13부터 지원하기 시작한 UICollectionViewDiffableDataSource
와, UICollectionViewCompositionalLayout
를 사용했습니다.
기존 API와의 차이점으로는,
이전에는 collection view
에게 몇개의 item
을 보여줘 줘야하는지 알려줘야했다면,
DiffableDataSource
를 이용할때는 보여주고 싶은 item
과 section
을 알려준 다는 것입니다.
diffable
하다는 의미는 만약, item을 업데이트 하게 되더라도, collectionview는 차이나는 부분을 자동으로 계산해서 업데이트가 된다는 접입니다. 이때, 화면간 차이의 애니메이션 또한 자동으로 이루어집니다.
1시간 단위로 <코어타임 -> 회고 & 스크럼 -> 쉬는시간>를 반복하는 이터레이션 방식을 사용했습니다. 이 방식을 통해서 집중도를 높이고, 서로 작업상황 공유를 효율적으로 할 수 있었던 것 같습니다.
React의 페이지 컴포넌트 구조를 짝프로그래밍을 통해 사전 협의하고 작업을 시작하여 추후 PR을 merge할때 conflict이 적게 발생했습니다.
먼저 의존성이 큰 작업들은 짝 프로그래밍으로 작업을 시작했습니다. 그 다음에, 필요한 함수들을 protocol을 이용하여 정의한 후, 구체 클래스는 따로 작업을 했습니다.
영상으로 찍기에는 화면의 변화가 있는 기능이 없어서 스크린샷만 첨부했습니다.
이슈목록 화면
입니다. 스타일링작업은 하지 않았고, 컴포넌트구조
만 간단하게 잡았습니다.
Labels, Milestones, NewIssue 를 클릭하면 해당 페이지로 이동합니다.
Author, Label, Milestones, Assignee 버튼을 클릭하면 해당 버튼의 이름이 좌측에 렌더링됩니다.
Labels, Milestones, Issues 데이터들은 json형식으로 mock-data
를 만들어 사용했습니다.