Skip to content

10월 31일 회의록

MoonGoon edited this page Nov 4, 2024 · 1 revision

오늘 회의 내용

  • 피그마 UI 구성
  • 리드미 작성
  • Project backlog 작성
  • 발표 준비
  • 멘토링

리드미 작성

Core Data

  • 데이터의 영구 저장을 위해서 Core Data를 사용합니다.
  • Core Data는 데이터를 객체 모델링할 수 있게 해주는 동시에, 관계형 데이터베이스처럼 데이터 간의 관계를 설정하고 관리할 수 있습니다.
  • Core DataiCloud와 연동성이 좋습니다.

Network

AI(NAVER CLOVA Studio)

  • 회고를 쉽게 하기 위해서 누군가와의 대화의 형식을 채택합니다. 지정된 형식보다는 챗봇AI를 통해 개인화된 질문을 주고 받을 수 있도록 합니다.
  • 숏폼의 시대를 반영해, 긴 대화 회고를 요약해서 빠르게 읽고 찾을 수 있도록 합니다.

UIKit + SwiftUI

  • SwiftUI는 구조체와 함수형 프로그래밍 방식으로 좋은 성능과 안정성, 그리고 간결성을 가집니다. 하지만 아직까지 UIKit을 완전히 대체하지 못하기에, UIKit을 기반으로 두고 선택적으로 SwiftUI를 도입하도록 합니다.

Swift Concurrency

  • 기존 동시성 코드는 콜백을 활용해 제어 흐름이 여기저기 갈 수 있어 읽기 쉽지 않았으나, Swift Concurrency는 구조화된 제어 흐름으로 순서대로 나열되고 중첩될 수 있어 코드를 위에서 아래로 직관적으로 읽을 수 있습니다.
  • DispatchQueue를 통한 멀티 스레드 프로그래밍은 스레드의 생성을 야기하며, 많은 양의 스레드가 생성되면 과한 문맥 교환을 초래해서 오히려 성능을 떨어뜨릴 수 있습니다. 이에 비해 Swift Concurrency는 스레드의 수를 코어의 수만큼으로 유지하고 가벼운 continuation 객체를 교환하기에 성능적 이점을 얻으려 합니다.

Combine

  • 네트워크 요청, Core Data 변경 사항과 같은 연속적인 이벤트구독하고 반응하기 위해 사용합니다.
  • 메소드로 메시지를 주고 받으며 변화에 대응하는 방식보다, 관점을 옮겨 데이터의 변화에 대한 흐름을 생성하고 그와 관련된 로직을 잇는 반응형 프로그래밍을 활용하려 합니다. 여러 선택지 중 애플에서 제공하는 Combine을 도입합니다.

Multipeer Connectivity

  • 근처 지인들과 오프라인에서의 회고를 공유하기 위해 Multipeer Connectivity를 사용합니다.

CloudKit

  • 공유하는 데이터가 사진과 같이 큰 데이터가 아니므로 iCloud에 저장합니다.
  • iCloud 를 동기화하여 하나의 계정으로 여러 기기에서 같은 데이터를 사용할 수 있습니다.
  • 공유 그룹을 만들어 폴더를 공유하기 위해 사용합니다.

발표 준비

멘토링

Clone this wiki locally