날씨앱 팀프로젝트 - 1일차

maxminseok·2025년 1월 7일

오늘은 새 팀프로젝트를 진행했다.

이번 과제는 날씨앱, 단어장앱, 알림앱 3가지중 팀원들과 상의해서 한 가지를 선택해 진행하는 식이었다.

팀원들과 각자 하고싶은 앱이 있었는지 이야기해보는 시간을 가졌는데, 날씨앱으로 금방 결정되었다.

요구사항

이번 날씨앱의 요구 사항은 다음과 같다.

필수 기능

  1. 사용자 위치 지정
    1. 둘다 적용해봐도 좋으나, 둘 중에 한가지는 무조건 적용해주시기 바랍니다.
    • 서울, 부산처럼 정해진 위치를 지정하기
    • 본인의 위치를 기반으로 지정하기 (아이폰 기본 날씨 앱을 생각해보세요.)
  2. 날씨 데이터
    1. 날씨 API 예시 : OpenWeatherMap, WeatherStack
    • 사용자가 지정한 위치에 대한 날씨 API에서 날씨 데이터를 검색해 불러오기
  3. 사용자 입력
    • 사용자가 위치(도시 또는 우편번호)를 입력하여 해당 위치에 대한 날씨 정보를 얻기
  4. 날씨 표시
    • 현재 기상 조건을 표시 (온도, 습도, 풍속, 날씨 설명 등)
    • 날씨 조건을 나타내는 아이콘을 포함하기(예 : 맑은 날씨에는 태양, 흐린 날씨에는 구름 아이콘)
  5. 단위 변환
    • 온도 표시를 위해 섭씨와 화씨 사이를 전환하는 옵션을 구현
  6. 사용자 친화적인 인터페이스
    • 날씨 정보를 표시하기 위한 직관적이고 시각적으로 매력적인 사용자 인터페이스 적용
  7. 데이터 새로 고침
    • 사용자가 화면을 아래로 당겨(당겨 새로 고침) 날씨 데이터를 수동으로 새로 고칠 수 있습니다.
  8. 배경 이미지
    • 적절한 배경 이미지나 색상을 사용, 현재 기상 조건을 반영하고 앱의 시각적 매력을 향상 시킵니다.

도전 기능

  1. 예보
    • 선택한 위치에 대한 며칠 간의 일기 예보를 표시하도록 앱을 확장합니다.
  2. 위치 서비스
    • 사용자의 현재 위치를 자동으로 감지하고 해당 위치에 대한 날씨 데이터를 제공하는 위치 서비스를 구현합니다.
  3. 지도 통합
    • 날씨 데이터가 표시되는 위치를 보여주는 지도 보기를 포함합니다.
  4. 검색 기록
    • 최근 검색한 위치의 기록을 저장하고 표시합니다.
  5. 애니메이션
    • 미묘한 애니메이션이나 전환을 추가하여 사용자 경험을 향상시킵니다.
  6. 디자인 패턴
    • MVVM 패턴을 적용해보세요.
  7. 동기/비동기
    • RxSwift 활용

우리는 이 중에서 필수 기능을 우선시 하는 와중에, 도전 기능의 MVVM 패턴과 RxSwift 활용도 같이 진행하기로 했다.

다른 패턴으로 먼저 하고 나중에 리팩토링 하기보다는 처음부터 MVVM 패턴으로 정하고, RxSwift를 활용해 데이터를 바인딩 하면 더 수월하게 진행할 수 있을 것이라고 생각했기 때문이다.

와이어 프레임

여러 레퍼런스를 검토한 끝에, 메인 화면에서 일러스트로 날씨를 한눈에 알아보기 쉽게 만들고, 상세 날씨나 지역 설정, 앱 설정을 할 수 있도록 만들기로 하였다.

협업 룰 정하기

코드 컨벤션을 지키기 위해 swift lint를 사용해보기로 하였고, 전에 했던 것처럼 issue 브랜치를 만들어 기능 단위로 구현을 진행하기로 하였다.

프로젝트 관리는 깃허브의 Projects를 활용하여 진행 상황을 관리하기로 하였다.

0개의 댓글