TEDiSUB 3.0 개발 과정 및 설계 철학

Source

  • Evernote/Advanced View Required/SEMIX2의 인터넷과 모바일 TEDiSUB 3.0 개발 과정을 공유합니다.md

Summary

본문은 iOS 앱 ‘TEDiSUB’의 3.0 버전 개발 배경과 기술적 리팩토링 과정을 다룬다. TED 공식 앱의 자막 지원으로 인해 기존 서비스의 가치가 하락하자, 개발자는 ‘강연 시청’에서 ‘강연 활용(이해 및 공유)‘으로 목표를 전환했다. 어학용 기능(사전, 스크랩 등)은 배제하고, 원어 뉘앙스 전달과 집중력 향상을 위해 한글/영어 자막 동시 표시 기능을 구현했다. 기술적으로는 레거시 코드의 복잡성(스파게티 코드)을 해결하기 위해 프로젝트를 새로 시작했으며, 배포 타깃을 iOS 5로 설정하여 iPad 1 호환성을 유지했다. 코드 가독성 향상을 위해 ARC 적용, Objective-C 문법 개선, UIViewController 계층화(Delegate/Notification 패턴 활용)를 수행했다. UI/UX 측면에서는 자막 크기 개별 설정을 통한 집중력 보정, UINavigationController의 한계를 극복하기 위한 UIScrollView 기반 커스텀 설정 화면 구현, AVPlayer 재생 속도 조절(rate 변경) 등의 해결책을 제시한다.

Key Points

  • 서비스 방향 전환: TED 공식 앱의 자막 지원으로 인한 경쟁력 상실을 극복하기 위해 ‘강연의 본질 훼손 없이 활용도 증대’를 새로운 목표로 설정
  • 기능 범위 정의: 어학 학습 도구(사전, 단어장 등) 기능은 배제하고, 두 언어 자막 동시 표시를 통해 원어 뉘앙스 이해와 강연 내용 정리에 집중
  • 리팩토링 동기: 3 년간 누적된 레거시 코드의 복잡성과 유지보수 어려움으로 인해 프로젝트 초기화 및 재구축 결정
  • 기술 스택 및 타깃: iPad 1 호환성을 위해 iOS 5 를 배포 타깃으로 선택, ARC 적용 및 Objective-C 최신 문법 (리터럴 구문 등) 도입으로 코드량 절감 및 가독성 향상
  • 아키텍처 개선: 단일 클래스에 집중된 로직을 UIViewController 계층 구조로 분리, Delegate 패턴과 Notification Center(Blackboard 패턴) 를 활용한 느슨한 결합 구현
  • UI/UX 최적화: 자막 크기 개별 설정을 통해 시선 분산 방지 및 집중력 향상, UINavigationController 의 UI 제한점을 UIScrollView 페이징 기법으로 우회하여 커스텀 설정 화면 구현
  • 재생 제어 개선: AVPlayer 의 play() 함수가 rate 를 1.0 으로 고정하는 문제를 인지하고, rate 속성 직접 변경을 통한 재생 속도 조절 기능 구현