Skip to content

따뜻한 일상부터 특별한 순간까지 기록하다, 기록소 🏠

Notifications You must be signed in to change notification settings

boostcampwm-2024/iOS10-MemorialHouse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

🏠 기록소 - Memorial House

iOS 16.0 Xcode 16.1 Swift 6.0

사랑하는 이들과의 소중한 추억을 기록소에서 책으로 엮고 출판해보세요.

따뜻한 일상부터 특별한 순간까지 추억을 출판하는 곳, 기록소 🏠


🍎 기록소 주요 기능

image image image
image image image

🧱 아키텍처

Clean Architecture + MVVM

스크린샷 2024-11-28 오후 11 04 05
  • View와 비즈니스 로직 분리를 위해 MVVM 도입

  • 추후 서버 도입 가능성을 고려해 Repository Pattern을 적용하기 위한 Data Layer 도입

  • ViewModel의 복잡도가 증가할 것을 예상하여 Domain Layer를 두어 Use Case에서 처리

  • 테스트 가능한 구조를 만들기 위해 Domain Layer에 Repository Interface 구현

🛠️ 기술 스택

Combine

  • MVVM 패턴에서 View와 ViewModel의 바인딩을 위해 Combine을 활용했습니다.
  • Combine은 First Party 라이브러리라는 점에서 안정성과 지원이 뛰어나며, RxSwift에 비해 성능적인 이점이 있어 RxSwift 대신 Combine을 도입했습니다.

Swift Concurrency

  • 비동기 프로그래밍을 위해 Swift Concurrency(async/await)를 활용하였습니다.
  • 기존의 콜백 기반 비동기 프로그래밍은 코드의 깊이가 증가해 가독성을 해치고, completion 호출을 누락하는 등 휴먼 에러가 발생할 가능성이 있었습니다.
  • Swift Concurrency을 도입하여 위 단점을 보완하여 코드 가독성과 안정성을 높이고자 했습니다.

CoreData + FileManager

  • Local DB로 Core Data와 FileManager를 함께 활용했습니다.
  • Core Data는 책과 페이지 간의 관계를 유지하기 위해 사용하며, 각 페이지는 멀티미디어 데이터를 포함할 수 있습니다.
  • 멀티미디어를 Core Data에 직접 저장하면, 책을 펼칠 때 모든 데이터를 한꺼번에 불러와 성능 저하가 발생할 수 있습니다. 이를 방지하기 위해 멀티미디어는 FileManager를 통해 디바이스에 저장하고, Core Data에는 해당 멀티미디어의 URL만 문자열로 저장했습니다.
  • 이러한 방식으로 페이지 로드 시 URL만 불러와 메모리 사용을 줄이고, 필요한 멀티미디어는 개별적으로 로드하여 효율성을 높였습니다.

🔥 우리 팀의 기술적 도전

4. 멀티 미디어를 담고 있는 TextView 저장하기 - 스냅샷 기반 저장하기

🧑‍🧑‍🧒‍🧒 집주인들

image

〰️ 부산 워크샵 단체사진 〰️


🎨 김영현 🥇 박효준 👓 안윤철 😽 임정현
집주인 내 골드핸즈(= 금손)
초고수 디자이너
영리아나 그란데
영카소, 영켈란젤로, 영흐
우리팀 리-더
발표 초-고수
황금막내
열정보이🔥
문서화 장인
데(DevOps) 윤철
분위기 메이커
아이디어 뱅크
동의, 인정, 공감 장인
돌리기 장인 (조리돌림)
우리팀 MZ
살아있는 네이버 클로바
루루 집사
스티브잡스, 스티브워즈니악,
스티브 임정현 Let's Go
@k2645 @kyxxn @yuncheol-AHN @iceHood

About

따뜻한 일상부터 특별한 순간까지 기록하다, 기록소 🏠

Topics

Resources

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages