오늘부터 내일까지 네이버에서 DEVIEW 2013을 진행한다. 첫째 날에 진행된 세션들 중에서 내가 들은 세션들에서 무엇을 다뤘고, 어떤 생각을 했고 무엇을 느꼈는지 이야기해 보겠다.
SK planet에서 T store ARM (Application DRM)을 구현한 이야기. 어렵다. 배경지식이 부족해서. 어... 딱히 할 말이 없네?
<프로그래머로 산다는 것>의 공동저자 유석문씨의 이야기. '자바 3~5년 경력 개발자를 대상으로 기술면접을 보면 스택을 못 짜더라'는 이야기는 꽤나 충격적이었다.
<애자일 프랙티스>에 나오는 이야기와 이번 학기에 '컴퓨터구조론' 강의를 들으면서 배운 과학과 공학의 차이가 생각났다. 이야기가 많이 겹쳐서.
'좋은 개발자'는 '공유'와 '협업'을 할 줄 알아야 한다고 말씀하셨다. '공유'를 하는 이유는 본인이 관대하거나 잘나서가 아니라, '주변 사람을 똑똑하게 만들어 사고를 줄이기 위해서'라고 하셨다. 음... 그럴싸한 말이긴 한데 주변 사람들이 나보다 똑똑한 경우도 얼마든지 있기 때문에 반드시 맞는 말은 아닌 것 같다는 생각이 든다. 성공 사례보다는 실패 사례를 공유하는 게 도움이 된다는 이야기와 메일링 리스트, 세미나 (재미있게), 코드 리뷰 등의 방법을 사용하라는 말씀에는 동의.
'협업'의 전제 조건은 상대에 대한 이해라고 하셨다. 당연한 이야기이지만 잘 안 지켜지니까 강조하셨을 것이다. 상대에 대한 이해만큼 중요한 것이 자아존중감이라고 하셨는데, 자신이 있는 그대로를 인정하고, 타인의 부정적인 견해에 크게 (부정적으로) 영향을 받지 않아야 한다고 하셨다. 음! 좋은 말씀.
그리고 끊임없는 연습을 강조하셨다. 이 또한 지극히 당연한 이야기. 전반적으로 '새롭다'고 느낀 이야기는 많지 않지만 당연하면서도 중요한 이야기니만큼 이것들을 다시 한 번 생각하게 되는 계기가 되었다.
이거는 등기 우편 하나 부치고 오느라 늦어서 제대로 못 들음. 몰랐는데, 일본에 개발자 커뮤니티가 그렇게 크다고 한다. 오픈소스 카페였나? 그런 게 있다고 하던데. 신기방기.
안드로이드 앱 개발을 본격적으로 해 보지는 않았지만, '테스트 자동화'라는 키워드에 이끌려 들은 세션이다. 성능의 측정 기준, 측정 방법을 정하는 것이 중요하다는 이야기를 들으니까 또 '컴퓨터구조론' 강의가 생각난다. 암튼 코드 레벨에서 성능 측정 테스트와 UI 테스트를 어떻게 자동화하셨는지 살펴 본 세션이었다. 아, 그렇구나.
이 세션을 보고 음... 삽질 쩐다...가 아니라 '성능 개선을 위해서 이런 수단까지 동원하는구나'라는 생각이 들었다. 일단, native app과 웹 뷰 안의 페이지가 어떻게 서로의 함수를 호출하는지 방법을 보여주셨는데, 여기서부터 '헐...' 소리가 나왔다. 북마클릿을 쓰던데... 허허헣허
해서 안드로이드 프레임워크의 웹뷰가 제공하지 않는 WebSocket를 구현하고, 제공은 하지만 성능이 영 좋지 않은 canvas API의 성능을 올리는 방법을 살펴 보았다. WebSocket이야 그냥 API에 맞춰서 통신 기능을 구현하면 된다 치는데, canvas는 무슨 있는 API를 덮어써버리고 좌표 맞춰서 화면에 그리는 작업을 수행하고... 더 이상의 자세한 설명은 생략한다.
제한된 환경에서 최고의 성능을 끌어내기 위한 모바일 개발자들이 새삼 대단하게 느껴진다.
네이버에서 AutoItScript를 사용하여 만든 UI 테스트 자동화 도구 GUITAR를 소개하는 시간이었다. 스크립트를 사용하여 UI 조작을 자동화하는 건 언제 봐도 신기하다. 개념 자체는 별로 신기하지 않지만 말이다.
데모를 보여주셨는데, 처음에 봤을 때 (GUITAR의) UI가 구려서 큰 기대를 안 했는데, 나름 할 건 다 하는(?) 모습을 보고는 쓸 만하겠다는 생각을 했다. 테스트 보고서도 자동으로 뽑아주고, CI와 연동하여 말 그대로 테스트 자동화를 실현할 수 있더라.
VNC 서버 연결을 사용하여 모바일 기기의 UI도 테스트할 수 있다고 한다. 물론 iOS에서는 탈옥이 필요하다고.
스크립트를 한글로 작성한다! 물론 아희 언어만큼 기괴한 언어는 아니다. 세션에서는 영문으로도 스크립트를 작성할 수 있는지가 언급되지 않았는데, 만약 불가능하다면 한국어를 사용하지 않는 사람들이 사용하기에 많이 불편하겠다는 생각이 든다.
관심이 있다면 확인해 보시길. 찾아 보니까 만들어진 지는 좀 됐다. 2011년.
Canonical의 Alex Chiang씨께서 직접 진행하신 세션. Ubuntu Phone OS를 기획하게 된 계기와 주요 컨셉, 그리고 간단한 개발 예시를 살펴 보았다.
'Scope'라는 인터페이스가 있는데, 여러 스토어에 있는 콘텐트를 한 인터페이스에서 통합하여 보여준다고 한다. 안드로이드에서 이용할 수 있는 다양한 스토어(혹은 마켓)들을 iOS의 App Store나 iTunes Store처럼 사용할 수 있는 것.
Ubuntu가 Unity라는 UI를 채택하면서 이뻐졌는데, Ubuntu Phone OS도 마찬가지로 Unity를 채택하여 꽤 이쁘다. UI 파편화를 위한 해결책으로 반응형 디자인을 제시하였다. Twitter Bootstrap처럼 그리드 기반 UI를 사용할 수 있다고 한다. 아, 그리고 UI 요소들의 길이 단위는 픽셀 같은 절대 단위가 아닌 'gu' (grid units)를 사용한다.
UI 구현은 Qt를 사용하기 때문에, QML을 사용할 수 있다. Inline JavaScript도 지원한다고 한다. HTML과 섞어서 사용할 수도 있다고 한다. 개발하는 입장에서 편할 수도, 불편할 수도 있겠다.
Canonical에서 오신 분과 함께 Ubuntu Phone OS의 구체적인 것들에 대해 알아 보았다는 점에 의의를 둔다.
사실 BOF 시간(Birds of a Feather: 관심사가 같은 사람들끼리 모이는 네트워킹 시간)에는 Ubuntu Phone OS 개발을 함께 해 보는 자리에 가고 싶었는데, 어쩌다 보니 못 갔다.
그래서, D2Fest 수상작을 살펴 보았다. 그림 파일의 픽셀에 원본 파일의 데이터를 저장하여, iOS에서 파일 교환을 쉽게 할 수 있는 라이브러리를 보았다. 아이디어는 굉장히 참신하고 사용하기도 간편하다고 생각을 하는데, 카카오톡이나 LINE에서 이미지 크기를 압축하는 과정 때문에 한 번에 전송할 수 있는 데이터의 크기가 한정되어 있다는 점이 많이 아쉬웠다. 이런 한계점에도 불구하고, 픽셀의 Y 값이 손실되지 않는다는 점을 이용하여 이미지가 파일의 이름이나 생성 날짜 따위의 메타데이터를 보여주는 것은 정말 놀라웠다. 오오...
음... 내일이 더 기대된다. 오늘도 좋은 이야기를 많이 듣고, 새로운 정보를 많이 얻었지만 내일은 '데이터'라는 주제에 대한 세션들이 많이 있고, 좀처럼 뵙기 힘든, 외국에서 근무하시는 분들이 세션을 진행하기도 하니까. 오늘은 일찍 자야겠다.