1. Fabula 타임라인
Fabula 프로젝트 최초 생성일은 2021년 8월 24일 입니다. 그로부터 2개월이 지난 2021년 10월 28일에 Fabula 1.0 버전을 출시했습니다. 1.0 버전은 지금과는 다르게 기본적인 기능과 몇 가지 유닛 아이템들만 포함해서 출시했기 때문에 오래 걸리지는 않았습니다.
Apple에서 제공하는 SwiftUI Tutorials을 시작으로 SwiftUI 학습을 시작한 것은 2021년 7월 초부터입니다. 명령형 방식으로 프로그래밍하던 습관 때문에 다소 혼란은 있었습니다. 하지만 다른 분들도 개념 정리만 된다면 큰 어려움은 없을 것 같습니다.
출시 이후 1.1.x 버전에서는 위와 같은 기능들이 추가되었습니다. 기존 리스트 화면이 섹션 그룹으로만 표현하고 있어서 최근 아이템 순으로 볼 수 있는 화면을 추가했고, 코드를 볼 수 있도록 개선했으며, 채팅방
과 좋아요
기능을 추가했습니다. 좋아요
기능은 채팅방을 설계하면서 Firebase Cloud Firestore DB를 함께 사용했습니다. 하지만 실시간 동기화로 인해 데이터 사용량이 폭증할 때가 간혹 있어서 무료로는 감당하기 어려웠습니다. 그래서 불가피하게 좋아요
기능은 CoreData로 로컬 처리했습니다.
1.2.x 버전에서는 많은 변화가 있었습니다. 앱 내부에서 관리하던 유닛 아이템들을 패키지(FabulaItemsProvider)화 했으며, 패키지를 통한 배포 프로세스를 정립하고 기여자 랭킹도 추가했습니다. 기능적인 변경은 많지 않았으나 코드 변경은 많았습니다. 이후 UI개발에 도움이 될만한 라이브러리들을 하나하나 개발하며 업데이트했습니다.
2. Fabula에 등록된 유닛 아이템
플랫폼 | 카테고리 | ||
---|---|---|---|
- both : iOS와 macOS 동일하게 지원하는 아이템 | 222 | - UIUX : UI 또는 UX와 관련된 아이템 | 38 |
- iOS : iOS만 지원하는 아이템 | 22 | - PLAY : UI/UX 외 아이템 | 13 |
- macOS : macOS만 지원하는 아이템 | 2 | - STUDY : 학습을 위한 아이템 | 195 |
업데이트를 진행하며 아이템도 지속해서 추가했습니다. 현재까지 iOS/macOS 모두 지원하는 아이템이 222개, iOS 22개, macOS 2개가 등록되었습니다. 개인적으로는 iOS/macOS를 동일 코드로 지원하는 것을 지향하고 있습니다. 다만 iOS/macOS 각 기기에서만 지원하는 기능은 ItemData의 platformType
속성을 통해 분기 처리하고 있습니다.
카테고리별로는 UI/UX 관련 아이템이 38개, PLAY 13개, STUDY 195개가 등록되었습니다. UI/UX관련 아이템은 오픈 라이브러리로 개발한 샘플도 포함합니다. PLAY 카테고리는 실험적인 결과물을 담고 있고 STUDY는 SwiftUI를 학습하면서 작성한 샘플 코드를 메모하듯 추가하고 있습니다.
3. Fabula 통해 개발된 오픈 라이브러리
Fabula 프로젝트를 진행하며 SwiftUI로 개발한 오픈 라이브러리는 아래와 같습니다. 최대한 뷰를 자유롭게 디자인할 수 있도록 구현했으며 Axis 시리즈의 경우는 축 방향을 지원하도록 설계했습니다.
- UnsplashProvider : Unsplash의 API를 활용한 SwiftUI용 라이브러리입니다. Sort 기준에 따라 사진 검색 기능을 제공합니다.
- Zoomable : 뷰에 줌 기능을 적용할 수 있는 컨테이너 라이브러리입니다. SDWebimageSwiftUI를 이용하여 url 이미지를 zoom in/out 하는 기능도 제공합니다.
- Scroller : 스크롤에 위치에 따라서 각 뷰 안에 value 값을 자동으로 처리해주는 라이브러리입니다. 스크롤 위치에 따라 각 뷰에 0부터 1 사이의 값을 전달하여 애니메이션을 처리를 할 수 있도록 합니다.
- AnimateText : Text에 애니메이션을 처리할 수 있는 라이브러리입니다. Generic으로 effect 객체를 전달하여 다양한 애니메이션을 처리할 수 있습니다. 물론 커스텀 애니메이션 효과도 쉽게 만들 수 있습니다.
- LottieUI : iOS/macOS 플랫폼에서 함께 사용할 수 있는 SwiftUI용 Lottie 라이브러리 입니다.
- AxisSheet : 시트 컨테이너를 처리할 수 있는 라이브러리입니다. 상하좌우 방향을 지원합니다.
- AxisRatingBar : 별점을 처리할 수 있는 라이브러리입니다. 가로/세로 방향을 지원하고 View 프로토콜을 준수하는 모든 뷰를 디자인에 적용할 수 있습니다.
- AxisContribution : GitHub에서 제공하는 기여 그래프 디자인을 활용한 라이브러리입니다. 날짜 배열을 적용하면 카운트 기준에 따라 컬러로 강도를 표현합니다.
- AxisTooltip : 툴팁을 개발하기 쉽게 처리하는 컴포넌트 라이브러리입니다. 정렬 기준에 따라서 다양하게 처리 가능합니다.
- AxisTabView : SwiftUI에서 탭뷰를 쉽게 개발할 수 있는 컴포넌트 라이브러리입니다. 상, 하단에 적용할 수 있고 탭바 배경을 스타일로 지정하여 다양한 형태의 UI를 표현할 수 있습니다.
- AxisSegmentedView : 다양한 디자인을 적용할 수 있는 분할 뷰 컴포넌트 라이브러리입니다. Style을 적용하지 않을 경우에는 아코디언 메뉴 형식으로도 활용 가능합니다.
4. Fabula 앱스토어 사용자 통계
12월 20일부터 현재까지 통계 (기간 : 12월 20일 ~ 5월 12일)
튀는 통계치를 제외하기 위해 12월 20일 이후 통계 데이터를 취합했습니다.
노출 수
제품 페이지 조회 수
전환율 (전체 다운로드 수를 고유 기기 노출 수로 나눈 값)
전체 다운로드 수
최근 한달 통계 (기간 : 4월 13일 ~ 5월 12일)
최근 한달 동안의 데이터를 취합했습니다.
국가 및 지역별 전체 다운로드 수
기기별 전체 다운로드 수
마무리
앞으로도 SwiftUI를 학습하며 틈틈히 아이템을 추가할 예정입니다. 아직 다운로드 수가 많지 않아 유의미한 통계치라고 할 수는 없지만 전체적으로 완만한 상향 곡선을 보여주고 있습니다. 다만 컨텐츠의 성격상 일반 유저 타겟이 아니기 때문에 드라마틱하게 사용자가 늘어나지는 않을 것 같습니다. 그러나 필요한 분들에게 유용한 앱이 된다면 충분히 가치가 있다고 생각합니다.
다음 편에서는 위에서 언급한 오픈 라이브러리들의 구현 방법 및 사용법에 관해서 이야기해보겠습니다.