솔직히 이게 게임인가? 하면서 만들었다. 게임 디자인을 했고 코딩이라기 보단 로직을 구성했다. 만들어 놓고 보니 좀 심심해서 월초에 싱가포르 주롱 새 공원 펭귄관에서 만난 펭귄들과 서울숲 카페 무드랩에서 본 Antartica 전시회에서 본 펭귄 사진을 생각하면서 개러지 밴드로 게임 배경 음악도 뚝딱 만들었고, 일러스트레이션으로 펭귄의 점핑 무브먼트도 만들었다. 뿌듯했다! 이번에는 펭귄이 플라스틱 보틀을 뛰어넘어서 가족을 만나러 간다는 스토리였는데 다음 스테이지를 만든다면 갈라진 빙하를 점핑하는 거로 만들어보고 싶다.
#SparkAR 스튜디오 써 본 것도 재밌었다. 뭣보다 카메라 필터로 게임을 만들다니 미래를 앞서나가는 듯한 느낌이 꽤 근사했다. 시간이 더 있었으면 html5 로 렌더되는 캔버스 앱이나 오큘러스에서 돌아가는 뭔가를 만들어 볼 수 있었을 텐데, 접근성 문제로 Spark AR로 만들자 한 건 신의 한 수가 아니었나 싶다. 전세계 적으로 카메라 필터에 미친 (좋은 의미로) 자들이 많아, 커뮤니티가 매우 활발해서 활용할 수 있는 리소스가 많았다.
개발하는 그 자체 외에도 배운 점이 많았는데.. 윌프레드는 아프리카 루사카라는 도시에 살고 나는 서울에 살고 있어서 다른 타임 존에 있는데 장벽 없이 커뮤니케이션할 수 있었던 부분이 새삼 놀라웠다. 우리가 아이데이션을 함께 하고 역할을 분배하는 과정, 하나 하나가 놀라웠다. 그건 아마 윌프레드의 탁월한 협업 능력 때문 아닐지. 준비하는 동안 줄곧 메신저로 이야기했고 비행기를 두 번 갈아 타고야 갈 수 있는 곳에 살지만 멀다고 느끼지 않았다. 우리가 원격으로 협업하는 경험은 페이스북의 비전과 커뮤니티 챌린지의 목적에 딱 들어맞는 사례라고 생각한다. 페이스북이라는 플랫폼과 해커톤이 아니었음 이런 멋진 친구를 만나지 못했을 거다.
그리고 시간 쪼개서 뭔가를 한다는 것이 쉬운 일이 아닌 데(!) 그 어려운 것을 해냈다. 서브미션을 한 것 자체가 칭찬할 일이다. 커뮤니티 챌린지에 참가하자고 이야기한 건 7월 중순이었고 처음에는 전통 마스크 필터를 만들자고 했다가.. 물이 깨끗한 지 여부를 카메라로 디텍트해보자는 아이디어도 있었고 오큘러스로 뭘 만들어볼 수 있지 않을까 이런저런 이야기를 하다 흐지부지 되나 싶었으나 한개의 주말을 갈아 넣어 마감 이주일 전인 막판에 컨셉을 싹 갈아엎고 새롭게 완성했다.
텀블러를 쓰기는 해도 일회용품에서 완전히 자유롭지 않고 페트병 물을 마시는 나이지만, 이런 게임을 통해서 환경보호에 관한 인식이 좋아지면 좋겠다고 생각했다. 이렇게 글로 적어보니.. 좋은 것 투성이이다. 😜
이번에 새로운 맥북을 개시하며 업무와 취미용 개발을 위해 리액트를 설치하다 환경 설정을 하면서, 미래의 나를 위해 설치 과정을 정리했다. 처음 개발을 접했을 때, 패키지 설치와환경 설정 오류를 만났을 때 어떻게 대응해야 하는지 몰라서 많이 좌절했으며, 시도 때도없이 슈퍼 어드민을 부르는 일이 잦았다.
지금도 전보다 나아졌다고 말하긴 어려우나 이를 미리 방지하기 위해서 환경 세팅에 공을들이는 건 아주 의미 있는 투자라고 생각하게 됐다. (물론 투자를 한다고 문제가 안 생기는건 아니지만…) 개발을 하다 환경 설정 문제로 골머리를 앓고 있지 않다면, 아마 이미 수차례의 시행착오를 거쳐왔을 것이 분명하다.
먼저, Homebrew를 설치하자. Homebrew는 맥용 패키지 매니저로 다양한 프로그램을 쉽게 설치할 수 있다. 패키지 매니저를 쓰면 일일이 패키지 다운로드 페이지에 가지 않고 바로 설치할 수 있고 빌드, 테스트, 업그레이드, 의존성 관리 등 복잡한 상황을 쉽게 관리할 수 있어서 유용하다. Terminal 을 켜고 아래 코드를 복붙하면 손쉽게 설치할 수 있다.
사용법은 brew help를 터미널에 쳐서 쉽게 확인할 수 있다. 어느 패키지든 help를 쳐 보면 사용할 수 있는 명령어들이 쫙 나온다. 직접 타이핑해보고 ‘어 되네, 이렇게 하면 안 되는구만’의 경험이 살이 되고 피까지 되는 것 같지는 않지만 검색하기 전에 자세히 살펴보면 이슈를 해결하기 위한 정보를 얻는 데 엄청난 도움을 준다.
그다음은 git, 버전 관리 도구다. Source Control Management, 줄여서 scm 이라고 한다. Git은 마치 구글 문서나 스프레드시트에서 파일 변경 사항을 관리해서 언제든지 이전에 작업하던 버전을 확인하거나 되돌리게 해 주는 기능을 제공한다. 내용이 복잡해지고 여러 명이 동시에 작업할 경우, 대참사가 벌어질 가능성이 아주 높기 때문에 버전 관리는 필수다. 엊그제 먹은 저녁 메뉴가 생각이 안 나는 일이 매우 빈번한 것처럼 매일 매일 지난날을 기억하는 데 어려움이 있는 나와 나의 동료들을 위한 훌륭한 도구이다. 어렵게 느껴지겠지만 얼마 지나지 않아 “방금 Pull 했어요. Commit 했어요. 이제 Push 할게요.” 라는 말들은 사용하게 되는 자신을 발견하게 될 것이다. Git SCM 웹사이트에서 다운로드 받아 설치할 수도 있고, brew로 설치하면 아래 한 줄이면 된다.
brew install git
자, 이제 절반이 끝났다. 본격적으로 리액트 앱을 설치하기에 앞서, 리액트 웹사이트에 가서 시작하기를 누르면 아래와 같은 설치 커맨드를 확인할 수 있다.
npx create-react-app my-app cd my-app npm start
그런데 무턱대고터미널에첫 줄을 복북하면 설치가 되지 않는다. npx는 그럼 무엇이란 말인가? npx는 npm 5.2+ 버전 패키지 실행 도구이다. 그렇다면 npm은 또 무어람? npm은 Node Package Manager 의 줄임말로 자바스크립트 프로그래밍 언어 패키지 매니저다. npx는 npm 을 eXecute, 즉 실행하게 해주는 툴이다. npm은 create-react-app 또는 react-roouter와 같은 모듈을 공유하기 위해 사용하는 패키지이다. npm 또는 npx 설치 명령을 실행하려면 Node.js를 설치해야 한다.
얼마 전만해도 처음에 서버 측에서 페이지를 렌더링하고 그리고 나서 단일 페이지 애플리케이션을 사용해 클라이언트 측 렌더링을 해야 했다. 그런가 하면 리액트는 사용자 유저 인터페이스, 보이는 부분, 뷰에만 관여하기 때문이다. 왜 노드가 리액트 앱을 필요로 하는 지에 관한 자세한 설명은 Quora에서 읽어보기로 하고 일단 그냥 설치하자. 역시나 직접 웹사이트에서 다운로드도 가능하지만 brew에게 맡기자.
brew install npm
설치에 성공하면 아래와 같은 화면이 나온다.
잘 설치되어있는지 확인하려면 node -v, npm -v를 간단히 쳐 보면 된다. 아니면 brew info npm 해 봐도 잘 설치 되어있는지 확인할 수 있다. 이제 앱을 만들어 볼까?
npx create-react-app my-app 새 앱을 만들고 설치가 끝나면, cd my-app 새로운 앱이 있는 디렉터리로 이동한 뒤 npm start 로 앱 구동을 시작함과 동시에 http://localhost:3000 페이지가 로딩된다.
이로써 환경설정 끝! 첫 번재 앱을 로컬 환경에서, 내 컴퓨터를 서버로 하는 앱을 만드는 데 성공했다. 이제 차차 어떤 앱을 만들 지에 따라 어떻게 배포할지에 따라서 webpack, babel 등 로더나 필요한 것 기타 등등은 추가로 구성하면 된다.
P.S. 본 환경은 맥 OS 10.14.5에서 구성했다. 맥 OS는 git 설치를 하려면 무조건 Xcode를 설치하라고 권장하는 얼러트가 튀어나오는데 brew로 git을 설치하고 나니 더이상 나오지 않았다. Mac OS 또는 iOS 앱을 개발프로젝트를 진행할 일이 근미래에 그려지지 않는다면 환경변수에 git을 추가하는 방법으로 무시할 수도 있다. 그렇지만 나는 특별히 배시 프로파일, 패쓰 설정을 건들거나 하지 않았다. 혹시나 나중에 바뀐 설정을 다시 되돌리거나 복구하는 데 자신이 없어서 그냥 변경하지 않고 그냥 뒀다.
지난 3월부터 장장 6개월 넘게 주말 동안 근면성실한 결과 인스트럭터가 되었고 최근 인요가 티처 트레이닝에 다녀왔다.
대게 인도네시아에 여행을 가면 발리에 가는데 지카르타에서 인요가 워크샵이 열린다는 이유 하나 만으로 무턱대고 자카르타 행을 결정했으니, 이쯤되면 꽤나 진지하게 덕질을 하고 있는 셈. 새로운 도반도 생겼다.
트레이닝을 갔다 왔으니 요가 얘기를 조금 해보자면 인요가라고해서 새로운 요가가 아니다. 내 식으로 쉽게 풀어보자면, 양스러운 요가는 몸에 있는 긴장들을 호흡, 태양 경배, 아사나를 통해 근육들의 화이팅을 넘치게해 갑작스런 혈액순환으로 인해 미처 생각이 올라올 틈이 없게 만드는 요가라면 인요가는 잠드는 것에 가깝게 온몸 깊숙한 곳에 자리 잡고 있는 긴장들을 의식해서 잡 생각이 자리할 틈을 내 주지 않는 요가다.
양이라고 나쁜 것도 아니고 인이라고 해서 더 좋은 것도 아니고 덜 좋은 것도 아니다. 나쁜 요가도 좋은 요가도 없다. 그때 그때 에너지 레벨에 따라 있는 그대로를 바라보면서 부족하다 생각하는 부분을 채우는 요가를 하면 된다. 있는 그대로의 호흡을 느끼면서 말이지.
가르치는 걸 배우면서, 가르치면서, 가르침을 받으며, 배우는 사람들을 보며, 수련하며 스스로를 많이 돌아보게 된다.
요가를 열심히 하면 내가 더 나아지고 강해지고 유연해져서 멋지게 바뀔 것이라 생각하소 지금도 조금은 그렇게 기대한다. 또, 요가를 제대로 배워서 수련하면 일상생활도 좀 더 잘 하게 될 것 같았다. 그런데 이런 것들은 모두 나의 기대이고 현실은 해야할 일들과 이번 생의 과업은 무엇인가 하는 고민들의 연속이다.
분명 열심히 하면 모르긴 몰라도 달라지겠지만 그저 기대를 접고 잠시 머무를 수 있다면, 그 자체로도 충분하겠지.
아래는 드 선생님의 말이다.
“Love yoga for what it is, not for what it does for you”. Denise Payne
책벌레로서 혹시 책 읽는 사람 모임이 있잖을까 검색했다 조인해 목록에 나오는 책들 사보고, 슬랙 채널 스니핑하다 어쩌다 시간이 맞아서 참여해 봤는데 앞으로도 시간이 맞으면 계속 참여하고 싶다. 채널에 코치님 81명이 들어와 계시는데 (코치가 아닌 사람은 나 뿐인 듯ㅋㅋ) 코치님들이 진행해서 그런지 역시 진행 역시 남다름.
마침 이 달의 도서는 얼마 전 읽은 Carol Dweck의 Mindset: How You Can Fulfill Your Potential이다. 보통의 많은 북클럽을 내가 꺼리는 이유는 시간이 길고, 심도 있는 토론으로 이루어지지 않고 책을 요약하거나 너무나도 철학 수업처럼 흘러가는 진중한 방식 때문에 집중을 많이 하지 못하곤 하는데, 아래의 진행방식이 마음에 들어서 아래에 좋았던 점을 메모해 둔다.
재밌는 질문으로 진행을 시작하고 미팅에 참여한 다른 사람을 지목한다.
다는 기억이 안 나지만, “내가 똑똑하다고 느끼는 순간은 언제인지?” 에 관한 몇 가지 기억 나는 30초 정도의 짧은 대답들 “다른 사람에게 나의 경험이나 지식을 나누어줬을 때”, “연구했던 주제를 누군가 이야기하거나 멘션될 때, 내가 아는 내용일 때” 등. “나는 안경 끼면 똑똑하게 느껴져요.” 라고 말하며 “더 똑똑해 보이고 싶을 때 굵은 안경을 쓴다” 라고 하니 안경쓴 사람들 일동 모두 동감의 미소를 지었다. 라식 했지만, 안경 쓸 때 그런 기분이 들었다는 분도 계셨던 걸로. 잘 보면, 아무 말 대잔치 같지만 이 질문에 답하면서 계속 내가 대답 어떻게 할지 생각하고, 답변들에 순간순간 자주 공감하면서 집중하게 된다.
이어서, 퍼실레이터가 책의 챕터 별로 모인 사람들이 특정 주제에 관해 어떻게 생각하는지, 책에서 작가가 꺼낸 새로운 생각이 내가 생각하는 방식을 어떤 식으로 바꾸었는지, 어떻게 적용해 보고 있는지를 나눌 수 있는 오픈 엔드 질문을 미리 마련해 둔다.
너무 빨리 지나가서 잘 기억 안 나지만 아래는 몇 가지 생각나는 질문들.
실제로 내 삶에서, 달라진 부분이 있다면?
사람을 볼 때, 배우는 사람 또는 학습하지 않는 사람으로 나누는지.
시험에서 떨어지거나, 실직, 거절을 당하는 등의 부정적인 일들이 일어나고 나서 자신을 루저라 생각한 적이 있는지? 그때 어땠는지. 이런 굴욕적인 경험을 삶을 바꿀 수 있는 기회로 만들 수 있었는가.
줄곧 도전해보고 싶은 운동이 있었는데 운동 신경이 영 꽝이라 시도해 보지 않은 운동이 있는지? 어떤 운동인지, 어떻게 시작하게 됐는지?
리더는 만들어지는 것인지? 타고난 것인지? 왜?
이 중 여럿이 돌아가며 길게 이야기하는 질문도 있었고 아무도 질문에 대한 답이 없어 스킵하는 질문도 있었다. 다른 사람이 이야기하는 거 듣다가 바로 점프인 하기도 하고, 꼭 책 읽지 않아도 참여 가능. 시간이 정해져 있으니 임팩트있게 할 말하고 끝내고 못다한 이야기는 슬랙에서 계속한다.