[시스템] 엄격함과 느슨함 그 사이 어디쯤...

@codemaru · June 29, 2015 · 13 min read

몇 해 전 지인이 앱스토어 카테고리 1등을 먹어서 아주 수입이 짭짤했다는 이야기를 들었다. 사촌이 땅을 사면 배가 아프게 마련이고, 주변에서 누군가 뭔가를 이루면 자연스레 나도 할 수 있을 것 같다는 근자감에 불타오르게 된다. 야심차게 앱스토어 개발자 등록을 했었다. 소녀시대 퍼즐 앱을 만들겠다는 포부를 가지고는 자료를 수집하기 시작했는데 딱 거기서 끝났다. 한줄의 코딩도 없었고, 공부도 하지 않았다. 내가 개발자 등록을 하고 유일하게 한 거라곤 iOS 베타 버전을 먼저 설치해 보는 정도였다. 돈이 아까워서 설치한 베타 버전이었다. 하지만 엎친 데 덮친 겪으로 베타 버전에 버그가 많아서 그마저도 계륵같은 존재였다. 돈이 아까웠지만 맥북을 사지 않았다는데 마지막 위안을 삼았다. 그렇게 앱 개발은 레드오션이라며 여유가 신포도를 다루듯 나의 머릿속에서 영영 멀어졌다.

그렇게 영원히 잊혀질 것 같았던 앱 개발을 작년 말부터 친구 녀석이 나에게 다시 세뇌시키기 시작했다. 자기 주변에서는 다 앱 개발을 해서 대박을 쳤다는 이야기였다. 처음 한두번은 그냥 웃어 넘겼지만 녀석의 집요한 이야기 끝에 난 세뇌돼 버렸다. 그러던 한 날 밤이었다. 핸드폰을 만지작 거리며 침대에서 다큐를 보고 있는데, 이놈에 다큐 홈페이지 네비게이션 시스템이 당췌 어이가 없을 정도로 불편한 것이었다. 평소 좋아하던 다큐였기에 그날 코딩에 들어갔다. 그래 이 다큐를 나처럼 편하게 보고 싶어 하는 사람이 얼마나 많겠어 하면서 코딩을 했고 몇 일 사이 베타 버전이 나왔다. 풉, 혼자 만족해 하면서 스토어에 올렸다. 반응은 냉랭했다.

친구 녀석한테 하소연을 했더니 그런건 너같은 사람이나 보는 거고, 게임 동영상을 보는 게 훨씬 잘 될 거라는 이야기를 했다. 똑같은 앱에 컨텐츠만 바꿔서 올렸다. 다큐가 게임으로 바뀐 앱이었다. 어랏, 그런데 제법 사람들이 다운 받기 시작했다. 광고 수입도 올라온다. 노트북을 질렀다. 설 연휴에 본격적으로 개발해 보겠다는 심산이었다. 그런데 거기서 끝났다. 생각보다 잔손이 너무 많이 갔고, 좀 하다 보니 재미가 없어졌다. 재미난 사실은 그렇게 앱 업데이트를 끊은지가 어언 몇 달이 지났는데도 지금도 꾸준히 광고 수입이 발생한다는 점이다. 이대로 계속 간다면 손익 분기점은 40개월 남았다. 올레, 핡~

#0

돈은 못 벌었지만 안드로이드 앱 프로그래밍은 나에게는 신선한 충격이었다. 충격이었다는 말은 배울 것도 많았고, 생각할 거리도 여럿 제공을 했다는 말이다. 그 중에 한 가지를 이야기 하려고 한다. 최근에 페북 앱이 링크를 브라우저로 돌리지 않고 직접 내장 웹뷰에서 보여주는 방식으로 변경해서 테스트를 해보았는데 페북 웹뷰에도 이 처리는 포함되지 않은 것으로 보여진다.

거창하게 말했지만 사실 요는 간단하다. 아래 페이지처럼 페북 내장 웹뷰에서 제대로 렌더링이 되지 않는 페이지가 있다는 것이다. 지금 모바일 환경이라면 여기서 테스트를 해볼 수 있다.

웹뷰에서 인벤 동영상 링크는 어디로 사라진 것일까???

웹뷰에서 인벤 동영상 링크는 어디로 사라진 것일까???

원래 저 비어있는 자리에는 유튜브 동영상이 나와야 함에도 나오지 않고 있는 것이다. 아마 첨에 이런 일을 당하면 아 모바일을 지원하지 않나 보구나 라고 생각하기 쉽상인데, 크롬으로 들어가보면 기가막히게 보인다. 도대체 왜? 그래서 웹뷰는 뭐 한계가 있나보다 하고 넘어가려고 해도 뭔가 찜찜하다. 왜냐하면 오페라나 파이어폭스에서도 정상적으로 보이지 않기 때문이다. 그렇다면 크롬이 무슨 특수한 처리를 해주고 있다는 것인데…​ 도대체 크롬은 무슨 짓을 하고 있는 것일까?

그냥 크롬이 외계인과 접촉했다고 넘어가기에는 용납이 되지 않았다. 난 너무 장인이니까 ㅋㅋㅋ~ 거기다 누구도 신경쓰지 않았지만 경쟁 앱에게 보여주고 싶었다. 난 웹뷰에서 인벤 동영상 페이지도 렌더링 하지롱, 이라고 말이다. 하지만 집요하게 검색했으나 관련 글을 찾기가 쉽지 않았다. 그렇게 한동안 이 문제에 대해서 제법 고민을 했는데 신이 가엽게 여기셨는지 어느날 갑자기 계시가 내리듯이 어떤 생각이 머리를 스쳤다. 그리곤 그 상상대로 만들어 봤는데 얼추 크롬과 비슷하게 동작하는 것을 볼 수 있었다. 하지만 그 결과는 날 재차 의문에 빠트렸다. 이게 과연 옳은 길일까라는 생각이 들었기 때문이다.

#1

우선 인벤의 동영상 링크를 보면 아래와 같은 구조로 소스가 코딩되어 있다. 플래시 플레이어를 사용하는 유튜브 링크다. 지금 유튜브 링크는 모두 iframe 형식으로 변경이 되었다. 즉, 인벤이 만든 이 코드는 예전 유튜브 코드로 모바일 환경에서는 적합하지 않은 코드다. 그러니 응당 보이지 않는 것이 정상일 것이다. 그러면 도대체 크롬은 어떻게 보여주고 있는 것일까?

<embed allowscriptaccess="never" width="650" height="366"
pluginspage="http://www.macromedia.com/go/getflashplayer"
src="http://www.youtube.com/v/l9yD5r1AsNo?version=3&amp;hl=ko_KR&amp;rel=0"
type="application/x-shockwave-flash" wmode="transparent" allowfullscreen="true"
allow&#83;criptaccess="never" style="width: 650px; height: 366px;">

내가 생각해 본 방법은 저걸 그대로 보여주는 건 말이 안 되니 저걸 통째로 고쳤을거란 생각이 들었다. 왜냐하면 어차피 저 코드에 렌더링할 페이지 주소는 모두 나와 있기 때문에 iframe으로 대체 시키는 것이 어렵지 않기 때문이다. 바로 아래와 같이 말이다. 아래 코드는 문서에 있는 embed를 죄다 찾아서 iframe으로 변경하는 일을 한다. 실제로 안드로이드 웹뷰에서 인벤 페이지를 로딩한 다음 아래 자바스크립트를 샤샥 돌려주면 깔끔하게 비디오 화면이 출력되고 재생도 된다.

var elem = document.getElementsByTagName('embed');
for(var i=0; i < elem.length; ++i)
{
	var obj = document.createElement('iframe');
	obj.style.width = elem[i].style.width;
	obj.style.height = elem[i].style.height;
	obj.frameBorder = '0';
	var url = elem[i].src.replace('/v/', '/embed/');
	obj.src = url;
	elem[i].parentNode.replaceChild(obj, elem[i]);
}

#2

그냥 단편만 살펴본다면 크롬의 이 재치있는 생각은 나쁠게 없어 보인다. 모바일 준비가 되지 않은 유튜브 링크를 포함한 거의 모든 사이트를 정상적으로 렌더링할 수 있게 만들어주니까 말이다. 하지만 다른 한편으론 나빠 보이기도 한다. 페이지 제작자가 자신이 실수했다는 사실을 인지하기까지 시간을 오래 걸리도록 만든다는 점을 첫번째 문제로 들 수 있다. 왜냐하면 잘못됐다는 사실을 즉각 알려줘야 빨리 고칠 수 있는데 저런 식으로 내부적으로 변형시키는 과정을 통해서 페이지가 정상적으로 렌더링돼 버리면 제작자 입장에서는 문제가 없는 것으로 오해할 수 있기 때문이다. 두번째 문제는 더 심각한데 이런 문제들이 심화되면 사용자들이 특정 브라우저에 강하게 종속될 수 있다는 점이다. 에고가 강한 페이지 제작자가 크롬에 최적화 됐고 다른 브라우저가 이상하다고 말하는 상황을 예로 생각해 볼 수 있겠다. 그렇다면 그 페이지를 꼭 이용해야 한다면 크롬을 사용할 수 밖에 없다. 어디서 많이 본 장면 같지 않은가? 맞다. 인터넷 익스플로러의 몇 년전 모습이다. 그때도 IE는 모질라에서 주구장창 오류를 뿜어대는 스크립트들도 무슨 재준지 기가 막히게 오류 없이 돌려주곤 했었다. ActiveX는 말할 것도 없다. 이제는 그 자리를 크롬이 메우고 있는게 아닐까라는 생각이 잠시 들었다.

가용성과 하위호환성을 위해서 얼마만큼 느슨해져야 하는 것일까? 또 표준을 지키기 위해서 얼마만큼 엄격해져야 하는 것일까? 물론 여기에 답은 없다. 어떤 사람들은 가용성과 하위호환성에 더 높은 가치를 두기도 하고, 또 어떤 사람들은 순결한 상태에 더 높은 가치를 두기도 한다. 다만 프로그래머 입장에서 한 가지 바램이 있다면 업계를 주도하는 키 플레이어들은 좀 엄격해졌으면 하는 바램이다. 왜냐하면 그들만이 사용자를 변화시킬 힘이 있기 때문이다. 하지만 실상은 메이저 업체들은 계속 알 수 없는 파편화를 주도하고 정작 힘없는 오픈소스들만 표준을 잘 지키는 형국인것 같아 씁쓸한 기분이 든다.

-- 2014.06.20

다행이도 이 글을 쓰는 사이 (적어도 12개월+) 인벤은 페이지를 고쳤다.

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중