Text

CocosBuilder project has left out. I found these zip files using Web Archieve. I hope it will be of helpful to you.

https://drive.google.com/folderview?id=0B0ucmHKqyC8_ZlhLd0VpT1J2bms&usp=drive_web

왜 그 버튼을 3픽셀 옮겨야만 하는가

radiofun:

image

"포토샵에서 커스텀 버튼을 만드는 것은 쉽다. 하지만 그것은 빙산의 일각일 뿐. 표면 아래에는 디테일을 잡기 위한 많은 노력들이 필요하다. 눌린 상태, 비활성화 상태, 더블 클릭시 텍스트 하일라이트 막기, 좌우변환 지원, 접근성 테스트 등등."

글에서 다른 부분보다는 빙산이라는 표현이 인상적이네. 이전 회사에서 내가 했던 일의 70%은 빙산과 싸우는 것이였다. 기획자와 디자이너가 빙산의 위를 봤다면 나는 아래에 있던 사람이었다.

가볍게는 체크박스의 좌우를 바꾸는 일부터 시작해서 사소하면서 최소 몇시간 최대 몇주가 걸리는 작업들을 했다. 예를 들어 안드로이드의 그리드 뷰 방향을 수평으로 바꾸는데만도 몇주를 썼다.

그런데도 불구하고 실제 접근성과 기능은 네이티브 보다 좋지 못했다. 어떤 것은 기능이 떨어졌으며 어떤 것들은 심미성이 떨어졌으며 어떤 것은 접근성이 떨어졌다. 사실 전부 다인 경우가 많았다.

커스터마이징된 기능이 원래 콤퍼넌트를 확장할 수 없는 경우가 많다. 그런 콤포넌트를 만나면 나는 대게 5000라인쯤 코딩했던 것 같은데 원래 컴포넌트가 1만 라인 이상 되는 경우에는 그에 비견되는 기능을 만들기 위해 1만 라인을 짜야 제대로된 물건을 만들 수 있었으니 사실 어쩔 수 없는 일이다.

그런데 종종 왜 원래되는 일의 적용이 오래 걸리냐는 이야기를 들었다. 그러면서 하는 얘기가 원래 당연히 되는 것을 왜 이상하게 하느냐는 것이다. 처음에는 야속했지만 시간이 지나 생각해보니 그것은 기획자와 디자이너가 원래되는 일로 착각하는 것의 정황이 아닌가.

변경된 내용이 나중에 알고 보니 사실은 아무 생각없이 HTML, 안드로이드, iOS의 기본 동작을 몰라서 아주 단순한 이유로 그런 결정을 했던 것이 확실해진 날에는 퇴근하는 길에 맥주를 마시곤 했다.

글을 길게 썼는데 한 마디로 말하자면… 나는 안드로이드, HTML, iOS을 더 나쁘게 하는데 3년을 쓴 셈 이다.

PS: 인용을 제외하고는 내 글이 중심이 되는 글인데 아래에 출처라고 적혀있는 것의 적용이 이상하다.

출처: radiofun

Text

매 2분 마다 건물이 지어지고 이벤트가 발생하는 게임이 있다. 컴퓨터에서 앉아 게임을 하는 장동건은 쉬지 않고 게임을 할 수 있다. 콘솔이나 피씨로 게임을 하는 것은 다른 작업에 관여받지 않고 게임만 하는 것을 의미하기에 장동건은 쉴새없이 발생하는 상황을 온전히 통제할 수 있다.

이 게임이 모바일로 출시되면 통제권은 게임이 가지게 된다 2분 마다 발생하는 게임 탓에 김태희가 내릴 버스를 놓치게 되었다. 강동원은 게임이 끝나지 않아 화장실 칸에서 나오지 못한다. 원빈은 겨우 게임을 접어두고 출근했는데 점심 시간에 확인하니 방화가 132건이고 205명이 영토를 공격해왔다. 거지가 된 원빈은 밥이 넘어가지 않는다.

기존 게임들의 템포를 그대로 두면 끔찍한 일이 일어나기 때문에 모바일 게임은 의도적으로 느리거나 일회성의 게임으로 설계한다.

하지만 집중적으로 플레이를 하는 계층도 존재한다. 휴대폰을 충전기에 꽂아두고 레벨업에 열중하는 홍진호가 있고 아이패드를 들고 침대에 기대어 몇시간이나 게임하는 임요환도 있다. 홍진호와 임요환은 1분에 200번 터치하는 플레이를 즐기기 때문에 더 재미난 게임을 위해 돈을 투자한다. 같은 시간에 남들보다 더 많이 플레이하기 위해 돈을 쓰니 돈으로 시간을 사는 셈이다. 내가 템플런 게임 한판을 한 시간을 사는데 그들은 4, 5 달러를 투자한다. 그리고 재밌게 게임을 했다고 말한다.

캔디 크러쉬 사가의 전체 스테이지를 클리어한 사람의 70%는 한푼도 지급하지 않으면서 좋은 경험을 했다는 리뷰를 적는다. 시간을 돈으로 산 사람들은 하드 코어한 플레이를 하며 나름의 행복을 찾는다. 게다가 게임 제작사도 안정적인 수익 모델로 여유가 생겼다. 이 보다 더 나은 게임 경험과 접근성을 가졌던 모델이 있는가? 넥슨이 발견한 인앱 결제란 불은 아이폰이 나온 후 시간을 사는 모델로 개량되어 모바일에 빛을 비추고 있다.

Text

애니팡 2는 매치 3 장르의 게임이다. 매치 3는 같은 색상의 블록을 맞추어 부수는 형태의 게임으로 이 장르의 최강자는 캔디 크러쉬다. 최근 애니팡 2는 매치 3 게임의 최강자 캔디 크러쉬와 비교당하며 표절 게임이라 비난 받고 있다. 애니팡 2가 새로운 개념이 없다는 이유로 비난받는게 당연할까? 디즈니의 Free Fall, 팜 에니멀 킹덤의 Candy Heroes, 팀 라바의 Jewel Mania등의 게임은 얼마나 캔디크러쉬에 비해 독창적일까? 이 게임들은 게임의 진행 방식이나 스테이지 이동 방식이 모두 캔디 크러쉬와 동일하다. 카카오톡에는 애니팡 하나였지만 북미 앱 스토어에는 매치 3 장르가 하늘의 별처럼 넘쳐나고 그 중에 독창적이다고 평가할만한 게임은 거의 없다.

나는 유사 게임의 범람이 장르적인 한계 때문이라고 생각한다. 유진 알렘진이 매치 3 장르를 만든 이후 수 많은 게임들이 나왔지만 게임성의 차이를 보여준 경우는 거의 없었다. 알렉시 파지노프가 테트리스를 만든 이후로 여러 변종이 나왔지만 게임성의 결정적인 차이를 만들기 어려웠던 것과 유사하다. 테트리스 세상에서 헥사와 다른 형태의 게임이 나오게 되는 일은 아주 가끔의 일이었고 성공이나 재미를 보장해주지는 못했다. 매치 3 장르로 게임을 만들며 시각적인 효과, 음향적인 효과, 애니메이션, 기타 사소한 수정을 하는 정도를 넘어서는 일을 하긴 현실적으로 힘들어 보인다.

혹자는 게임방식에도 판권이 있지 않느냐라고 이야기한다. 맞다. 게임 방법 역시 권리를 획득할 수 있다. 테트리스는 판권이 테트리스 컴퍼니에 있기 때문에 계약하지 않고는 테트리스의 변종을 만들 수 없다. 하지만 매치 3 장르는 그런게 없다. 유진 알렘진이 법적으로 권리를 주장하지 않았기 때문에 비쥬얼드의 팝캡이 나왔고 캔디 크러쉬의 킹이 나왔다. 만약 유진, 팝캡이 권리를 주장했다면 캔디 크러쉬도 나오지 못했을 것이다.

물론 애니팡 2는 장르적인 한계에도 불구하고 사소한 수정도 거의 없다는 것은 문제다. 흔하디 흔한 매치 3 게임에서 다 해본 경험들 밖에 제공하지 못하고 있어서 너무나 식상하고 재미가 없다. 또 애니팡 1과의 연속성이 전혀 없다. 그래픽 아트를 제외하고 이 게임의 정체성을 말해주는 것이 무언가? 하지만 이건 프렌차이즈의 가치를 훼손하고 식상함으로 애니팡의 제 살을 깍아먹는 것이다. 재미없고 설레임이 없다고 얘기하는게 훨씬 적당해 보인다.

PS: 애니팡이 어떤 창의성도 발휘하지 못하는 것은 이번 작품에서 처음은 아니다. 전작 역시 완전히 따라갔다.

Text

image

Do you think that I am a native HEXer?

Text

해외 결제 가능한 카드로 국민, 롯데, 농협 셋 중 하나를 쓴다면 먼저 해외 결제 불가로 해두세요. (체크카드도 확인 하세요.)

그리고 카드를 탈회하거나 재발급 받으세요. CVC 유출 안되어 괜찮다는 말 믿지 마세요. 아직 유출 안되었다고 단정짓기 어렵고 CVC 번호 없이도 결제 됩니다. 특히 해외에서는요.

Text

맥을 쓰면서 이맥스를 쓰기가 너무나 불편해 VIM과 IDE를 쓴지 2년되어가는 것 같다. 무심코 tmux를 쓰다가 단축키가 CTRL + B가 아닌가? 하긴 예전에 유행하던 screen이란 도구도 CTRL + A 같은 단축키를 썼던 것 같다. (불경스럽게도.) 예전에 Emacs를 쓸 때면 상당히 열 받았을지 모르겠는데 이제는 크게 의식되지 않는다. 나도 점차 Emacs에서 멀어지는 것 같고 새로나온 앱들은 점차 Emacs 문화를 따르지 않는 듯.

Text

윤지만씨는 시장 점유율의 함정: 10명 중 8명이 안드로이드를 쓴다고?을 올렸다. 해당 글은 찰스 아더(Charles Arthur)의 Why an 80% market share might only represent half of smartphone users의 번역이다.

“80% 시장 점유율을 가진 안드로이드”라는 말이 5명 중 4명의 스마트폰 사용자가 안드로이드 기기를 쓴다고 생각하는 것에 대해서는 아주 간단하게 반박할 수 있다. 그 반박은 구글 안드로이드 개발자 대시보드에서 찾을 수 있다.

왜 차트만 보여줄까요?

2013년 11월 1일까지 이전 7일간의 구글 안드로이드 대시보드는 구글 플레이에 연결된 기기의 안드로이드 버전별 비율을 보여준다. 버전 중엔 “프로요” (2.2)와 “허니콤” (3.0)이 있다. 당신은 [현재로서는] 이 두 가지 버전을 돌리는 새로운 안드로이드 기기를 살 수 없다. 아직 두 버전 모두 꽤 많은 비율을 차지하고 있지만 말이다.

새로운 소프트웨어인 “젤리 빈” (실제로는 3가지 다른 숫자의 안드로이드 버전을 합쳐놓은 것이다.)은 52.1%의 비율을 차지한다. 한편으로 젤리빈은 새로운 안드로이드 폰들 – 지난 분기에 스마트폰 판매량의 80%를 차지한 모든 안드로이드 기기들 – 에 전부 탑재되어 있다는 걸 상기하자. 분명하게, 사용자 기반은 시장 점유율 숫자를 반영하지 않는다. (역자주: 시장 점유율이 사용자 기반과 일치한다면 구글의 버전별 비율에서도 젤리빈이 52.1%보다는 80%에 가까운 비율을 차지해야 한다.)

잠재 고객 중 1/4이 새 휴대폰을 구매하고 그 중 80%가 안드로이드를 구매했다고 치자. 그럼 저 차트의 젤리빈 비율을 80%로 바꿀 수 있을까?

답은 아니오다. 왜 아닌지를 알려면 저 차트의 특성부터 알아야 한다. 대쉬보드에 표시되는 차트는 최근 일주일간 구글 플레이와 연결된 단말의 통계이다. 이 통계는 전체 안드로이드 사용자의 버전 별 분포와 동기화한다. 구글 플레이는 마켓이기도 하지만 플레이 서비스를 위한 플랫폼이기기 때문에 실제 안드로이드 단말기를 쓰는 사람이 1주일 이상 구글 플레이와 연결되지 않는 경우는 드물다. KOSPI 200이 전체 KOSPI의 흐름을 따라 가듯 저 파이 차트 역시 전체 안드로이드 버전 별 분포를 따라간다.

(글이 쓰여진 시점에서) 지난 분기동안 판매 된 안드로이드 점유율이 80%라는 것이 차트 상의 젤리빈의 점유율로 반영되려면 두가지 조건이 만족되어야 한다.

  1. 전체 휴대폰 사용자가 새 안드로이드 폰 혹은 아이폰으로 바꾸어야 한다.
  2. 지난 분기에 발매된 안드로이드 폰은 전부 젤리빈이어야 한다.

먼저 전체 휴대폰 사용자가 한 시기에 새 폰을 사는 일은 일어나는 것은 거의 일어나지 않을 것이다. 만약 그런 일이 일어난다면 나에게 알려줬으면 좋겠다. 그 날이 오면 빚을 내서라도 삼성과 애플 주식을 사둘 것이다.

차트 해석부터 말이 안되지만 말 된다 가정하고 다음의 내용들도 살펴보자. 차트 상에서 잘 보이지도 않는 허니컴을 꺼집어 내는지는 정말 이해할 수 없지만 프로요의 점유율은 궁금하지 않은가?

image

찰스 아더는 작은 것도 크게 보는 지혜가 있는 사람으로 생각된다. 나로서는 프로요 1.7%과 허니컴 0.1%을 도저히 의미있는 숫자로 해석하기가 어렵다.

지난 분기에 젤리빈 폰만 나왔을 거라는 것도 잘못된 가정이다. 아무리 시간이 감소되어도 생각만큼 줄어들지 않는 진저브레드의 비율의 원인에 의문을 가진 적이 없는가? 그것은 업그레이드 되지 못하는 구형 갤럭시, 옵티머스, 엑스페리아 때문이 아니다. (안드로이드 커뮤니티에는 불행한 일이지만) ZTE와 화웨이는 2013년에도 진저 폰을 대량으로 팔았다. 구글도 저소득 국가에서 새 진저브레드 단말기들이 계속 나올꺼라 생각도 못했을 거다.

아직도 진저브레드 단말이 출시되는 이유는 허니컴 이상의 버전은 1 기비바이트(GiB)의 메모리를 요구하기 때문이다. 여전히 제 3세계는 Cortex-A8 급의 칩셋들을 단 휴대폰들이 발매되고 있고 512 메비바이트(MiB)를 요구하는 킷캣이 나오기 전까지 대안이 없던 것.

출하량으로 운영체제의 점유율을 평가하는 것은 곤란하다. 하지만 해당 기사의 접근 방법으로 설명할 수 있는 것도 별로 없는 것은 매한가지다.

다음은 김상훈님의 복잡함과 단순함에서 가져왔다.

…. 애플 사용자는 앱 사용률과 적극적인 구매율에서 안드로이드 사용자보다 훨씬 더 높은 비율을 갖고 있다. 돈 되는 고객이란 뜻.

… 안드로이드는 개방형 OS라서 스마트폰에만 멈춰 있는 게 아니라, 자동차에도 들어가고, 구글 글래스에도 들어가고, 구글이 인수한 로봇회사들이 만들 로봇에도 들어가고, 구글이 인수한 네스트가 만드는 스마트 가전에도 들어갈 거란 얘기. 그러니까 안드로이드의 잠재력은 거기 있고, 애플은 아직 스마트폰/태블릿 시장에 갇혀 있단 얘기다.

하지만 여기서부턴 내 생각인데, 그렇게 쉽게 흘러가지 않을 것 같다.

애플은 아이팟 터치에는 iOS를 쓰지만, 아이팟 셔플과 아이팟 나노에서는 iOS가 아닌 별도의 임베디드 소프트웨어를 쓴다. 그리고 아이튠즈에서 관리 가능하다. 반면 구글은 아직 안드로이드가 작동하지 않는 하드웨어를 통제할 방법을 찾지 못한 듯 싶다.

구글 플레이의 수익율은 지속적으로 증가하고 있다. 이제 더 이상은 안드로이드 고객들을 돈 안되는 고객으로 보는 것은 곤란하다.

구글은 안드로이드 폰, 타블렛, 구글 TV에만 안드로이드를 채택한 것은 아니다. 구글이 선보인 구글 글래스, 크롬캐스트의 운영체제는 안드로이드다. 자동차 회사들도 이미 구글과 함께 안드로이드를 작업했거나 작업하는 중이다. (현대자동차는 이미 기아 자동차를 통해 안드로이드를 차량에 탑재했다.) 구글은 안드로이드를 통해 이미 많은 임베디드 영역에 진출해 있다.

Text

구글러 크리스 베인(Chris Bane)이 만든 PhotoView 프로젝트가 있다. 핑거 투 줌 기능을 지원하는 안드로이드 이미지 뷰 객체이다. 이 객체를 이용하면 두 손가락으로 이미지를 확대, 축소하는 일을 쉽게 할 수 있다.

이 프로젝트는 그래들(Gradle) 기반의 빌드 시스템을 사용하고 있었는데 크리스 베인의 버전은 그래들 1.8 버전에 맞게 되어 있었다. 안드로이드 그래들 플러그인 버전은 0.6 버전을 지원했고. 현재 최신 버전은 1.10 버전이었는데 나는 1.8 버전까지 낮추고 싶지는 않았다. 안드로이드 그래들 플러그인 버전을 확인해보니 0.7 버전이 나왔고 그래들 버전 1.9 버전을 지원했다. 그래들 플러그인을 0.7 버전을 올리고 그래들 버전 1.9 버전을 쓰는 것을 목표로 했다.

버전을 올리고 나서 풀 리퀘스트를 보냈다. 최고의 깃 저장소인 (이 수식어도 조금 부족함이 있다) 깃헙(GitHub)에는 풀 리퀘스트란 것이 있는데 내가 복제한 (forked) 저장소에 내가 만든 패치를 올린 것을 원 저자에게 보내는 것이다.

막상 풀 리퀘스트를 보내고 나니 문제가 생겼다. 빌드가 실패했다는 메시지가 뜬 것이다. CI 서비스가 크리스 베인의 리포지토리에 연동되 있었다. CI 서비스는 특정한 조건을 만족하면 빌드를 해서 결과를 알려주는 서비스인데 보통은 데일리 빌드나 커밋 단위로 빌드를 한다. 유명한 CI 서비스로는 젠킨스 (구. 허드슨)이 있다. 해당 프로젝트는 트레비스(Travis)가 연동이 되어 있었다. 트레비스는 비공개 프로젝트를 위해서는 결제를 해야 이용할 수 있는 CI 서비스이다. 트레비스는 깃헙과 통합되어 개발자가 직접 커밋을 하거나 다른 개발자가 패치를 보낼 때 마다 검증해서 알려준다.

아마도 크리스 베인은 머지가 통과되었다는 메시지가 뜰 때까지 내 패치를 받아주지 않을 것이다. 조금 짜증났지만 정신을 차리고 트레비스의 테스트를 내가 통과시킬 수 있는 지 알아봤다.

트레비스는 .travis.yml 파일이 루트에 있으면 그것을 처리해서 빌드하도록 되어 있었는데 .travis.yml 파일의 문법은 간단했다. before_script:와 scirpt: 항목을 만들고 그 세부항목을 -를 붙여서 만들면 된다. 아래와 같은 식이다.

script:
- sudo ant clean

정말 간단한 문법이지 않는가? 내가 만든 패치안드로이드에서 빌드하는 방법을 담은 글을 보면 더 명확해질 것이다.

나는 이제부터 내가 만든 오픈소스 프로젝트에 모두 트레비스를 붙일 생각이다. 그리고 비공개 서비스에도 트레비스를 붙이고. 단순히 빌드가 제대로 되는지를 확인하기 위해 복잡하고 무거운 툴 (젠킨스?)를 깔 필요는 이제는 없는 것 같다. 비록 비공개 프로젝트에 대해서는 과금을 하고 있지만 이런 서비스에는 돈을 내어도 된다고 생각한다.

Text

어느 보석가게에 손님이 70만원짜리 진주를 사고 100만원짜리 수표를 냈다.
주인이 잔돈이 없어 옆집에서 현금으로 바꾸고 손님에게 30 만원 거슬러 줌.
담날 옆집에서 부도수표라며 환불을 요구해서 100만원을 돌려주었다.
가게 주인은 얼마를 손해봤는가

수표가 부도 수표라서 대손 처리로 -100이 된다는 말도 있더군요. 그래서 손님에게 -100으로 손해봤고 대손 처리로 -100을 보니깐 -200이 된다. 그런 설명들이죠. 제가 집에서 5만원 짜리를 하루 종일 복사하고 있으면 파산하는 모양입니다. 말도 안되는 이야기죠. 위조 지폐나 수표를 가지고 있다고 손해가 발생하는게 아니라 그것 때문에 물건이나 돈을 준게 있으면 손해가 발생합니다. 그렇기 때문에 우리는 물건과 현금의 흐름만 보면 명확한 문제입니다.

사람들이 세명인데 손놈, 주인, 옆집으로 나누어 봅시다. 손놈은 100만원짜리 가짜 수표를 내고 70만원짜리 진주와 잔금 30만원을 받았으니 100만원 이익입니다.

옆집을 봅시다. 옆집은 가짜 수표를 받고 100만원을 줬다가 다시 100만원을 돌려 받았습니다. 손익이 없습니다.

외부의 개입이 없고 세명만 있기 때문에 남은 것은 손해 100만원입니다.즉 주인이 100만원 손해 본겁니다. 거래 당사자들의 손해와 이익의 합은 0이 되기 때문입니다.

주인 입장에서 살펴보면 다음과 같습니다.

  1. 처음에 주인은 진주 하나를 가지고 있습니다. (진주 70만원)
  2. 주인이 가짜 수표를 받고 그걸 옆집에 주고 100만원을 가져왔으니 100만원 이익입니다. (진주 70만원 100만원)
  3. 그리고 70만원짜리 진주와 잔금 30만원을 줬으니깐 100만원이 나갑니다. 손익은 없죠. (현금 70만원)
  4. 그리고 옆집에서 수표가 가짜라고 수표를 돌려주고 다시 100만원을 가져갑니다. (현금 -30만원)
  5. 처음에 가진 진주 70만원과 마지막으로 가지고 있는 현금 -30만원의 차이는 100만원이죠.

이제 더 이상 창조경제나 연금술을 하지 말았으면 합니다. 아니면… 손님에게 100만원을 빼앗기고 옆집에 100만원을 주어서 200만원 손해봤다는 분들 저희 집 옆에 이사오세요. 돈 좀 벌어봅시다.

blog comments powered by Disqus