Skip to content

[2023‐11‐24] 팀회고, 개인회고

주재현 edited this page Dec 1, 2023 · 1 revision

어제 한 일

Android

승빈

  • 백엔드 API를 바탕으로 CreatePost 구현
  • 사용자의 현재 위치로 이동하기

정건

  • Bottom Sheet 관련 문제 해결
  • SnapPoint 클릭 시 해당 미리보기로 이동
  • 주변 게시글 화면과 게시글 작성 화면의 코드 리팩토링

언수

  • 경로가 전부 보이도록 Zoom Level 조정
  • 미리보기의 사진과 스냅포인트 연결
  • 미리보기에서 보고 있는 이미지와 스냅포인트 하이라이트 연동
  • 미리보기의 이미지 크기, 텍스트 색상 수정

Backend

양희범

  • PrismaProvider 객체 Mocking 및 트랜잭션 지원 (post-api 테스트)
  • Block Domain Service 의 테스트 코드 작성
  • BlockFiles 도메인을 VO 로 판단, Block Service에 통합함
  • 게시글 삭제 기능 구현
  • PostApiService 리팩토링

PS: CRUD 관련해서, 아래와 같이 findget 을 구분해 네이밍 컨벤션을 맞춰보면 어떨까요?

  • 완료한 이후 Domain Service 에서 인터페이스로 맞춰 보면 좋을 것 같아요.

[find vs get (네이밍 컨벤션과 JPA에서의 내부 동작 차이) — 화음을 좋아하는 리차드🎶 (tistory.com)](https://creampuffy.tistory.com/162)

주재현

  • auth 구현
  • jwt를 이용한 access, refresh token 구현
    • mocking을 이용한 test code 작성

발표

[개발 완료 기능]

안드로이드

  • 스토리 D) 지도에 SnapPoint 형태로 표시
  • 스토리 E) 게시글의 축약된 정보 = 미리보기 화면 표시
  • 스토리 A) 게시글 작성 까지 보여주기 ( 현재는 TextBlock만 )

백엔드

  • 게시물 생성, file 업로드 api 구현
    • 임시 저장

https://app.swaggerhub.com/apis-docs/TAKENY1998/snap-point_api/1.0

  • 로그인, 회원가입 api 구현 / 미배포
    • access token
    • refresh token

[구현 과정에서의 기술적 경험]

안드로이드

  • 지도 줌 레벨 맞추기

  • 사용자 현재 위치 권한 확인 및 갱신 - 승빈

    사용자의 위치 정보를 가져올 때, 현재 위치가 아닌, 최근 위치를 가져오기 때문에

    가져온 위치 정보가 현재 위치가 아닐 가능성이 존재 !

    때문에 현재 위치를 갱신할 필요성을 느꼈다.

    MainActivity 실행 시 사용자 최근 위치 정보를 가져오는 fusedLoactionClient 및 위치 정보 갱신 Callback 정의

    Untitled

    내 위치를 가리키는 FAB 클릭시 권한 확인 및 유저 위치를 가져오는 함수 실행

    Untitled

    해당 함수에서 위치 권한을 확인 후, 승인된 권한이라면 최근 위치를 map의 카메라로 지정하고, 아니라면 권한을 요청하는 함수 호출

    PermissionUtil에서 권한 확인을 진행하기 때문에 surpressLint 문구 생성

    Untitled

    주기적으로 (현재는 1초) 사용자의 현재 위치 정보를 가져오는 콜백.

    Untitled

    생명주기에 따라 사용자의 위치 정보를 주기적으로 업데이트하는 콜백 실행

    Untitled

    PermissionUtil 내부. 권한 확인용

    Untitled

    권한 요청의 결과를 메시지로 출력.

    Untitled

  • 주변 게시글 아이템에 애니메이션 적용

    • 아이템의 확장 여부에 따라 애니메이션 적용
    • 확장 버튼은 확장 여부에 따라 180도 회전하도록 애니메이션 적용
    • 아이템이 확장될 때 나타나는 레이아웃은 LinearLayout 내에 관리하고, 아이템이 확장되고 축소될 때 높이를 조절하는 애니메이션을 구현하여 적용
    • 애니메이션이 끝날 때 해당 LinearLayoutvisibility를 변경하는 방식으로 애니메이션을 구현
  • 게시글 작성 기능

    • 블록 타입을 텍스트/사진/영상으로 나눠서 작성
    • Request 보내기 + Response 확인
  • 추가 기술적 도전

    • 필요한 스냅포인트만 업데이트해서 랜더링 성능 향상
    • 지도 축적(줌) 변경 시 겹치는 SnapPoint를 하나의 SnapPoint로 합치는 클러스터링 구현

백엔드

  • 도메인 서비스, 어플리케이션 서비스 분리
// 각각 서비스는 crud를 담당
- post/
- block/
- file/

// 실제 게시물 생성 api
// post 생성 -> block 생성 -> block-file 연결
- post-api/

// 도메인
class PostService {}
class BlockService {}
class FileService {}

// 어플리케이션
class PostApiSerivce {}
POST /posts/publish
{
    "title": "Test Post",
    "blocks": [
        {
            "type": "text",
            "content": "This is Text Block."
        },
        {
            "type": "media",
            "content": "This is Media Block.",
            "latitude": 8.1414,
            "longitude": -74.3538,
            "files": [
                {
                    "uuid": "127f93b1-f1e6-4578-83f9-ee953231aa84"
                }
            ]
        }
    ]
}
  • 서로의 의존성 관리

  • 데이터 일관성 관리

  • 트랜젝션 관리

  • 로그인, 회원가입 api 구현

  • 이미지 캐싱 필요

    • CDN?
    • Redis?
    • 로컬 캐싱
  • 로그인, 회원가입

    • access, refresh token 구현

팀 회고, 개인 회고

팀회고

진행사항

Android

스프린트 계획

Story D 사용자는 게시글의 사진 및 동영상을 지도에 표시된 마커의 형태로 확인할 수 있다. Story E 사용자는 게시글의 축약된 정보를 확인할 수 있다.

수행 결과

지도, 마커 표시

  • 현재위치를 알아내기 위해 권한 요청
  • 스냅포인트에 이미지 추가 및 현재 선택한 스냅포인트에 하이라이트
  • 미리보기 버튼 클릭 시 지도에 스냅포인트와 경로 표시
  • 경로가 전부 보이도록 Zoom Level 조절

게시글 목록

  • Bottom Sheet의 단계 설정 및 최대높이 조절
  • 목록의 게시글을 터치하면 확장, 축소되며 애니메이션을 적용
  • 미리보기 버튼을 누르면 미리보기 화면으로 이동

미리보기

  • 게시글의 사진과 설명을 Carousel View로 표시
  • 보고있는 이미지와 마커의 하이라이트 연동

백엔드-안드로이드

  • API를 바탕으로 Create Post 구현

Backend

수행 결과

기본적인 로그인, 회원가입 구현

  • 유저 CRUD 구현
  • 리프레쉬 토큰 구현
  • 테스트 코드 작성
  • auth

API 구현

  • 게시글 작성 API 구현
  • 이미지 업로드 API 분리 및 DB 스키마 업데이트
  • 문서화 및 배포
  • Prisma Provider Mocking 및 도메인 모듈 테스트
  • 테스트 코드 작성

해야 할 일

  • Wiki 작성
    • 스크럼 회의록
  • Project Issue 업데이트
    • 완료한 이슈 Done 표시
    • 완료한 기능의 체크포인트에 [x] 표시하기
    • 스크린샷 추가

개인회고

  • K025_원승빈

    이번 주의 Android 파트는 스토리 두 개를 구현했습니다.

    하나의 스토리를 제가 맡고, 다른 하나는 저를 제외한 팀원 두분이서 맡아 진행했습니다.

    이번 주 맡은 스토리는 작업 예상 시간을 많이 벗어나지 않았습니다.

    다음 주도 이번 주의 작업 시간을 바탕으로 작업 예상 시간을 조정하는 과정을 거쳐, 팀의 작업 속도를 파악해 기능 구현의 우선순위에 따른 선택을 잘 할 수 있도록 할 것입니다.

    구현하는 과정에서 멤버십의 학습 스프린트 때 학습했던 부분이 도움이 많이 되었습니다.

    새로 접하는 기술을 적용해 구현할 때도 챌린지 때 배웠던 학습 방법 덕분에 중간에 길을 잃지 않고 수월히 찾아갈 수 있었습니다.

    서버 api가 나와 적용을 했습니다.

    mock 데이터를 만들어 로직을 모두 구현해 놓았기 때문에 큰 어려움 없이 연결을 할 수 있었습니다.

    예상 데이터와도 크게 벗어나지 않았습니다.

    이번 주부터는 그룹 발표시간에 데모를 해야 하기 때문에, 개별적으로 구현한 스토리를 합치는 역할을 맡아 진행했습니다.

    동작이 가능한 상태에서 보니, 디자인을 해주신 희범님 덕분에 보기에는 완성도가 높아 보이는 중간 결과물이 나왔지만 기술적인 도전에 대한 질문이 들어온다면 아직 대답할 수 있을만한 것이 없는 것 같다 생각했습니다.

    빠르게 MVP개발을 마치고, 클러스터링이나 영상 캐싱과 같은 기술적 도전에 대한 개발을 진행할 수 있으면 좋을 것 같습니다.

  • J150_주재현

    이번주는 본격적인 api 개발을 진행했습니다.

    희범님이 지난주 같이 진행하던 api의 완성을 담당하셨고 전 로그인, 회원가입 기능을 구현했습니다.

    고려해야할 점도 많았고 새로운 구조, 기능을 만들다 보니 많이 헷갈리는 부분들이 있었습니다.

    팀원분과 계속 소통하면서 어떻게 또 잘 구현했던 것 같아 뿌듯하네요

  • K030_이정건

    이번 주에는 드디어 지도를 포함한 메인 화면의 구현을 시작하였다. 메인 화면에 지도를 추가하고, 지도 위에 ViewModel의 데이터를 참고하여 스냅포인트를 그려주도록 구현하였다. 그리고 각 스냅포인트에 클릭리스너도 추가해주었다.

    나는 주로 주변 게시글 화면을 담당했는데, 이는 Bottom Sheet에 그려지는 화면이다. 지도의 현재 위치와 줌 레벨에 따라 데이터를 받아오게 될건데, 이 데이터를 기반으로 주변 게시글 목록을 화면에 그려주는 부분을 구현하였다. 아직은 관련 API가 완성되지 않아서, 일단은 ViewModel에 임의로 데이터를 넣어서 작업하고 테스트하였다.

    여기도 게시글 생성 화면과 마찬가지로 RecyclerView로 구현하였지만, 아이템의 레이아웃이 동일하고, 순서를 바꾸거나 아이템을 추가/제거할 일이 없어 비교적 순조롭게 진행하였다. 아이템을 확장하거나 축소시키는 기능이 있는데, 이를 구현할 때 애니메이션을 추가해주는 작업을 처음해봐서 낯설었지만 구글링을 통해 해당 로직에 대한 코드를 보고 따라 구현할 수 있었다.

    이번 주 스프린트에 해야 할 작업을 모두 마치고, 드디어 게시글 작성 API가 나와서 게시글 작성 화면과 연결해볼 수 있었다. 점점 뭔가 완성되어가는 느낌이 든다.

🚩SnapPoint🚩

Android 기술적 도전

Backend 기술적 도전

🤖기술 공유🤖

Android

Backend

📖회의록📖

스크럼
팀회고, 개인회고
Clone this wiki locally