Rails와 YAML 파일로 Xcode 없이 네이티브 iOS 앱 구축하기
I built a native iOS app with Rails and one YAML file
핵심 요약
- Ruby Native는 Rails 뷰를 WKWebView로 렌더링하면서도 탭 바, 내비게이션 바 등 핵심 UI를 네이티브 컴포넌트로 대체해 사용자 경험을 개선한다.
- YAML 설정 파일과 전용 ERB 헬퍼를 사용하여 Swift 코드 작성이나 Xcode 사용 없이 Rails 코드베이스 내에서 네이티브 기능을 제어할 수 있다.
- Sign in with Apple과 같은 복잡한 인증 프로세스를 클라우드 빌드 파이프라인을 통해 처리하며, 기존 OmniAuth 설정을 그대로 활용 가능하다.
도입
Rails 개발자가 네이티브 iOS 앱을 구축할 때 겪는 기술적 장벽인 Swift 학습, Xcode 설정, 복잡한 인증 구현 등을 해결하기 위한 Ruby Native 도구를 소개한다. 실제 앱스토어에 출시된 Beervana 앱 사례를 통해, Rails 서버에 위치한 단 하나의 YAML 파일과 기존 ERB 템플릿만으로 어떻게 네이티브 수준의 사용자 경험을 구현할 수 있는지 상세히 설명한다.
상세 요약
하이브리드 앱의 한계 극복
전형적인 하이브리드 앱은 웹 뷰를 단순히 래핑하는 방식에 그쳐 탭 바의 반응성, 뒤로 가기 버튼의 동작, 폼 입력 방식 등에서 네이티브 앱 특유의 매끄러운 느낌을 주지 못한다. Ruby Native는 Rails 앱을 WKWebView에서 실행하되, 주요 UI 요소를 실제 UIKit 컴포넌트로 교체하여 이 문제를 해결한다. 개발자는 별도의 iOS 코드베이스나 API를 구축할 필요 없이 기존의 컨트롤러와 ERB 템플릿을 그대로 사용한다.
YAML로 설정하는 네이티브 탭 바
CSS로 구현한 탭 바는 탭 간 이동 시 페이지 리로드 문제나 상태 관리의 어려움이 있다. Ruby Native는 YAML 설정 파일만으로 네이티브 탭 바를 구성하며, 탭 간 데이터 동기화와 로그아웃 시 탭 바 숨김 처리 등을 자동으로 수행한다.
tabs:
- title: Explore
path: /explore
icon: binoculars
- title: Passport
path: /passport
icon: wallet.bifold
- title: Profile
path: /profile
icon: person
네이티브 내비게이션 바와 메뉴
native_navbar_tag를 사용하면 iOS의 UINavigationBar를 렌더링할 수 있다. SF Symbol을 활용한 버튼 추가는 물론, 드롭다운 메뉴와 네이티브 알림창(Alert)도 ERB 내에서 정의 가능하다. 특히 click 옵션을 통해 DOM 요소를 트리거함으로써 기존의 turbo_confirm 로직을 네이티브 UI와 연결한다.
<%= native_navbar_tag do |navbar| %>
<% navbar.button icon: "line.3.horizontal" do |menu| %>
<% menu.item "Sign out", click: "#sign-out" %>
<% end %>
<% navbar.button icon: "pencil", href: edit_profile_path %>
<% end %>
iOS 표준을 따르는 네이티브 폼
웹 폼과 달리 iOS 폼은 모달 시트로 슬라이드 업 되거나 내비게이션 바에 저장 버튼이 위치하는 등 고유한 사용자 기대치가 있다. native_form_tag는 이러한 동작을 자동화한다. 폼 제출 시 내비게이션 바의 버튼이 비활성화되며 로딩 인디케이터가 표시되고, 처리가 완료되면 시트가 자동으로 닫힌다. 이러한 설계 철학은 프레임워크 독립적인 Ruby Gem 설계와 자동화 테스트를 통한 안정성 확보 기사에서도 확인할 수 있듯이 일관된 사용자 경험을 제공하는 데 집중한다.
인증 및 배포 프로세스
'Sign in with Apple'과 같은 기능은 보통 Swift로 ASWebAuthenticationSession을 다루고 세션 쿠키를 동기화하는 복잡한 과정이 필요하다. Ruby Native는 이를 추상화하여 기존 OmniAuth 경로만 지정하면 네이티브 시스템 시트와 Face ID 연동을 처리한다.
또한, 모든 빌드 파이프라인이 클라우드에서 실행되므로 개발자 로컬 환경에 Xcode나 인증서를 설치할 필요가 없다. 이는 Hotwire Native를 활용한 Rails 방식의 모바일 앱 개발 전략과 궤를 같이하며, 웹 서버 배포만으로 앱을 업데이트할 수 있는 유연성을 제공한다.
가격 및 적용 범위
- 가격: 앱당 연간 $299 (TestFlight 배포는 무료).
- 장점: Swift 코드 작성 전무, Xcode 미사용, 기존 Rails 인프라 재활용.
- 대상: 빠른 시장 진입이 필요한 Rails 기반 스타트업 및 1인 개발자.
결론
Ruby Native는 Rails 개발자가 익숙한 도구만으로 네이티브 앱을 빠르게 배포할 수 있게 돕는다. 클라우드 빌드 시스템을 통해 로컬 환경 설정의 번거로움을 제거했으며, 연간 $299의 비용으로 유지보수 효율성을 극대화할 수 있는 대안을 제시한다. 이는 별도의 모바일 팀 없이도 고품질의 iOS 앱을 운영하고자 하는 1인 개발자나 소규모 팀에게 실질적인 해결책이 된다.