두 아들과 함께 배우기
두 초등학생 아들의 미래를 위해 개발 경험을 전수해 주고 싶었습니다. 그래서, 시작하는 프로젝트의 첫 글입니다.
무엇보다 아이가 스스로 지속하게 하는 힘 즉, 인센티브가 가장 중요하다는 생각이 듭니다. 그래서, 가족이 함께 쓰는 앱을 만들기로 합니다. 그러고 나서 <듀얼 브레인>의 조언을 따라 <작업할 때 항상 AI를 초대한다>를 실천합니다. 무슨 말이냐고요? 계획부터 AI와 함께 세웁니다. 간단하게 인공지능 삼총사를 테스트해 본 후에 제미나이를 파트너로 택하고 첫 발을 다음 프롬프트로 내딛습니다.
아무것도 없는 다시 말해 정적인 페이지 정도만으로 가장 빠른 아이폰 배포 경험을 하는 경로를 제안해 줄 수 있나요?
제미나이는 이 방법은 코딩이라기보다 '배치'에 가깝다고 알려주며, '30분 완성: 초고속 아이폰 배포 경로'를 제안합니다. 기대가 되네요.[1] :)
다음은 제미나이의 초고속 경로에 대한 설명입니다.
가장 빠른 방법은 'PWA(Progressive Web App)' 기술을 이용해 웹페이지를 앱으로 만드는 것입니다. 앱스토어 심사도, Xcode 설치도 필요 없습니다.
초고속 경로에 들어서기 전에 PWA 개념을 가볍게 살펴보기로 합니다.
자, 이제 시작해 볼까요?
1단계: 정적 페이지 만들기 (5분)
v0.dev 사이트에 접속합니다. (Vercel에서 만든 UI 생성 AI)
그런데, v0.dev 사이트에 접속했다가 잠시 헤맵니다. 몇 달 전에 v0를 쓰다가 최근에 화면 데모를 Lovable로 만든 일이 있는데, 둘을 혼동한 것이죠. 정신을 차리고 보니 최근에 Lovable에 익숙해져 있어서 마음이 그리로 끌리는 것을 느낄 수 있었습니다. 경쟁은 어디에나 있군요. 더불어 인공지능의 선택이 앞으로 우리의 결정에 어떤 식으로 영향을 줄 것인지 짐작하게 하는 경험입니다.
제 편향을 확인한 정도로 일단 멈추고, 지금의 목표를 떠올려 제미나이 제안을 따르기로 합니다. 환영welcome 페이지에 대한 프롬프트는 제미나이의 제안을 일부 고쳤습니다.[2]
v0가 제공하는 편리한 배포 환경 덕분에 아주 쉽게 배포하고 결과를 확인할 수 있었습니다.
다만, 사파리에서 웹 페이지를 여는 식이라 이게 왜 PWA인지 고개를 갸웃하게 되었습니다.
아무튼 제미나이의 약속 대로 30분 이내에 '초고속'으로 배포할 수 있었습니다. 실망을 줄이기 위해 기대期待[1]를 재확인합니다. 속도에 대한 기대는 대 만족입니다. 다만, PWA라는 구성 방식에 대해서는 의문이 생긴 것이죠.
부족하게 느낀 부분에 대해서 마치 이미 제미나이도 예상한 듯한 내용이 마지막에 있습니다. 특히 '개발자답게'[3]라는 수식이 흥미롭게 여겨졌습니다.
이어서 일단 터미널에서 명령어를 그대로 실행해 봅니다.
Need to install the following packages:
expo@55.0.6
Ok to proceed? (y) y
그리고 났더니 개발자들이라면 익숙한 환경 차이에 대한 실행의 늪에 잠시 빠집니다. 여기서도 제미나이의 도움을 받아서 늪을 빠져나옵니다.[4] 그때 쓰인 결정적 명령어를 첨부합니다.
npx create-expo-app@latest my-family-app
다시 제미나이가 알려준 '개발자답게' 하는 법을 따릅니다.
먼저 터미널(Terminal)에서 프로젝트 폴더로 이동한 뒤, 아래 명령어를 입력하세요. Expo 프로젝트 전용 설치 명령어를 사용하는 것이 버전 충돌 없이 가장 안전합니다.
npx expo install react-native-webview
앞서 v0가 배포한 코드와 연결 고리를 만드는 작업을 안내합니다.
설치가 끝나면 에디터(Cursor 등)에서 App.js (또는 index.tsx) 파일을 열고 내용을 모두 지운 뒤 아래 코드를 복사해서 붙여 넣으세요.
마찬가지로 따라 해 봅니다. 역시나 또 환경 차이에서 오는 늪에 빠졌습니다. 거기서 또다시 제미나이 도움으로 빠져나옵니다.
요즘 바이브 코딩이 유행이지만 개발자가 유리한 측면이 분명 있다는 사실을 깨닫습니다. 환경을 구성하는 것이 다양한 소프트웨어의 서로 다른 버전 차이에서 오는 경우가 많기 때문에, 내가 만난 메시지와 내 환경 구성에 대해 알려주고 답을 구하면 유효한 답을 줍니다.
제미나이 안내를 따라 하는 과정에서도 선택이나 결정을 할 순간이 있습니다. 그중에서 앱이나 프로그램 설치 여부를 들 수 있는데요. 제 경우는 선호를 배제하고 가장 빠른 길로 가는 것이 목표였습니다. 그렇다 보니 Expo Go 같은 앱은 꼭 필요했습니다. 앱스토어 배포라는 장애물에서 벗어나서 당장 써 볼 수 있으니까요.
또한, 제미나이가 제시한 명령 실행 과정에서 설치된 Xcode 역시 마찬가지라 생각합니다.
npx expo install react-native-webview
하지만, 텍스트 에디터는 꼭 설치할 필요는 없었습니다. 예전에 요즘IT 기사를 쓰는 과정에서 깔았던 편집기가 있는데, 오랜만에 실행했더니 새 버전을 깔라고 요청했지만 무시했습니다. 그래도 프로그램 실행에는 전혀 문제가 없기 때문이죠.
요즘 인공지능과 코딩 에이전트의 발전으로 개발자가 아니라도 바이브 코딩이 가능한 세상인데, 거기서 어떤 역량과 지식이 필요한지 가늠하게 됩니다.
[1] 기대期待란 낱말을 썼더니 최근에 기록을 남긴 덕분에
다음 두 글에 담긴 메시지가 떠오릅니다.
[2] 핑크색 대신에 아내가 좋아하는 '보라색'을 넣고, 우리 가족들의 폰 사용환경을 추가했습니다.
[3] 제미나이에게 '개발자답게'에 담긴 의미를 한 번 더 물었습니다.
[4] 다시 한번 <작업할 때 항상 AI를 초대한다>를 떠올리게 됩니다.
(40회 이후 링크만 표시합니다.)
40. 연기(緣起)를 이야기로 만들기
43. 일상에서 자연스러운 배움을 아이들에게 흐르게 하기
44. 두 아들에게 눈에 보이게 하는 게시판 효과 활용하기
46. 108번이라는 횟수는 습習을 키우는 절대량인가?
47. 한자를 씨말로 어휘력을 늘리는 묻따풀 한자 300
49. 육아로 시작했지만 서로 영향을 주며 발전하는 가족관계
50. 아이에게 즉각 개입하는 대신 관찰하면 보이는 것들
52. 글쓰기를 가르칠 때 자연스럽게 어우러지는 지난 경험