Ember: iOS용 네이티브, 접근성 우선 해커 뉴스 리더
Ember는 SwiftUI로 구축된 네이티브 해커 뉴스 리더로, iPhone, iPad, Mac 전반에 걸쳐 고성능·접근성 높은 경험을 제공합니다. 서드파티 의존성을 배제하고 스레드형 댓글을 네이티브 렌더링함으로써 Ember는 장시간 기술 토론에 최적화된 "차분한" 읽기 환경을 제공합니다.
접근성 우선 디자인
Ember는 접근성을 선택적인 부가 기능이 아니라 핵심 기능으로 다루며, 특히 색각 이상과 시스템 수준 접근성 설정에 중점을 둡니다.
색상에 의존하지 않는 시각적 단서
색맹 사용자를 위해 Ember는 상태 전달에 색상만을 절대 사용하지 않습니다. 다음을 구현합니다:
- 아이콘 사용: 포인트와 댓글 수는 SF Symbols와 함께 표시됩니다.
- 상태 표시기: 읽음 상태는 체크마크로, 선택 상태는 원과 체크마크로 표시됩니다.
- 명시적 단서: 시스템의 "색상 없이 구분" 설정이 활성화될 때 자동으로 켜지는 전용 설정이 UI 전반에 색상이 아닌 표시기를 추가합니다.
- 링크 식별: 댓글 내 링크는 색상에 의존하지 않고도 식별할 수 있도록 밑줄을 적용할 수 있습니다.
시스템 통합
Ember는 iOS 접근성 프레임워크와 깊게 통합됩니다:
- VoiceOver: 스토리 행과 컨트롤은 의미 있는 레이블, 힌트, 커스텀 액션을 사용해 각 스토리가 하나의 일관된 요소로 읽히도록 합니다.
- Dynamic Type: 타이포그래피는 시스템 텍스트 크기에 맞춰 확대·축소되며, 레이아웃(댓글 들여쓰기 포함)도 접근성 크기에 맞게 조정됩니다.
- Reduce Motion: 시스템의 Reduce Motion 설정이 켜져 있으면 애니메이션과 로딩 쉐이머가 최소화됩니다.
- Adaptive Onboarding: 첫 실행 시 Ember는 VoiceOver, Bold Text, 큰 텍스트 등 시스템 설정을 감지해 앱을 자동으로 맞추고 변경 사항을 사용자에게 알립니다.
기술 아키텍처
Ember는 iOS 18을 목표로 최신 Apple 스택을 사용해 구축되었으며, 데스크톱 지원을 위해 Mac Catalyst를 활용합니다.
핵심 스택
- UI 프레임워크: 순수 SwiftUI. 레이아웃은 가로 크기 클래스에 따라 적응합니다: iPhone에서는
TabView, Mac 및 iPad에서는 3열NavigationSplitView. - 상태 관리: Observation 프레임워크(
@Observable)를 뷰 모델과 스토어에 사용합니다. - 동시성: 네트워킹은
async/await로 처리하고,TaskGroup을 이용해 피드 페이지를 동시에 가져옵니다. - 영속성:
UserDefaults가 설정 및 읽음 상태를 관리하고, 제한된 JSON 디스크 캐시(DiskCacheactor)가 피드 목록과 댓글 트리를 오프라인 폴백용으로 저장합니다.
데이터 소싱 및 렌더링
Ember는 두 가지 주요 API를 결합해 원활한 경험을 제공합니다:
- 공식 HN Firebase API: 피드, 아이템, 사용자 프로필에 사용됩니다.
- Algolia HN Search API: 전체 텍스트 검색 및 단일 요청으로 전체 댓글 트리를 가져오는 데 사용됩니다.
웹뷰 오버헤드를 피하기 위해 Ember는 커스텀 HTML 파서를 사용해 Hacker News의 제한된 태그 집합(<p>, <i>, <b>, <a>, <pre><code>, <br>)을 네이티브 AttributedString 블록으로 직접 변환합니다.
주요 기능
- 포괄적인 피드: 고정된 필터 바를 통해 Top, New, Best, Ask HN, Show HN, Jobs에 접근합니다.
- 오프라인 기능: 즐겨찾기한 스토리는 기기에 저장되며, 조회한 피드와 댓글 스레드는 디스크에 캐시돼 오프라인 시 자동 폴백됩니다.
- 크로스 플랫폼 레이아웃: Mac 및 iPad에서 네이티브 3패널 레이아웃을 제공해 소스 리스트 사이드바, 스토리 리스트, 토론 뷰를 나란히 표시합니다.
- 읽기 최적화: 앱은 Inter 가변 폰트를 사용하고, 편안한 행간과 제한된 폭을 적용해 긴 스레드의 가독성을 높입니다.
- 사용자 프로필: 사용자 karma, 가입 날짜, 최근 제출물을 확인할 수 있습니다.
커뮤니티 피드백 및 인사이트
Hacker News 사용자들은 앱의 접근성 강조에 가치를 두고 있으며, 한 색맹 개발자는 "앱이 색상 단서에만 의존하지 않을 때마다 정말 기쁩니다"라고 언급했습니다.
다른 커뮤니티 논의는 배포와 기능 동등성에 초점을 맞췄습니다:
- 배포: 여러 사용자가 App Store 제공 여부나 TestFlight 접근에 대해 문의했으며, 현재 프로젝트는 Xcode와 XcodeGen을 사용해 소스에서 직접 빌드해야 합니다.
- 기능 요청: 로그인 및 게시 지원 추가에 대한 관심이 있으며, 쿠키 추출을 위한 웹뷰 사용을 통해 HN 엔드포인트 인증을 제안했습니다.
- 비교: 사용자들은 Ember를 Octal, Hackfeed 등 다른 리더와 비교했으며, Ember의 오픈소스 특성과 접근성 중심이 큰 차별점이라고 평가했습니다.
요약
Ember는 iOS, iPadOS, macOS용 오픈소스 네이티브 SwiftUI 해커 뉴스 리더로, 접근성과 오프라인 독서를 최우선으로 하며 서드파티 의존성을 전혀 사용하지 않습니다.
제목
Ember: iOS용 네이티브, 접근성 우선 해커 뉴스 리더