Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Google Hackfair를 위해 만들었던 GDFS 크롬 익스텐션

지난 8월 구글 블로그에 Hackfair에 참여할 프로젝트를 모집한다는 공지가 올라왔고 핵페어에 상품으로 걸린 넥서스 7에 눈이 멀어 곧 같이 스터디 하는 사람들이랑 아이디어를 주고 받기 시작했다.(뭐 이건 평소에 계속하는 거지만...) 항상 그렇듯이 초반에는 겁나 거창한 아이디어에 감격하면서 해보자하고 있었지만 다들 바쁜 생활가운데 이걸 추진할 잉여는 별로 없었는데 그 가운데 스타트업에 몸을 담고 있는 오리대마왕님이 구글 드라이브를 이용해서 파일을 쉽게 친구들에게 전달하는 아이디어를 제안했고 의견일치를 봐서 프로토타이핑을 시작했다.(그러고 나서 깨닫게 된거지만 초기에 생각했던 아이디어는 한 일년을 구현해야 나올까 말까한것 같;;;)

의견조율을 4-5명이서 했지만 생활의 바쁨으로 다른 사람들은 빠지고 오리대마왕님이 안드로이드 앱을 프로토타이핑하고 나는 크롬 익스텐션을 프로토타이핑하기 시작했다. 아이디어자체는 심플하다. 파일을 안드로이드앱이나 크롬익스텐션에서 바로 구글 드라이브로 업로드하고 친구에게는 링크를 전달해 주는 것이다.


크롬 익스텐션 개발
웹개발은 많이 했지만 크롬 익스텐션 개발은 처음했다. 초기에는 fallroot님이 작성하신 크롬 익스텐션 개발 강좌가 크롬 익스텐션의 개념을 잡는데 많은 도움이 되었다. 그 사이에 manifest의 버전이 2로 올라가면 인라인 자바스크립트를 쓸 수 없게 되거나 하는 등의 변경사항이 생기긴 했지만 크롬 익스텐션 개발가이드를 참고하면 이런 문제는 그렇게 어렵지는 않았다. 정작 문제가 된 것은 구글 OAuth 2 연동이었다. OAuth 2 연동가이드가 있었지만 뭔가 다 제공해주는것 같지만 막상 구현하려니 인증이 잘 되지 않았다. 뭔가 착각을 하는지 처음 연동 띄우는데만도 꽤나 걸렸고 로그인하고도 OAuth 키로 API 연동을 도저히 구현을 못해서 결국은 구글의 Boris Smus가 만든 oauth2-extensions를 가져다가 사용했다.(진작 이거나 쓸걸...)

그냥 문서만 볼때는 구글의 개발자 가이드가 상당히 잘 되어 있는 것 같았지만 막상 구현하려니 부실해서 제대로 사용을 할 수가 없었다. 기본개념만 가이드를 참고하고 결국 이슈는 대부분 Stackoverflow에서 해결할 수 밖에 없었다. 너무 기본적인 내용만 있어서 권한획득 요청, 사용 조건등등 다 일일이 삽질하면서 개발해야했다. 프로토타이핑 하려다가 인증에만 한 2주 쏟아붙고 구글 드라이브 연동에 한 1주 쏟아부었는데도 제대로 안되서(구글 드라이브 자바스크립트 SDK가 제공되고 있지만 스크립트를 인클루드했을때 부모노드를 참고하는 코드가 있어서 HTML이 없는 크롬익스텐션에서는 제대로 사용할수가 없었다.) 너무 힘들었다. 계속 삽질만 한 3주 하다보니 별로 보고 싶지 않아서 사실 좀 내팽겨쳐놓고 있었다.

추가적으로 크롬 익스텐션을 개발하면서 어려웠던 것은 경험이 없다보니 크롬 익스텐션의 샌드박스 정책을 이해하는 것이 꽤나 어려웠다. 컨텐트스크립트와 백그라운트 페이지와의 통신 방식, 컨텐트 스크립트에서 접근할 수 있는 영역과 안되는 영역, 변수 공유 등 비슷한듯 하면서 비묘히 다른 여러가지 샌드박스 정책으로 삽질을 꽤나 했다. 실구현에 들어가기도 전에 이것저것 기반을 만드는데만도 엄청난 시간이 들었다. ㅠㅠ


GDFS
얼마동안 프로젝트에 대한 협의를 못하면서 10월에 넘어와서 "하지말까..."하는 생각을 하던 무렵 오리대마왕님이 달리자고 하셨고 정신없는 가운데 다시 힘내서 열심히 달렸다. 기반은 거의 완성되어서 이제 구현만 하면 되기 때문에 기능 좀더 명확히 정의하고 UI만들어서 완성해 나갔다. 이름도 GDFS라고 짓고.... 소스는 조잡하지만 그렇게 GDFS라는 크롬 익스텐션을 만들어서 크롬 웹 스토어에 런칭까지 했다.(처음 올려봄...)

익스텐션의 기능은 지메일에서 파일을 드래그앤 드롭으로 파일첨부를 하듯이 페이스북이나 트위터의 텍스트에어리어에 파일을 드래그 앤 드롭하면 구글 드라이브에 업로드를 하고 링크를 텍스트창에 던져준다. 팀이름도 kingori 님과 outsider를 합쳐서 orisider라고 짓고 동영상제출을 해야했기 때문에 웃고 떠들면서 즐겁게 동영상도 만들어 올렸다.(뭔가 민망하지만 그래도 추억이니까 ㅎㅎㅎ)



열심히 해서 참여했지만 결과적으로는 최종 40작품에 포함되지 못하고 떨어졌다. ㅠㅠ 아쉽기는 하지만 뭐 이렇게 한번 달려서 뭔가 결과물이라도 만들 수 있었던 건 다행이라고 생각한다. 크롬 개발자등록도 했으니 앞으로 뭔가 생각났을때 부담없이 만들어 올릴 수도 있고....(조만간 오리대마왕님이랑 위로의 자리라도 만들어야지.. ㅠㅠ) 참고삼아 소스는 Github에 등록되어 있다.
2012/10/24 01:41 2012/10/24 01:41