제 경험이 다른 개발자에게, 특히 모바일 기기용 어플리케이션 개발을 이제 막 시작한 분들께 조금이나마 도움이 되었으면 좋겠습니다. 기타 문의는 댓글이나 트위터로 연락 부탁드립니다. - 곽별샘(@semix2)

몇 개의 어플리케이션을 개발하고, 그 중 몇 개를 배포하면서 배운 가장 중요한 사실은 '완벽한 어플리케이션' 은 없다는 것이다. 이 말은 여러가지를 의미하고 있지만 특히 나는 '기능의 정도' 에 중점을 두고 이야기 하고자 한다. 

모든 기능을 다 갖춘 어플리케이션을 출시하는 것은 나 같은 개인 개발자에겐 무모한 짓이다. 이건 무리가 아니라 정말 무모한 짓이다. 왜냐하면 '모든 기능' 의 정의 자체가 모호하기 때문이다. 개발자의 욕심뿐만 아니라 주변 사람들의 욕심까지 가미되면 끝도 없는 마일스톤이 펼쳐지기 마련이다. 모든 기능을 구현하고자 하면 결코 그 어플리케이션을 완성시킬 수 없다. 그렇기 때문에 나는 어플리케이션의 가장 핵심이 되는 기본 기능을 충실히 구현한 후 바로 배포하는 것이 가장 현명한 선택이라 생각한다. 

개발자가 개발하고자 하는 기능과 사용자가 원하는 기능은 분명 차이가 있다. 개발자는 성격상 모든 기능을 넣고 싶기 마련이다. 마치 '나는 이런 것도 할 수 있어!' 라고 자랑하는 것처럼 말이다. 그러나 그 중 상당 부분은 사용자들이 원하는 기능이 아니다. 있으면 나쁠 거 없지만 그렇다고 좋다고 하긴 애매한 그런 기능을 구현하려고 애쓰면 괜히 개발 기간만 늘어날 뿐이다. 그리고 개발 기간이 길어질수록 개발 의지가 줄어들어서 결국 중간에 포기하기 마련이다. 이러한 사태를 막기 위해선 '어디까지 구현할 것인가' 를 명확하게 정의해야만 한다. 

어플리케이션을 배포하고나면 반드시 사용자의 반응을 살피자. 나는 트위터 검색을 이용한다. 검색어로 'ted sub'를 입력하면 TED+SUB에 대한 많은 사람들의 목소리가 들린다. 그들이 정말 원하는 것은 무엇인가? 사용자의 목소리를 듣고 나면 이제 어떤 기능을 추가해야 하는지가 명확해진다. 그래서 현명하고 합리적인 업데이트 계획을 세울 수 있다. 어플리케이션은 한 번에 완성하는 게 아니라 천천히 완성해 나가는 것이다. 



사용자 인터페이스(UI) 개선

아이패드 전용으로 출시했던 TED+SUB을 아이폰/아이팟터치에서도 실행 가능하게 바꾸면서 가장 힘들었던 점은 UI 배치였다. 아이패드는 화면이 커서 모든 정보를 한 화면에 보여줄 수 있었지만 아이폰의 경우 화면이 작아 한 번에 제한된 정보만 보여줄 수 있기 때문이다. 

효과적인 화면 분할을 위해 강연 목록과 강연 상세 정보를 나누었다. 이 때 문제가 된 것은 다름아닌 설정 화면이었다. 기존의 설정 화면에서는 강연 목록에 대한 검색 제한 옵션과 함께 화질 선택, 자막 싱크 등의 부가적인 옵션들이 있었는데 이를 아이폰에서도 한 화면에 모두 보여주는 것은 문제가 있다고 판단했다. 화질 선택과 자막 싱크는 강연 목록과는 관계가 없고 오직 강연 영상에만 관련이 있기 때문이다. 그래서 설정 화면 역시 둘로 분리했다.

그런데 여기서 디자인 실수를 두 개나 저질렀다.

하나는 설정 버튼의 이름이다. 두 개의 설정 화면을 시작하는 버튼의 이름이 모두 'Settings' 였던 것이다. 이는 사용자에게 커다란 혼란을 주거나 두 번째 설정 화면이 있다는 사실 조차 인식시키지 못하는 무시무시한 디자인적 문제를 갖고 있다. 그래서 이번 업데이트에서는 두 개의 설정 화면에 대해 각각 다른 이름을 부여했다. 성격에 따라 하나는 'Filters', 나머지 하나는 'Settings' 로 결정했다.

이전 버전의 문제점: 둘 다 Setting 라니!!


해결: Filters와 Settings로 구분


두 번째 실수는 아이폰과 아이패드에서의 사용자 경험(UX)이 다르다는 것이다. 지난 업데이트에서 방금 위에서 말한 것처럼 아이폰에서의 설정 화면을 둘리 분리하는 과정에서 이를 아이패드에 적용하지 않았다. 하지만 설정과 관련된 사용자 경험은 그것이 아이폰이든 아이패드든 동일해야 한다는게 내 생각이다. 그래서 이번 업데이트에서는 아이패드 역시 설정 화면을 둘로 분리했다. 

이전 버전에서는 Settins 하나가 모든 옵션을 처리


새 버전에서는 아이폰과 동일하게 Filters와 Settings로 구분


사실 이것은 생각보다 쉬운 결정이 결코 아니었다. 기존 아이패드 사용자 입장에서는 설정 화면의 분리가 혼란스러울 것이기 때문이다. 그러나 기술적인 문제로 인해 분리를 결정하게 되었다. Filters 설정에서 보여지는 항목들은 TED 공식 웹사이트로부터 받아온다. 그래서 인터넷 연결에 문제가 있거나 TED 웹 서버에 문제가 생기면 필요한 정보를 수집하지 못하므로 설정 버튼이 비활성화 된다. 그런데 이번 업데이트에서 추가된 다운로드 기능으로 인해 오프라인에서도 강연을 시청할 수 있게 되었고, 오프라인에서 강연을 볼 때 자막 싱크 등을 설정하기 위해서는 설정 버튼이 반드시 활성화가 되어야만 했다. 그래서 아이패드에서도 설정 화면을 둘로 분리했다.

그리고 실행 아이콘이 바뀌었다. 트위터를 통해 이정규(jungkyu lee, @JKworld85)님께서 연락을 주셨고 아이콘을 새로 그려주셨다. 안그래도 이전 버전 실행 아이콘의 TED 글씨가 비실비실해서 조금 불만이었는데 정말 멋진 아이콘으로 탈바꿈!! 업데이트 공지에도 언급했지만, 이 자리를 빌어 다시 한번 정말 고맙습니다!


다운로드 및 오프라인 시청

트위터와 앱스토어 리뷰를 통해 가장 많이 받은 피드백은 '왜 3G로는 강연을 시청할 수 없는가?' 와 '검색이 안된다' 였다. 지난 글에서도 언급했지만 3G에서의 시청을 막은 것은 개발자가 게을러서도 아니고, KT에서 압박이 들어와서도 아니다. 이는 전적으로 애플의 정책 때문이다. TED 공식 웹사이트에서 HTTP Live Streaming을 지원한다면 3G에서도 시청이 가능하지만 현재 그렇지 않으므로 어쩔 수 없이 WiFi가 연결되었을 때만 강연을 시청할 수 있게 한 것이다. (그리고 WiFi에서만 시청 가능하게 하는 것이 생각보다 복잡한 문제임을 알아주었으면 한다. WiFi가 연결되어 있는가? 시청 중에 WiFi 연결이 끊겼는가? 등의 수 많은 예외 상황들을 처리하도록 구현해야 하기 때문이다.)

그래서 첫 번째 질문은 질문 자체를 바꿔야 한다. 'WiFi가 연결되지 않아도 강연을 시청할 수 있는가?' 로 말이다. 이 문제를 해결하는 가장 완벽한 답은 다운로드 기능을 추가하는 것이다. 인터넷 연결이 가능할 때 강연을 미리 다운로드 받아 놓으면 WiFi 연결 상태에 관계 없이, 3G 네트워크 마저 불가능한 경우라도 강연을 시청할 수 있지 않겠는가! (아이폰을 지원하는 시점에서 아이팟터치가 자연스럽게 지원하게 되었다. 그래서 이제 3G 네트워크의 연결 상태도 고려 대상이 된다.)

다운로드 기능을 구현하면서 신경쓴 부분이 몇 가지 있다. 첫 번째는 '이어 받기' 기능이다. 한참을 다운 받다가 갑자기 이런저런 문제로 다운로드가 중지된 경우, 처음부터 강연을 다시 다운로드 받는 것은 굉장한 스트레스일 거라 생각했다. 문제는 '이어 받기가 구현 가능한가?' 였는데 가능하더라. 역시 구글엔 없는 게 없어!


두 번째로 신경쓴 것은 다운로드 중 네트워크의 상태 변화이다. WiFi 상태에서 다운로드 받다가 연결이 끊어진 경우, 3G 네트워크로 자연스럽게 전환해서 계속 받아야 하는가? 나는 아니라고 판단했다. 3G 네트워크는 과금의 대상이다. 모든 사용자가 무제한 요금제를 사용한다고 가정할 수 없다. 따라서 WiFi 네트워크 상태 전이가 일어났을 경우 무조건 일시 정지시키기로 결정했다. 다운로드 일시 정지 기능과 이어 받기 기능은 사실 같은 맥락에 있다. 하나의 문제를 풀면 자연스럽게 다른 문제가 풀린다는 뜻이다. 그렇게 다운로드와 관련된 두 개의 기능이 추가되었다.


AdMob 광고 제거

TED의 강연은 그것을 비영리 목적으로 사용하는 것에 한해 재배포를 허용한다. TED+SUB은 전적으로 TED 공식 웹사이트의 자료에 의존하므로 그들의 라이센스를 따를 의무가 있다. 나는 여기서 어플리케이션을 무료로 제공하면 모든 문제가 해결되는 줄 알았다. 그래서 앱 개발과 유지보수를 위한 약간의 보상 차원에서 애드몹 광고를 붙였다. 이런 결정을 하게 된 이유는,  애드센스가 달린 블로그에서 TED 강연 영상을 가져와 포스팅하는 글을 종종 봤는데 문제가 없어 보였기 때문이다.

하지만 내가 잘못 생각했었다. 국내 TEDx 관계자분들의 지적으로 이 또한 라이센스 위반임을 알게 되었다. 그리고 아주 결정적으로, 한 일본인(水谷 夏彦, @natsu_water)의 멘션이 나를 부끄럽게 만들었다. 그는 멘션을 통해 '앱을 잘 사용하고 있다. 나는 일본어 자막을 만드는 TED 자원봉사자다. 우리의 노력이 널리 전파될 수 있게 해 줘서 고맙다' 라고 이야기했다. 애드몹 광고는 그들의 노력을 심하게 훼손하고 있었다! 그렇게 생각하니 얼굴이 후끈거리더라.

그래서 이번 업데이트부터 애드몹 광고를 제거했다. 이제 나도 자칭 TED 자원봉사자라고 말할 수 있게 된 것 같아 괜히 뿌듯하기까지 하다. 


자막 오류 수정

방금 언급한 일본인은 감사의 메시지와 함께 버그도 하나 리포팅해줬다. 자막의 두 번째 문장이 출력되지 않는 것이 아닌가! 이는 '현재 재생 시간에 적합한 자막을 추출하는 알고리즘' 에 문제였다. 너무 어처구니 없는 이 버그로 인해 얼굴이 다시 빨갛게 물들었다. (아... 부끄러워 죽겠습니다;;) 버그는 생각보다 쉽게 고쳤다.


추후 업데이트 계획

두 번째로 많았던 피드백, 검색 기능을 다음 업데이트부터 제공할 계획이다. 사실 검색은 개발 초기부터 고려했던 사항인데 구현이 쉽지 않았다. TED 공식 웹사이트에서 제공하는 검색 결과가 내 어플리케이션의 의도와는 달랐기 때문이다. TED+SUB은 언어를 설정한 이상, 해당 언어로 번역된 강연만 나오게 되어 있다. 그런데 TED의 공식 검색은 오직 영어 검색만을 제공하며, 검색 결과가 강연뿐만 아니라 공식 블로그 기사 등 TED 웹 전체의 검색 결과가 모두 포함된다.

이 문제 때문에 나는 아직까지 TED+SUB에 검색 기능을 추가하지 않았다. 하지만 '될 것 같으면 되겠지' 하는 내 생각에는 변함이 없다. 다음 업데이트에서는 어떻게든 '의도된 검색' 이 가능해 질 것이다. (라고 일단 자신있게 던져보자!)

그리고 소셜 네트워크를 이용해 강연을 추천하는 기능을 추가할 것이다. 유익한 강연을 주변 사람들에게 추천하는 가장 쉽고 보편적인 방법은 트위터와 페이스북을 이용하는 것이다. 그래서 일단 이 두 개의 SNS를 결합해볼 생각이다. 

이 외에도 지난 글들에서 언급한 업데이트 계획들을 고려하고 있다. 이 글의 첫머리에서 밝혔듯이 '모든 기능' 을 한 번에 다 구현해서 발표하진 않을 것이다. 순차적으로, 그리고 지속적으로 업데이트해서 꾸준히 기능을 추가할 생각이다. 


부탁 드립니다.

앱스토어에 리뷰를 작성해 주세요. 새 버전이 나올 때마다 리뷰는 리셋되므로, 이미 이전에 작성하신 분들도 새 버전에 대해 리뷰를 새로 작성해 주세요. 앱스토어 리뷰는 개발자가 어플리케이션에 대한 사용자 반응을 조사하기 위한 수단을 제공하기도 합니다만, 그보다도 리뷰 자체가 큰 힘이 됩니다. 업데이트 버전을 만들기 위한, 새로운 어플리케이션을 개발하기 위한 힘이 된다구요. 제게 힘을 주세요!!!! 

그리고 트위터를 통한 직/간접적 피드백은 언제나 환영합니다. 멘션이나 다이렉트 메시지로 연락하셔도 좋구요, 또는 ted, sub 두 단어를 포함해서 트윗을 작성하시면 됩니다. 특히 사용 중 문의사항이 있거나 버그를 발견하신 경우에는 앱스토어 리뷰보다는 트위터를 이용해 주시기 바랍니다. 앱스토어 리뷰는 작성 즉시 나타나지 않아서 제가 바로 확인하고 답변해 드릴 수 없기 때문입니다. 게다가 앱스토어 리뷰 작성자에게 연락할 방법이 없어요;

TED+SUB을 이용해 주셔서 고맙습니다. 



CATEGORIES