구글(Google)과 애플(Apple)이 양분하는 모바일 앱 생태계에서 개발자, 특히 1인 개발자가 앱을 만들고 유지보수하는 것은 쉽지 않은 일입니다. 이러한 어려움을 해결하고자 순수 Go 언어와 HTML만을 사용하여 오프라인 우선 웹 애플리케이션(PWA)을 구축할 수 있는 새로운 프레임워크 'Swag'이 등장했습니다. Swag은 HTMX, DaisyUI/TailwindCSS, 서비스 워커(Service Worker) 기술을 결합하여 개발자가 복잡한 모바일 개발 환경에 얽매이지 않고도 견고한 앱을 만들 수 있도록 돕습니다.
Swag의 핵심은 Go 핸들러와 HTML 템플릿을 WebAssembly(WASM)로 컴파일하여 서비스 워커 내에서 실행한다는 점입니다. 이는 앱이 한 번 설치되면 서버 연결 없이도 모든 읽기, 쓰기, 탐색, 렌더링이 로컬에서 이루어지는 진정한 오프라인 우선(offline-first) 환경을 제공합니다. 개발자는 JavaScript 앱을 작성하거나 JSON API를 설계할 필요 없이, UI는 `html/template`으로, 상호작용은 HTMX 속성으로, 로직은 `net/http` 핸들러로 구현할 수 있습니다. 또한, 동일한 코드로 일반 HTTP 요청을 처리하는 웹 앱과 오프라인 PWA를 동시에 배포할 수 있어 '한 번 작성하고 두 곳에 배포(Write once, ship both)'하는 효율성을 제공합니다.
이 프레임워크는 영구 저장소, 충돌 해결 기능이 있는 쓰기 지연 동기화, PWA 매니페스트 및 아이콘 세트, 업데이트 프롬프트, 설치 버튼, 캐시 버전 관리 등 PWA 개발에 필요한 모든 기능을 기본으로 제공합니다. `sw.js` 파일이나 클라이언트 측 JavaScript, 캐시 매니페스트 등을 수동으로 작성할 필요 없이 `swag build` 명령으로 모든 파이프라인이 자동 생성됩니다. 이러한 자동화 덕분에 개발자는 핵심 비즈니스 로직에 집중할 수 있으며, 일반적인 Go 테스트 방식을 통해 핸들러를 쉽게 테스트할 수 있어 개발 생산성을 크게 높일 수 있습니다. Swag은 모바일 앱 개발 진입 장벽을 낮추고, 1인 개발자들이 적은 리소스로도 고품질의 오프라인 우선 앱을 만들 수 있는 강력한 도구가 될 것으로 기대됩니다.
