위험할 정도로 충분한 Turbo Native: Rails 앱을 iOS/Android 앱으로 변환하기

Joe Masilotti - Just enough Turbo Native to be dangerous - Rails World 2023

작성자
모리땅
발행일
2023년 10월 19일

핵심 요약

  • 1 Turbo Native는 Rails 개발자가 기존 서버-사이드 HTML을 활용하여 iOS 및 Android 앱을 빠르고 효율적으로 구축할 수 있도록 지원하며, 네이티브 SDK 접근성을 제공합니다.
  • 2 앱 스토어 승인 없이 서버 코드 변경 사항이 모바일 앱에 즉시 반영되는 "한 번 작성, 어디든 배포" 모델을 통해 개발 주기를 단축하고 Rails 개발에 집중할 수 있습니다.
  • 3 Path Configuration과 Strada, Turbo Navigator와 같은 고급 기능을 통해 웹 UI의 한계를 넘어 특정 화면을 네이티브로 업그레이드하거나 네이티브 컴포넌트를 통합하여 유연성을 극대화할 수 있습니다.

도입

조 마살럿(Joe Masotti)은 Turbo Native가 Rails 개발자에게 슈퍼파워를 부여하며, 기존 Rails 코드베이스를 iOS 및 Android 앱으로 변환한다고 설명합니다. 서버-사이드 HTML을 네이티브 모바일 앱 내에서 렌더링하여 앱 스토어에서 다운로드 가능한 앱을 만들고 푸시 알림, 지오펜싱과 같은 네이티브 SDK에 완벽하게 접근할 수 있게 합니다. 그는 과거 하이브리드 기술에 회의적이었으나, 100개 이상의 Rails 화면을 단독으로 iOS/Android 앱으로 포팅하며 Turbo Native의 잠재력을 깨달았고, 이후 Turbo Native 전문가로서 수많은 앱을 출시하고 관련 라이브러리 유지보수 및 튜토리얼을 제공하고 있습니다.

Turbo Native는 웹 UI가 대부분의 데이터 렌더링 화면에서 “충분히 좋다”는 전제하에, 앱 스토어 출시를 위한 지름길을 제공합니다. 이는 몇 년이 아닌 몇 달 만에 앱을 배포하고 가설을 검증할 수 있게 합니다.

Turbo Native의 주요 이점

  • “한 번 작성, 어디든 배포” (Write Once, Deploy Anywhere): Rails 개발자는 서버에 코드를 푸시하면 새로운 변경 사항이 앱 스토어 승인 없이 iOS 및 Android 앱에 즉시 반영됩니다.
  • 개발 효율성 극대화: API를 구축하고 iOS 및 Android에서 각각 구현하는 값비싼 개발 주기를 건너뛰고, Rails 코드 작성에 집중할 수 있습니다.
  • 선택적 네이티브 업그레이드: 가속도계, GPS, 푸시 알림 등 네이티브 SDK 접근이 필요한 특정 화면만 네이티브로 업그레이드할 수 있어, “전부 아니면 전무” 방식이 아닌 유연한 접근이 가능합니다.

Turbo Native 앱 구축 데모발표자는 간단한 Rails CRUD 앱을 Turbo Native iOS 앱으로 변환하는 과정을 시연했습니다.

  1. 기본 설정: Xcode 프로젝트 생성 후 UINavigationController를 루트 뷰 컨트롤러로 설정합니다.
  2. Turbo iOS 통합: Swift Package Manager를 통해 Turbo iOS 라이브러리를 추가하고, Session 객체를 생성하여 HTML 렌더링 및 스냅샷 관리를 담당하게 합니다.
  3. 페이지 방문 및 탐색: rootURL (로컬 Rails 서버)을 방문하도록 설정하고, SessionDelegate 프로토콜을 구현하여 링크 클릭 시 새로운 페이지를 방문하도록 처리합니다.
  4. 네이티브 UI 개선:* 웹 내비게이션 바 숨기기: WKWebViewConfiguration을 통해 User Agent에 turbonative-iOS를 추가하고, Rails에서 이 User Agent를 감지하여 native.css 파일을 조건부로 로드, 웹 내비게이션 바를 숨깁니다. 이는 캐싱 문제를 방지하고 스타일을 유연하게 관리할 수 있게 합니다. * 동적 네이티브 타이틀: Rails의 content_for 헬퍼를 사용하여 각 페이지의 <title> 태그를 동적으로 설정하고, 이 값을 네이티브 내비게이션 바의 타이틀로 활용합니다. * 이미지 업로드: <input type="file">과 같은 표준 HTML 요소를 사용하면 Turbo Native가 자동으로 네이티브 이미지 선택 UI를 제공하여 복잡한 네이티브 코드 없이도 이미지 업로드를 처리할 수 있습니다.

고급 기능 및 미래 전망

  • Path Configuration: 서버에서 호스팅되는 JSON 파일을 통해 URL 패턴에 따라 네이티브 화면 라우팅 규칙을 정의할 수 있습니다. 이를 통해 앱 스토어 업데이트 없이 네이티브 기능 라우팅을 변경하고 이전 버전과의 호환성을 유지할 수 있습니다. 예를 들어, 특정 지도 화면을 네이티브 Swift UI 지도로 렌더링하도록 설정할 수 있습니다.
  • Strada (예정): 전체 화면이 아닌 네이티브 컴포넌트를 HTML로 구동할 수 있게 하여 웹과 네이티브 간의 간극을 메웁니다. 이를 통해 네이티브 오버플로우 버튼과 같은 요소를 쉽게 통합할 수 있습니다.
  • Turbo Navigator (예정): Turbo iOS 시작 시 필요한 복잡한 상용구 코드를 줄여주는 패키지로, 모달, 스택 탐색, 스택 초기화 등 15가지 네비게이션 흐름을 간소화합니다. 이는 곧 Turbo iOS 라이브러리에 통합될 예정입니다.

결론

Turbo Native는 Rails 개발자가 기존 웹 기술 스택을 활용하여 고품질의 모바일 앱을 신속하게 구축하고 배포할 수 있는 강력한 도구입니다. 웹과 네이티브의 장점을 결합하여 개발 효율성을 극대화하고, 필요에 따라 네이티브 기능을 유연하게 통합할 수 있는 경로를 제공합니다. Path Configuration과 Strada, Turbo Navigator와 같은 지속적인 발전은 Turbo Native의 역량을 더욱 확장하여, Rails 개발자가 모바일 앱 시장에서 경쟁력을 확보하는 데 필수적인 솔루션이 될 것입니다. 조 마살럿은 Turbo Native 앱 개발에 대한 컨설팅 및 교육 서비스를 제공하며, 이 기술의 확산에 기여하고 있습니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!