서론: 훌륭한 웹 툴, 하지만 스마트폰의 유혹은 막지 못했다
웹 브라우저 위에서 돌아가는 로또 추첨기, 경마 게임, 그리고 블로그 텍스트 변환기까지. 워드프레스라는 저만의 영토(heung-in.com)에 성공적으로 마이크로 SaaS들을 런칭하며 저는 엄청난 성취감을 맛보았습니다. 코드를 복사하고 붙여넣는 것만으로도 세상에 없던 편리한 도구들이 탄생했으니까요. 하지만 일상으로 돌아와 업무에 집중하려 할 때마다, 치명적인 방해물이 저를 괴롭혔습니다. 바로 쉴 새 없이 울려대는 스마트폰의 알림과 무의식적으로 SNS를 켜게 만드는 숏폼의 유혹이었습니다.
“내가 설정한 시간 동안은 아예 폰 화면을 꽉 잠가버려서 다른 앱을 켤 수 없게 차단하는 어플이 있다면 어떨까?”
스마트폰 중독을 방지하고 집중력을 되찾기 위한 이 절실한 아이디어는, 저를 웹 브라우저의 안전지대에서 끌어내어 한 번도 경험해보지 못한 ‘모바일 앱(App) 생태계’라는 거친 야생으로 등 떠밀었습니다. 이번 편에서는 코딩 초보가 웹사이트를 넘어 스마트폰 화면을 통제하는 네이티브 어플리케이션 기획에 도전하며, AI에게 모바일 생태계의 기초를 배워나가는 과정을 기록합니다.
1. 웹(Web)과 앱(App)은 집 짓는 기초 공사부터 다르다
처음에는 아주 단순하게 생각했습니다. 웹사이트를 만들 때처럼 AI에게 “폰 화면을 잠그는 HTML이랑 자바스크립트 코드 좀 짜줘”라고 입력하면 끝날 줄 알았죠. 하지만 AI의 대답은 단호했습니다.
-
AI의 조언: “웹 기술(HTML/JS)만으로는 스마트폰의 핵심 권한(화면 제어, 다른 앱 위에 그리기 등)에 깊숙이 접근하여 폰을 강제로 잠글 수 없습니다. 기기의 하드웨어와 운영체제(OS)를 직접 통제하려면 네이티브 앱(Native App) 형태로 개발해야 합니다.”
웹사이트가 브라우저라는 ‘공용 시설’을 빌려 쓰는 것이라면, 네이티브 앱은 안드로이드나 iOS라는 ‘운영체제 전용 부지’에 맞춰 기초 공사부터 완전히 새로 해야 하는 작업이었습니다. 코딩 언어 역시 자바스크립트가 아닌 코틀린(Kotlin)이나 자바(Java)라는 완전히 새로운 언어가 필요했습니다.
2. 폰 잠금 어플, 기획의 뼈대를 세우다
개발 언어는 달라져도, 훌륭한 시스템 로직을 세우는 기획자의 역할은 동일합니다. [입력-처리-출력]의 3단계로 폰 화면 잠금 앱의 작동 방식을 AI에게 상세히 브리핑했습니다.
나의 앱 기획 프롬프트: “나는 사용자의 스마트폰 중독을 막기 위해 지정된 시간 동안 폰을 아예 못 쓰게 잠그는 안드로이드 어플을 기획 중이야.
입력: 사용자가 앱을 켜고 ‘집중할 시간(예: 30분)’을 설정한 뒤 ‘잠금 시작’ 버튼을 누른다.
처리: 즉시 스마트폰 화면 전체를 덮는 잠금 화면이 실행된다. 홈 버튼이나 뒤로 가기를 눌러도 빠져나갈 수 없어야 해. (다른 앱 위에 그리기 권한 활용)
출력: 화면 한가운데에는 남은 시간이 타이머로 줄어드는 모습이 보이고, 시간이 다 끝나면 자동으로 잠금이 해제되며 원래 화면으로 돌아온다.”
기획안을 본 AI는 칭찬과 함께, 안드로이드의 ‘오버레이(Overlay) 권한’과 ‘백그라운드 서비스’라는 핵심 기술을 활용하면 충분히 구현 가능한 훌륭한 기획이라고 답해주었습니다.
3. 안드로이드 스튜디오(Android Studio)와의 낯선 첫 만남
웹 개발 시에는 워드프레스 화면만 띄워놓으면 끝이었지만, 모바일 앱을 만들려면 개발 전용 무거운 프로그램이 필요했습니다. AI의 안내에 따라 구글의 공식 앱 개발 툴인 **’안드로이드 스튜디오’**를 PC에 설치했습니다.
프로그램을 켜는 순간, 숨이 턱 막혔습니다. 화면 좌우로 수십 개의 폴더와 알 수 없는 설정 파일들이 빼곡했습니다. 하지만 AI 사수가 짚어준 핵심은 단 두 가지였습니다.
-
화면 디자인은 XML 파일에서: 웹의 HTML/CSS처럼, 앱의 버튼을 배치하고 색상을 정하는 것은
res/layout폴더 안의 XML 파일이 담당한다. -
기능 작동은 코틀린(Kotlin) 파일에서: 웹의 자바스크립트처럼, 타이머가 흘러가고 화면을 잠그는 논리적인 명령은
.kt확장자를 가진 코틀린 파일이 담당한다.
복잡한 폴더 구조에 압도당할 뻔했지만, 결국 “화면(XML)과 기능(코틀린)” 두 가지를 AI에게 짜달라고 해서 제자리에 잘 붙여넣기만 하면 된다는 본질은 웹 개발과 다를 바 없었습니다.
4. 비전공자 관점의 웹 개발 vs 네이티브 앱 개발 비교
| 비교 항목 | 웹 (Web) 개발 (이전 프로젝트들) | 안드로이드 앱 (App) 개발 (현재 프로젝트) |
| 개발 환경 (IDE) | 워드프레스 관리자 페이지 등 매우 가벼움 | 안드로이드 스튜디오 (설치 및 세팅이 무겁고 복잡함) |
| 화면 구성 언어 | HTML, CSS | XML (안드로이드 전용 레이아웃 언어) |
| 기능 구현 언어 | 자바스크립트 (JavaScript) | 코틀린 (Kotlin) 또는 자바 (Java) |
| 기기 제어 권한 | 낮음 (브라우저 안에서만 동작) | 매우 높음 (화면 잠금, 카메라, 푸시 알림 등 완벽 제어 가능) |
| 결과물 테스트 | 브라우저 ‘새로고침’으로 즉시 확인 가능 | 가상 스마트폰(에뮬레이터)이나 실제 폰을 연결해 앱을 ‘설치(빌드)’해야 확인 가능 |
결론: 더 큰 자유를 위한 낯선 문법 수업
HTML과 자바스크립트라는 편안한 동네를 떠나, 코틀린과 XML, 안드로이드 스튜디오라는 낯설고 복잡한 도시로 이사를 왔습니다. 화면 하나를 띄워보는 데에도 웹보다 훨씬 많은 세팅과 기다림이 필요했습니다. 하지만 스마트폰의 심장부인 ‘권한’을 획득하여 화면을 완전히 통제해 버릴 수 있다는 사실은 기획자로서 너무나 매력적인 무기였습니다.
이제 앱 기획의 뼈대는 세워졌고 개발 환경 세팅도 끝났습니다. 다음 14편에서는 AI가 짜준 코틀린 코드를 들고 본격적으로 폰 잠금 앱을 컴파일(Compile)해 보며, 안드로이드 최대의 난관이라는 ‘퍼미션(권한) 지옥’을 AI와 함께 뚫어내고 내 스마트폰에 첫 번째 앱을 설치하는 가슴 벅찬 과정을 다루어보겠습니다.