지난 5월 10일 맥/아이폰 개발 세미나가 열렸습니다. 국내 맥 사용자 기반이 크지는 않지만 그만큼 맥과 아이폰에 대한 관심이 높아졌음을 보여준 세미나였습니다. 이번 인터뷰에서는 이 세미나를 준비한 스태프 중 한 명인 박진형 님을 만나보았습니다.
박진형 | 넥스지, OSXDev 공동 대표
학부 전공이 수학이라고 들었는데 원래는 수학에 관심이 있었던 건가요. 수학을 좋아하긴 했는데 궁극적으로는 컴퓨터 과학을 공부하고 싶었고 수학을 잘 하면 도움이 된다는 말을 듣고 수학을 전공하게 됐습니다. 얼마만큼 도움이 되고 있는지는 아직 잘 모르겠습니다. (웃음)
학교 수업이란 게 종종 따분하기도 한데 기대했던 것과 다르다는 느낌을 받지는 않았나요. 그러기도 했는데 컴퓨터 과학 쪽 수업에서 TinyOS로 프로젝트를 하면서 관련 논문을 살펴보니 중요한 내용을 대부분 수학으로 증명을 해놓았더군요. 그 때 ‘정말 수학을 잘 해야겠구나’ 하는 걸 느꼈습니다. 프로젝트에서 구현해야 하는 것이, 사람이 박수를 친다든지 하는 소리가 나면 그 소리가 어디에서 났는지 센서들이 판단하도록 하는 것이었는데 그 내용이 수학으로 증명되어 있었습니다. 당시에는 그 내용을 잘 이해하지 못해 중노동 식으로 프로젝트를 진행했습니다.
‘국방의 의무’이기는 하지만 직업으로 프로그래밍은 어떻게 시작하셨나요. 젠투 리눅스를 쓰다 보니 배포판 특성상 프로그램을 직접 빌드할 때가 많아 리눅스 환경에서 잡다한 코딩을 많이 해보게 됐고 그러다 아는 분의 소개로 현재 회사에서 일하게 됐습니다.
사회 생활을 시작하고 나서 학생 때는 미처 몰랐다든지, 참고할 자료가 없다시피 한 일을 맡아보신 적은 있나요. 모 회사에서 미니 PCI 형태의 시드(Seed) 알고리즘 가속기를 내놓은 적이 있었습니다. 불행히도 나온 지 얼마 안 되어 그 프로젝트가 거의 중단되는 탓에 방치된 제품이었는데 리눅스 커널 2.6으로 그 가속기의 장치 드라이버를 이식하는 일을 맡았습니다. 참고 문서도 없는 상태에서 맨땅에 박치기하듯 개발했던 적이 있습니다. 사장님이 개발자 출신이셔서 저와 함께 며칠 밤을 새며 일해주시고 문제를 푸는 실마리를 주셨던 게 기억에 남습니다.
그 프로젝트에서 얻은 게 있다면… 소프트웨어 개발에서 시간 압박에 쫓기지 않는 게 중요하다는 걸 알았습니다. 어려워 보이는 것도 시간이 적절히 주어진다면 충분히 개발할 수 있을 것 같고요. 다만 시간 관리가 늘 어렵다는 걸 느낍니다. 요즘 업무는 신제품 개발이라 그 정도는 아니지만 가끔씩 기존 제품 유지보수 작업을 할 때는 엄청나게 시간에 쫓길 때가 있습니다. 아무래도 이미 판매된 제품의 문제를 제한된 시간 안에 고쳐야 하니까요.
리눅스 개발을 하다 맥으로 영역을 넓히셨는데요. 블로그를 보면 맥에 적응하기까지 순탄(?)하지만은 않았던 것 같습니다. 맥을 계속 써도 되겠다고 느낀 때는 언제였나요. 젠투 리눅스를 쓰다가 비슷한 유닉스 계열 운영체제이면서 UI가 예쁜 맥 OS X에 관심이 생겼습니다. 그런데 막상 맥(당시 아이북)을 구입해 써보니 속도가 사람이 쓸 수 있는 게 아니더군요. (웃음) 예쁘기는 하지만 제가 쓸 수 있는 게 아니라는 생각이 들어 처분했습니다. 그 후로 1년이 지난 후 우연히 애플 제품 매장에 들어가 이것저것 만져보다 이제는 쓸 만하다는 생각이 들어 다시 맥을 샀고 맥 사용자가 됐습니다.
맥 프로그래밍을 시작한 계기는 무엇인가요. 처음에는 맥 UI 개발이 복잡한 줄 알고 별 관심이 없었습니다. 그러다 우연히 맥 프로그래밍 환경이 C를 확장한 오브젝티브-C 기반임을 알았습니다. 그래서 책을 한 권 사서 그 내용대로 따라 해 보니 상당히 재미있었고 그 후로 맥 프로그래밍에 빠지게 됐습니다.
기존 유닉스 스타일이 맥 프로그래밍을 공부하는 데 방해가 되지는 않았나요. 아무래도 맥 개발 환경이 유닉스와 호환되다 보니 유닉스 스타일로 코딩을 하고 겉에 UI만 붙이는 식으로 하게 되더군요. 결과는 코드 양도 늘고 예쁘지 않았습니다. 애플의 코코아 프레임워크를 사용했으면 훨씬 더 간결하고 예쁜 코드를 만들 수 있었는데 처음 배울 당시에는 몰랐다가 1년 정도 지나고 나서야 그런 점들이 보이기 시작하더군요. 그런데 요즘도 급하면 저도 모르게 유닉스 스타일 코드를 쓰기도 합니다. 물론 코드를 금방 만들기야 하겠지만 나중에 보면 코코아답지 못하다는 생각이 듭니다.
당시에는 변변한 자료가 없어서 공부하기가 쉽지 않았을 텐데… 처음에는 Aaron Hillegass가 쓴 Cocoa Programming for Mac OS X이라는 입문서로 시작했는데 문제는 그 다음이더군요. 그래서 애플에서 만든 유명한 소프트웨어를 분석하고 따라 구현해 보고 잘 안 되면 애플 코코아 메일링 리스트에 계속 질문했습니다. 코코아 개발자들에게는 특히 메일링 리스트 활용이 중요한 것 같습니다. 아직은 국내에 코코아 개발자가 많지 않아 깊이 있는 답변을 빠르게 얻기 어려운데 애플 메일링 리스트에서는 애플에서 일하는 개발자들이 답변을 주기도 해 도움이 될 때가 많습니다.
코코아 스터디 모임은 어떻게 시작하셨나요. 앞서 말한 책을 주문하고 나서 맥 사용자들을 알고 싶어서 OSXDev 게시판에 같이 공부할 사람을 찾는다는 글을 썼습니다. 그 글이 예상 외의 호응을 얻었고 많은 분들을 만나 1년 반 정도 함께 공부했습니다.
각자 본업을 하면서 모임을 1년 반 동안 유지한 힘은 무엇인가요. 맥 애호가들이 아무리 불편해도(예: 액티브X 같은 국내 인터넷 환경) 맥을 꿋꿋이 쓰는 것처럼 코코아 프로그래밍에 빠진 사람들도 마찬가지인 것 같습니다. 다른 개발 환경들도 있지만 맥의 매력이 코코아에도 녹아 들어가 있다고 느끼고 코코아 프로그래밍을 가지고 노는 것이라 생각하고 즐겼습니다. 그래서 본업이 있지만 자발적으로 열심히 모여 공부할 수 있었고요..
몇 해 전 WWDC라는 해외 컨퍼런스에 다녀오시기도 했죠. 무엇을 얻으셨나요. 컨퍼런스를 마치고 돌아가면 뭔가 만들어야겠다는 동기를 얻었습니다. 코코아 프로그래밍이 본업이 아니다 보니 열심히 하지 못하게 되는데 WWDC에서 참가자들이 애플 개발자들에게 자신이 만든 애플리케이션을 가져와 질문을 하는 걸 보고 다음 WWDC 때는 질문을 하나라도 만들어 가야겠다는 동기 부여가 됐습니다. 다음에 기회가 되어 또 가게 된다면 그 동안 메일링 리스트에서 본 사람들과 만나 이야기를 나누고 싶습니다.
좋은 UI를 만들기가 쉽지 않다는 이야기를 종종 하셨는데 구체적으로 어떤 어려움인가요. 미적인 면과 사용성 면에서 모두 어려운 것 같습니다. 맥 사용자들은 사용성이 떨어지거나 밉게 생긴 애플리케이션에 민감합니다. 처음 코코아 프로그래밍을 했을 때만 해도 개발 도구에서 제공하는 기본 구성요소만 써서 UI를 만들어도 예쁘다고 생각했는데 계속 쓰다 보니 UI에 신경을 많이 써야 함을 깨달았습니다. 그러다 보니 UI 디자인 자체가 큰 벽이 되고 사용성 면도 신경을 써야 하니 기존 애플리케이션을 많이 분석해야 할 필요를 느낍니다.
유명한 맥 유틸리티를 보면 한두 명이 소규모로 개발하는 것이 많은데 UI나 사용성 문제는 어떻게 해결하는 걸까요. 한두 명이 그 정도까지 해내는 걸 보면 대단하다고 생각하는데 관련 메일링 리스트를 보면 UI 질문이 상당히 많습니다. UI 구성요소 배치 같은 세세한 질문이 애플리케이션의 핵심 로직 질문만큼이나 많이 올라오는 것이 인상적이었습니다.
지난 5월 10일 OSXDev 부트캠프 2008 세미나를 여셨죠. 아이디어는 어떻게 나왔나요. 저와 함께 OSXDev를 운영중인 윤성관 님의 아이디어였습니다. 지난해부터 맥 개발에 관심을 갖는 개발자들이 늘고 있는데 가장 먼저 생긴 OS X 개발자 동호회로서 뭔가 도와야 하지 않겠느냐는 생각에서 시작했습니다. 같이 고민하면 문제를 더 빨리 해결할 수도 있고 서로 도움을 주고 받는 과정에서 맥 개발이 더 활성화될 수도 있을 것 같아 세미나를 준비했습니다.
예상 외로 많은 사람이 참가했는데 세미나 후 자체적으로 어떻게 평가하셨나요. 스무 명에서 많아야 서른 명 정도 올 거라 예상했는데 실제로는 그 세 배 가까운 인원이 참석했습니다. 객관적인 수로 보면 적지만 국내 맥 개발 저변을 보면 큰 호응이었다고 생각합니다. 세미나를 마치고 뒷풀이에서 나온 이야기들을 모아 보면 일보다는 개인적 관심으로 온 분들이 대부분이었습니다. 아직은 취미로 맥 개발을 생각하는 분들이 많은 것 같습니다.
그런 관심을 이끌어낸 데는 아이폰 영향이 크겠군요. 멀티터치 인터페이스와 예쁜 디자인에, 해킹된 아이폰이 나오면서 사용자가 개발한 애플리케이션을 설치할 수 있다는 사실이 관심을 불러 일으켰는데 정식으로 SDK까지 나오자 자신이 만든 애플리케이션을 올릴 수 있다는 기대감이 커진 것 같습니다.
맥 개발 분야에 들어오려는 개발자에게 필요한 것은 무엇일까요. 아무래도 맥 OS X이 기본적으로 유닉스 계열 운영체제이므로 유닉스 프로그래밍에 대한 지식과 스몰토크나 루비 같은 언어에 대한 경험이 있으면 도움이 될 겁니다. 또 포토샵을 잘 다루면 좋습니다. (웃음) 아이폰/아이팟 터치 애플리케이션의 경우 기능뿐만 아니라 작은 화면에서 얼마나 편하게 쓸 수 있을 것인지를 고려해야 하고 특히 아이디어가 중요할 것 같습니다. 아이폰/아이팟 터치 애플리케이션이 판매되는 AppStore에서 무한 경쟁을 해야 하니까요.
개발자들이 일에 묻혀 지내기 쉬운데 자신을 환기시키는 활동을 해 보는 것도 좋겠다는 생각이 듭니다. 취미로 악기도 배우시고 습작으로 곡도 쓰시는 걸로 알고 있는데 음악은 언제부터 하셨나요. 사실 프로그래밍보다 음악을 더 먼저 시작했습니다. 중학교 때부터 미디를 시작했고 짧은 몇 마디짜리 곡을 써보기도 했습니다. 저뿐만 아니라 주변의 맥 개발자들을 보면 취미나 관심사가 하나씩 더 있고 “~에 빠져 안 되는 거다”라는 이야기를 서로 하기도 합니다. (웃음)
제프 라스킨이나 앨런 케이는 훌륭한 연주자이기도 한데 음악과 개발이 서로 만나는 부분이 있다고 보시나요. 요즘 한창 재즈 피아노에 빠져 있는데 개발과 연결되는 부분이 있는 것 같습니다. 재즈 곡들은 기본 멜로디가 있고 그 위에서 자유롭게 즉흥 연주(improvisation)를 하는데 코코아 개발이 이와 비슷한 것 같고 음악을 배우는 데도 다시 반영되는 것 같습니다. (웃음)
그 외에도 취미로 인해 긍정적인 영향이 있다면… 쉴 수 있는 시간을 많이 얻습니다. 피아노를 치다 보면 다른 생각을 하지 않고 거기에만 집중하게 되는데 그러다 보면 일 생각 때문에 생기는 스트레스도 줄고 결과적으로는 몸과 마음이 더 건강해지는 것 같습니다.
앞으로 계획은… 병역을 마치면 복학해 1년 정도 학교를 더 다녀야 하는데 그 동안에 생각해 보려 합니다. 대학원에 진학을 해 공부를 계속 한다면 전산으로 전공을 바꾸거나 취업을 한다면 계속 개발을 하려 합니다.
[박진형 소개] 연세대학교 수학과를 휴학하고 넥스지(NexG)에서 병역 특례로 일하고 있다. 리눅스 커널 개발, 오브젝티브-C, 코코아(Cocoa) 애플리케이션 개발에 관심이 많으며 OSXDev(http://www.osxdev.org)의 공동 대표를 맡고 있다.