Outsider's Dev Story

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

자바 커뮤니티 공동 세미나 "자바 개발자를 위한 ‘共感(공감)’을 찾아서" #2

이 포스팅은 자바 커뮤니티 공동 세미나 "자바 개발자를 위한 ‘共感(공감)’을 찾아서" #1에서 이어진 포스팅입니다.



앱스토어 효과 - 유주완(블로그)
World of devlopers의 시대가 왔습니다.
개발은 초등학생때부터 했으며 2009년 10월에 아이폰 출시가 가시화되면서 맥을 구입해서 개발을 시작했습니다. 언론에서는 엄청난 고민 끝에 나온 아이디어인 것처럼 나왔지만 실제로는 5분정도도 안걸렸다고 합니다. 그냥 밤에 누가 막차끝났다고 해서 1시간여의 거리를 걸어가던 중에 막차가 지나가버리는 경험도 있고 해서 누구나 할수 있는 쉬운생각으로 만들기 시작했다고 합니다. 10월 20일 서울버스 베타테스터를 모집해서 진행하고 11월 15일에 업로드를 시작했답니다. 인터페이스 빌더가 있었기 때문에 쉽게 개발을 하였다고 합니다. 11월 21일 사용하다가 초선검색의 부재를 인식하게 되고 22일날 kontacts를 만들어서 업로드를 합니다.

배운 점과 느낀 점은 혼자하기에는 다소 벅차고 가장 많이 올때는 하루에 60개정도까지 매일이 오기 때문에 읽고 처리하는데만도 하루가 다 간다고 합니다. 아이폰과 아이팟 터치라는 2개의 기기의 차이점이 있기 때문에 QA의 중요성을 느꼈으면 UX의 중요성도 깨닫게 되었답니다.

발표하시는 유주완님아이폰 개발 히스토리Seoul Bus, Kontacts 개발 히스토리

서울버스를 공개하고 경기도에서 무단 사용에 대한 연락이 와서 겁먹고 앱을 내렸으나 아버지께서 왜 내리냐고 하셔서 다시 올렸는데 실제로 내려간 시간은 30분 정도였고 그 뒤로는 다 아시는대로 경기도권에서 버스정보가 차단되면서 여론을 타게 되었습니다. 관련해서 국회토론회도 불려갔다 왔다더군요.

그 뒤에는 Q&A시간도 진행되었는데 오브벡티브C를 공부하면서 Seoul Bus를 개발하는데 한달정도가 걸렸답니다. 그 이전에 대부분의 언어는 거의 모두 사용해 보았기 때문에 시간이 그리 오래걸리지 않았으며 UX는 따로 연구하거나 하지는 않고 아이폰에 기본적으로 들어있는 어플들을 보면서 어떤식의 UX를 가지고 있는지를 보면서 만들었지 따로 UX를 기획하거나 하지는 않았답니다.

아이폰 앱인 "Seoul Bus"로 일약 스타로 떠오른 유주완님의 세션입니다. 어도비에서 특별세션을 준비하면서 어떤 분을 초청할까 고민하면서 여러군데에 물어보니 유주완님의 얘기를 듣고 싶다는 얘기가 가장 많아서 초청했다고 합니다. 대단하시더군요 어렸을때부터 개발을 해서 개발습득 능력은 확실히 뛰어나신것 같고(나이에 상관없이 이런점이 개발의 흥미로운 점이지요. ㅎ) 나이답지 않게(얼굴얘기아니고요 ㅎㅎ) 그 많은 사람들 앞에서 떨지않고 발표를 정말 잘하시더군요. 여러가지고 자극도 많이 받고 요즘 이슈되고 있는 주제중의 하나이기도 하기 때문에 상당히 흥미롭게 들었습니다.

뒷풀이도 같이 가서 전화번호도 땄(?)내요. ㅎㅎㅎ




아이폰에서 잘 보이는 모바일 웹 페이지 만들기 - OKJSP 허광남(블로그)
모바일 브라우저에 대해서는 아픈 기억들이 있습니다. 핸드폰에 있던 Show, June같은 버튼들은 돈이 많이 나가는 버튼이라는 이미지였습니다. 과거 모바일 유저가 400만 정도 된다는 얘기가 있었는데 그중에서 200만은 실수로 눌러서 들어간 유저라는 얘기가 있습니다. 이제 패킷요금은 현실화 되었습니다. 계산해보니 08년도에 1메가에 921원정도, 1기가의 94만 3천원정도였지만 2010년에는 1기가의 3만원 정도입니다.

모바일에는 현재 국내에 4가지 플랫폼이 있다고 할 수 있습니다.

  • 아이폰/아이팟 터치
  • 안드로이드
  • 윈도우 모바일
  • 모바일웹
발표자료발표하시는 허광남님 발표자료

최근에 알게된 PhoneGap도 있지만 여기서는 iUI (iPhone User Interface Framework)를 보겠습니다. 각자의 습득정도에 따라 차이가 있겠지만 아주 간단한 주소록을 앱으로는 2일이 걸린 것은 모바일앱으로는 1시간 정도밖에 걸리지 않았습니다. iui의 css와 javascript를 임포트하고 웹페이지 개발하듯이 개발하면 됩니다.

iUI는 매우 쉽고 또 웹페이지 제작시 사파리의 비표준 태그를 이용해서 키보드타이핑시 첫글자 자동대문자가 되지 않게 한다던지 input의 type에 tel, number, email등의 값을 넣어주면 자동으로 type에 맞는 키보드가 호출되도록 할 수 있습니다. 강의자료는 여기에 있습니다.

오랜만에 뵌 kenu님은 머리가 많이 기르셨더군요. 최근 모바일웹에 관심을 좀 가지고 있는데 여건상 거의 찾아보지는 못하고 있었는데 아주 디테일한 내용은 아니고 대략적인 내용이었지만 몰랐던 부분도 꽤 있어서 좋았습니다. 더군다나 모두가 앱에만 관심가지고 있는 상황에 저는 거의 앱과 모바일웹을 같은 비중으로 바라보고 있기 때문에 이런 주제를 다루주신 것도 좋았습니다. 앱을 개발하시느라고 모바일웹에 대해서는 아직 디테일하게 만지고 계신것 같지는 않았는데 앱에 비해서 모바일웹의 장점이라든지 디테일한 노하우가 좀더 공유되었으면 하는 아쉬움이 약간 있기도 했습니다.




Spring Roo와 함께하는 쾌속 웹개발 - KSUG 정상혁(블로그)
스프링 루는 벤 알렉스(Ben Alex)가 만들었으며(어제 날짜로 1.0.2가 릴리즈 되었군요.) 자바를 위한 Text Based RAD(Rapid Application Development) 툴입니다. Roo는 호주사람들이 좋아하는 캥거루를 의미하기도 하며 Real Object Oriented의 첫글자를 딴 것이기도 합니다. Spring, Maven, JUnit등을 바탕으로 코드를 자동생성합니다. 생산성을 빠르게 해준다던지 이것을 사용하면 개발속도가 빨라진다는 건 이제 오랫동안 사기(?)를 당해서 이젠 Rapid라고 해도 시큰둥한 것도 사실입니다. 하지만 Roo는 의존성이 거의 없는 특징도 가지고 있습니다.

Spring Roo와 함께하는 쾌속 웹개발 세션발표하시는 정상혁님 Roo Shell 화면

발표를 하시면서 동시에 콘솔창을 띄워서 Ruby on Rails가 처음 나왔을 때 15분만에 블로그만들기처럼 간단한 주류판매페이지를 Roo로 개발하는 시연을 보여주셨습니다. 자바코딩을 하나도 안한테 콘솔에서 Roo의 명령어만을 이용해서 자바소스를 생성하고 디비를 연결해서 테이블까지 생성하고 UI까지 만들어내는 예제였는데 Roo를 어필하기에는 아주 적합한 예제였다고 생각합니다.

Roo를 사용할 때는 Hint와 Help만을 기억하면 됩니다. 명령어가 생각안날때는 tab을 2번 누르면 어떤 명령어가 있는지가 나오고 지금 어떤 단계를 실행해야 하는지에 대해서 아주 자세하게 나옵니다.(이거 아주 매력적이더군요.) ~는 탑레벨을 의미하고 셀레니움테스트까지 자동화에 포함되어있어서 자동으로 파이어폭스가 실행되면서 UI테스트가 진행되는 시연도 보여주셨습니다. 이렇게 만든 소스를 마지막에 perform eclipse 명령어를 실행하면 이클립스 프로젝트로 개발하기 위한 관련 파일들을 자동으로 생성해 주었습니다.

똑똑한 Shell을 제공하고 있기 때문에 개발하기가 편하며 모든 명령수행은 Transactional하기 때문에 전체가 실행되거나 말거나 뿐입니다. 자동생성된 파일에서 개발자는 .java와 .xml파일만을 다루도록 하고 Roo는 AspectJ파일인 .aj만 다루기 때문에 개발자는 java, xml만 신경쓰면 됩니다. 쉘이 파일을 모니터링하고 있어서 소스를 수정하면 자동으로 aj에 반영해주고 한계가 약간 있을수 있는 UI자동생성은 옵션으로 제공되고 있습니다.

Shell에 대한 설명hibernate의 구인인 ibatis를 압도하는 그래프 또 한 번 봄의 시작이 되길...

Entity소스상에 getter/setter가 전혀 없으며 이는 Mixin으로 Roo가 자동삽입해 줍니다. 이렇게 뻔한 것은 개발자가 안해도 된다는 것이고 Assert로직도 Mixin으로 넣어줍니다. Shell에서 backup을 입력하면 자동으로 시간기록된 파일로 백업을 해주고 Roo Shell에서 입력한 명령어가 자동으로 Log파일에 남게되고 이 파일을 이용해서 다시 프로젝트를 생성시킬 수 있습니다.

Spring Roo는 Full Stack으로 모든 레이어의 기술을 다 제공하며 Seam이나 Ruby on Rails처럼 강한 주장을 가지고 있는 프레임웍이며 베스트 프렉티스를 컨벤션으로 삼아서 CoC를 지향합니다. DAO를 버리고 Entity와 Controller의 단순한 2단구조이며 엑티브 레코드 패턴도 적용하였습니다. ORM에 대해서 성능에 대한 걱정들이 있지만 현재 생성성이라는 말이 들어가는 많은 곳에서 ORM이 적용되고 있으며 여러가지 기술로 성능에 대한 걱정은 하지 않아도 됩니다.

최근에 많은 인기를 얻고 있는 Dynamic typing언어 진영의 발전에 대하 Java진영의 대답으로 볼 수 있습니다.

발표자료는 여기에 있습니다.

이번 세미나에서 본 내용중 가장 인상적이 세션이었습니다. Spring Roo에 대해서 들은 적은 있었지만 정상혁님 말씀대로 RAD에 대해서 크게 매력을 느껴지지 않을만큼 무뎌지기도 했고 그래서 큰 관심까지는 안가지고 있었는데(난 기초를 더 다져야돼 하는 생각도 있었고요.) 작년 후반기 쯤에 0.9얘기를 들었던 것 같은데 그사이에 Spring Roo가 이렇게 그럴듯한 도구로 발전했는지 전혀 몰랐습니다.

제가 가장 매력적으로 느낀 것은 대부분의 RAD들은(경혐은 별로 없지만 그냥 인상으로만...) 속도의 향상을 위해서 많은 것을 따라야 하는 부분이 있기에 당연히 감수해야하는 제한적 부분도 있는데 Roo는 자동화할 부분을 자동화하는 것과 함께 개발자가 개발할 수 있는 것들은 개발자가 할 수 있게 내어준 것 같은 느낌입니다. 세세한 것은 만져봐야 알겠지만 Roo의 자동화를 잘 활용하면 Java개발을 상당히 편리하게 할 수 있을것 같은 생각이 들었습니다. arawn도 요즘 Roo에 빠져서 조만간 Roo공부를 좀 해야겠군요.(전 Spring도 잘 모르는데요 ㅠ..ㅠ)




신청은 했지만 많은 기대감을 가지고 갔던 세미나는 아니었지만 아주 많은 것을 얻어올 수 있었던 세미나였습니다. 너무 테크니컬하지도 않으면서 너무 추상적이지도 않은 아주 적절한 세션들로 구성되어 있었던것 같습니다. 이날은 뒷풀이도 5시간가까이 진행되면서 많은 생각도 하게 된 날이었습니다.

뒷풀이에 정말 많은 얘기들이 오갔지만 가장 맘에 남는 말은 "개발자가 너무 개발자끼리만 어울리는 것은 좋지 않은것 같다. 개발외에 많은 것을 봐야한다."는 것이었습니다. 개인적으로 노력도 하고 있고 적극 동감은 하고 있지만 개발쪽은 공부해야할께 너무나도 많다는 말이지요 ㅠ..ㅠ

2010/02/23 02:04 2010/02/23 02:04