1) 프로젝트 소개
안드로이드 개발자 챌린지 1.에서 한국인으로는 유일하게 50위권 안에 든 회색(박성서 멘토님)이 기본적인 목표와 계획을 올려주셨다. 그리고 직접 갖고 있던 아이템 중에 하나를 공유해 주셨고, 이 아이템을 중심으로 오픈소스 프로젝트를 시작했다. 아래는 회색님이 처음 블로그에 올려 놓았던 프로젝트 시작 선언문이다. 프로젝트의 시작은 모두 회색님으로부터 시작했다.
“안드로이드 개발자 챌린지 II 가 아직 곧 시작될 예정입니다. 이미 몇몇 개인이나 회사들이 안드로이드 개발자 챌린지 II를 준비하고 계시는 것으로 알고 있습니다. ADC II에는 회색도 다시 참가하지만 어떤 식으로든지 국내 개발자들에게 도움을 줄 수 있는 활동을 할 것이라고 말씀드린 적이 있습니다. ADC는 팀으로 참여하는 것이 좋다는 것과 개발자들끼리 ADC 어플리케이션 개발을 위한 정보를 공유할 수 있는 방법을 마련했으면 좋겠다라는 말씀도 드렸습니다. 그동안 여러가지 방안을 두고 고민한 끝에 어제 오늘 대강 결론을 내었고 이제 공개하도록 하겠습니다.”(2008.12.22)
멘토님의 기획은 멋져 보였지만, 실제 참가 멘티들의 개발 실력이란 문제와 더불어서, 모든 개발자들은 서울, 안동, 미국 오하이오 이렇게 세 지역으로 나눠져 있었고, 한명은 웹 기획자였고, 자바 이클립스도 실행시킬 줄 모르는 숙맹이었다.
역할을 나눠야 했고, 세부Team 구성, 역할 구분, Team 가치 설정을 했고, 실제 개발이 들어가기 전과 개발이 들어간 이후까지 스터디를 통해 학습과 개발을 동시에 하고 있다. 커뮤니티는 하나의 게시판으로 줄였고(모바일 플레이스의 컨텐트 브라우저), 메신저는 엠에센으로 코드는 구글 코드 트렁크로 결정해서 소통 채널을 축소시켰다. 그리고 업무 분담과 To do list 관리를 통해 업무를 관리했다.
3차 오프 모임까지는 거리상으로 제약이 심했기 때문에 팀은 3차 오프 모임 이후에 매주 수요일 11시에 맞춰서 엠에센 메신저 온라인 미팅을 시작했다. task 회전의 기간을 짧게 만듦으로 인해서, 더 효율적인 업무 관리를 하기 위해서였다. 예상대로, 방학이라는 느슨한 시기에 더욱더 여유에 빠지는 팀원들을 끌어 올릴 수 있었고, 3일~4일 정도에 돌아오는 미팅과 TO DO 점검으로 개발은 활발하게 진행되기 시작했다.
[ Team : 팀 구성 ]
팀 구성은 12월 말부터 1월 중순까지 계속 되었다. 그리고 개발 능력이 전혀 없는 웹 기획자도 합류하였다.
Mentor
Android Developer
Mentee
Planning Manager
- 한운장 /woonjjang@gmail.com
Developer group
Database
- 조규철 / lifeisfullofhappiness@gmail.com
Tag check list, Tag view(Team 1)
- 임광현/ sheilit@naver.com
- 배종환/ parmacon83@naver.com
Map view(Team 2)
- 김유진/ zion3mx@gmail.com
- 심성진/ bluebost@naver.com
[ Team Value : 팀 가치 ]
아파치 2.0의 라이센스를 따르며, 오픈 소스 프로젝트로써 모든 코드의 상업적, 비상업적 사용을 허락함
Off line 모임을 중요시한다.(Face 2 Face Policy)
Open Source Project
"ADC II에서 구현하려했던 아이디어가 3~4가지 정도가 있는데 그 중 하나가 개발자 챌린지에 통할 수 있는 유용한 아이템이면서 오픈소스 프로젝트에 적합합니다. 개인적으로 아끼는 아이템이라서 사실 개발은 저 혼자하고 챌린지에 응모한 후에 입상을 하게 되면 오픈 소스 프로젝트화 하려고 생각했던 아이템입니다. 우연히 윈터오브코드 2008(http://woc.openmaru.com)를 발견해서 시작부터 오픈소스 프로젝트로 하는 것이 좋겠다로 생각을 바꾸었습니다. 라이센스는 아파치2.0라이센스를 기본으로 하되 몇 가지 제한을 두려고 합니다. "
Copyright 2009 ACB Team
ADC를 위해 코드를 카피하는 것을 제외하고 어플리케이션에 관한 코드는 모두 오픈소스 프로젝트로 진행됩니다.
아래는 아파치 라이센스로 유지되는 오픈소스에 대한 설명과 유일한 ADC제한 설정입니다.
Licensed under the Apache License. Version 2.0 (the "License"): you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS. See the License for the specific language governing permissions and limitations under the License.
However, in order to use the code from the Android Content Browser for the Google Android Developer Challenge or any other competitions, permission must be obtained from the manager of the Android Content Browser Project.
[ Study : 사전학습 ]
http://www.mobileplace.co.kr/android_dev_info
WOC 가 시작되기 이전에 안드로이드 스터디를 시작함. (1월 중순)
Java와 다르지는 않지만 새로운 언어를 배우는 것과 비슷한 방식으로 스스로 학습.
이해가 잘 가지 않는 부분은 멘토링을 통해 catch up.
기본적으로 WOC 일정이 시작되기 이전에 안드로이드로 프로그래밍을 할 수 있도록 새로운 언어에 대해서 개별 공부를 시작했다.
[ Community + Communication Channel : 온라인 커뮤니티, 소통 채널 ]
커뮤니티 : http://www.mobileplace.co.kr/progacb
Boot camp 첫 회의에서 팀원들이 지역적으로 많이 떨어져 있음(서울, 안동, 미국 오하이오)
온라인 커뮤니티가 여러 곳으로 분산되는 것을 막고, 하나로 집중하기 위해서 “모바일 플레이스”의 스터디 공간과 커뮤니케이션 공간을 분리함.
Code Trunk : http://code.google.com/p/contentbrowser/
Communication Channel : http://www.mobileplace.co.kr/progacb
[수행 제안서]
프로젝트 명 |
- 안드로이드 컨텐트 브라우저 |
프로젝트 요약 |
- 안드로이드의 다양한 컨텐트들을 한곳에서 관리할 수 있는 브라우저 - 모든 컨텐트 관련 어플리케이션들과의 연동으로 동작하는 중심 어플 |
프로젝트 구현 상세 (이런걸 만들어 볼까요?) |
- 컨텐트 리스트 - 다양한 컨텐트를 관리 - 노트패드, Wiki등 외부 어플리케이션 데이터 지원 - 전화번호부, 음악, 그림 등 기본 데이터 지원 - 컨텐트 맵 - 위치 정보를 가지고 있는 컨텐트를 맵에서 표시 - 파일 브라우저 - SDCARD 탐색기 |
프로젝트 수행 조건 (멘티가 알고 있어야 할 것들) |
- Java 프로그래밍 언어를 능숙히 다룰 줄 알아야 합니다. - 안드로이드 개발 경험이 있으면 좋습니다. - 기본적인 영어 능력. 어플이 지원할 언어는 영어입니다. - 뛰어난 영어 실력이 있으면 좋습니다. - 커뮤니티와 같이 협업을 할 수 있어야 합니다. - 사용자 경험 향상을 위해 UI 100번도 뜯어 고칠수 있는 열정 - 개발 관련 한글 책 없지만 소스를 파서라도 배우려 하는 자세 |
획득 예상 개발 능력 (멘티가 배우게 될 것들) |
- 안드로이드 개발 능력을 획득한다. - 안드로이드만의 어플리케이션 연동 시스템을 배울 수 있다. - 안드로이드에서 구글맵을 다루는 방법을 배울 수 있다. |
선행 학습 레퍼런스
|
- http://code.google.com/android - Intent, Activity, MapView, BroadcastReceiver - 노트패드 샘플 프로그램 분석 - http://code.google.com/android/intro/tutorial.html - 안드로이드 시작 |
라이선스 |
- 아파치2.0 |
시스템 환경에 적합한 언어 |
- Java 5 |
2) 프로젝트 스펙
[ Application Value : 어플 가치 ]
안드로이드 휴대폰에서 사진을 찍었을 때(camera), 다운로드 받았을 때(paste), 컴퓨터에서 옮겨 넣기를 했을 때(sync) 생겨나는 사진 데이터들을 content Browser에서 쉽게 찾도록 한다.
자신이 관리하는 Tag, Geotag(GPS), Timeline을 이용해 커스텀화 된 탐색기능을 제공한다.
개별 App에서 CB 탐색메뉴를 추가할 수 있다.(개별 App에서 제공하는 content만 제공된다.)
앞으로 다양한 휴대기기에 제공될 Android 기반의 제품들의 기본 탐색 역할을 돕는다.
[ Goal ]
Content view(Tag view, History view, Map view)
- 기획서 상에는 모든 컨텐츠를 포함한 Content Browser로 기획되어 있음.
- Content Browser는 크게 4가지 부분으로 나누어져 있다.
- 일반 Desktop에서 만들어지는 수십만 건의 data를 탐색기에서 관리하듯이, 안드로이드에서도 생겨나는 수많은 data를 검색하는 Application이 필요함.
(세부적으로 아래에 자세하게 설명)
Content Browser가 타겟으로 하는 Contents는 다음과 같이 정리된다.
[ Content list : 타겟 컨텐트 리스트 ]
<meta name="GENERATOR" content="HTML DOCUMENT BY HWP 6, 5, 0, 825"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><style> </style>
Handset에서 직접 생성되는 Content(data), Cloud 영역에서 생성되는 Content(data) 두 가지로 구분함.
- 현재 우리는 휴대폰 컨텐cm에 대해서 매우 제한적으로 쓰고 있다. 현재의 Desktop에서 기본적인 파일들에 대한 검색이 쉽지 않듯이, 자체적으로 생성되는 컨텐츠(Contents list up1) 과 클라우드와 연결되는 컨텐츠(Contents list up2)의 양은 수 만건을 훌쩍 넘기게 된다.
- Content Browser는 이 모든 컨텐츠를 쉽게 탐색하기 위해서 Tag라는 Customized pattern을 사용하고, 개인이 관리하는 tag에 따라서 모든 컨텐트를 스스로 정리한다.
- 개별적인 어플은 기본적으로 개별 어플의 data에 대해서 관리를 한다면 Content Browser는 모든 어플에 대한 탐색을 쉽게 하도록 돕는다.
[ Order of Priority : 우선순위 ]
이중에 우선순위를 Photo -> Memo -> Office file로 정했고, Woc 일정 내에서는 Photo data를 중심으로 개발을 진행하기로 함. 추후 일정의 모자람으로 처음 Goal로 설정했던 History view 부분의 개발은 진행되지 못하고, Woc 이후 일정으로 포함되었다.
3) 프로젝트 주차별 진행 상황
[Schedule]
3주 오프 모임 이후 To do list작성 및 수요일 온라인 미팅 시작
4주~7주 동안은 수요일 온라인 미팅 + 토요일 오프 미팅
부트 캠프 + 스노캠프 + 중간 설문 + 최종결과 보고서(WoC 모두 참가)
[Task Schedule]
Team |
To do |
Deadline |
Done orNot |
Context |
운짱 |
I phone + G phone 분석 |
2.2 |
Done |
|
Content list up |
2.7 |
Done |
2.7 presentation | |
페이지 기획서 초안 |
2.14 |
Done |
2.14 presentation | |
1차 기획서 정리 |
2.18 |
Done |
| |
규철 |
warm up |
2.18 |
Done |
|
Team1 |
zoom bar search (종환) |
2.18 |
Done |
Seek bar |
Tag check lisk(광현) |
2.18 |
Done |
| |
Tag view activity 구성(광현) |
2.18 |
Done |
| |
Team2 |
map view activity 구성 |
2.18 |
Done |
|
2. 14 off meeting | ||||
운짱 |
Total 기획서 정리(Description) |
2.21 |
Not |
2.23 완료 |
규철 |
기본 자료 + 함수 구성 |
2.21 |
Done |
|
Team1 |
세부적인 코딩 마무리 |
2.21 |
Done |
|
종환, 광현 코딩 통합 |
2.21 |
Done |
| |
소소코드 규철에게 전달 |
2.21 |
Done |
| |
Team2 |
Code review |
2.21 |
Done |
|
이베트 차의 UI 레이아웃 구성 |
2.21 |
Done |
| |
회색 |
코드보안 문구 추가 확정 |
2.21 |
Done |
|
2. 18일 online meeting | ||||
운짱 |
기획서 일부 수정 |
2.25 |
Done |
모플 업로드 완료 |
문서공유(To do, value, Goal) |
2.25 |
Not |
구글 문서도구 사용 | |
규철 |
DB Design(with 유진) |
2.25 |
Done |
Uri tag 사용 |
DB basic Construction |
2.25 |
Done |
| |
수요일까지 DB 돌아가도록 (최소한 태그추가, 전체 태그리스트 받기 완료) |
2.25 |
Done |
DB 돌아감, 태그추가, 전체 태그리스트 받기, Uri추가, 전체Uri리스트 받기 완료 | |
Team1 |
zoom bar 완성 |
2.25 |
Not |
zoom bar에 따른 사진 크기 조정 어려움 |
Image size 조정 |
2.25 |
Done |
| |
UI, Total Tag list 확인 |
2.25 |
Done |
| |
Main Trunk에 작업한 소스 올리기 |
2.25 |
Done |
| |
Team2 |
Menu click시의 UI 처리 고민 |
2.25 |
Done |
|
회색 |
Tag view, Map view 결합, |
2.25 |
Done |
|
2.21일 Snow Camp + 온라인 회의 | ||||
운짱 |
value, Goal 설정 |
2.28 |
Done |
|
규합한 trunk확인하고, UI 확인 |
2.28 |
Not |
| |
규철 |
검색, 업데이트, 삭제 |
2.28 |
Done |
uri에서 태그를 삭제하는 것과 태그 자체를 삭제하는 두가지 |
Team1 |
|
2.28 |
Done |
|
Team2 |
맵뷰에서 메뉴클릭시 태그 UI 처리 |
2.28 |
Done |
|
2.25일 online meeting | ||||
운짱 |
Plan 정리 ,관리 |
3.4 |
Done |
|
규철 |
No task |
|
|
중간고사 |
Team1 |
태그뷰 하단에 add box - 리스트 마지막 |
3.4 |
Done |
|
|
상단에 이미지 썸네일과 파일명,날짜, 태그 |
3.4 |
Done |
|
Team2 |
|
|
|
1명 독일 견학 |
2.28일 offline meeting | ||||
운짱 |
woc 일정 맞춰서 Deadline정하기 |
3.7 |
Done |
tag view, tag check list, geo view |
규철 |
API constraint 추가 |
3.7 |
Not |
|
Team1 |
태그뷰 하나로 겹침 |
3.7 |
Done |
->tag list 기획수정 |
Team2 |
mapview -> picture 연동 |
3.7 |
Done |
1명 독일 견학 |
3.4일 online meeting | ||||
운짱 |
예산정리, 보고서 준비 |
3.11 |
Done |
|
규철 |
API constraint 완료 |
3.11 |
Not |
|
API Test Plan/ Debugging/ 코드 정리 / 문서화 |
3.11 |
Not |
| |
Team1 |
태그뷰 수정, 줌바 UI 수정 |
3.11 |
Ing |
7개 ->2개, 썸네일 |
Team2 |
배율결정, 아이콘클릭시 주소단위, default일때 줌 바 가운데 |
3.11 |
3/14 |
|
사진크기는 동 이름이 보이는 맵뷰 지도 사이즈에서 현재의 크기로 |
3.11 |
3/14 |
| |
아이콘 상하 드래그 |
3.11 |
3/14 |
| |
위성지도와 맵 변경 가능 |
3.11 |
Done |
| |
3.7일 offline meeting | ||||
3.11일 online meeting(pass) -> 학교 일정, 회사일정, 스케줄 엉킴 | ||||
운짱 |
보고서 초안 |
3.15 |
3.15 |
|
규철 |
태그 삭제, 수정 완료 |
3.15 |
3.17 |
|
Team1 |
태그 리스트 수정 완료 |
3.15 |
3.17 |
종환 |
태그명 + 사진 부분 UI 결합 |
3.15 |
done |
with 회색 | |
사진 부분 스크롤 수정 |
3.15 |
3.16 |
with 회색 | |
Team2 |
Map view 완성 |
3.15 |
3.16 |
|
Map view Icon 완성 |
3.15 |
3.17 |
UI Design 수정 | |
3. 14~3.15 밤샘 offline meeting | ||||
|
History view setting |
3.17 |
3.17 |
광현 |
|
map view issue 발생 |
3.17 |
3.17 |
에뮬레이터 문제 |
운짱 |
최종 보고서 완성 |
3.17 |
3.17 |
|
|
view code 통합 |
3.17 |
3.17 |
done |
|
최종 보고서 첨부 파일 완성 |
3.17 |
3.17 |
|
|
사진 자료 정리 |
3.17 |
3.17 |
|
|
블로그 글 하나씩 쓰기 + 링크 |
3. 16 |
3.17 |
|
|
Code Trunk 정리 |
3.16 |
3.18 |
3.17일 점검(광현) |
안동 |
코드통합 : 느려짐 |
3.17 |
3.18 |
|
|
map view long click 없음 |
3.17 |
3.18 |
기획자 문제 |
|
tap 이동 문제(중요) |
3.17 |
3.18 |
|
|
home 관련 이미지 없을 때 필요한 로직 추가( 제출 이후) |
post |
post |
|
3.17 online meeting |
4) 프로젝트 이후 versioning(re-use)계획
위에서도 설명되었지만 이 프로젝트의 최종목적은 안드로이드의 통합 데이터 관리 시스템을 구축하는 것이다. 현재 구글 안드로이드에는 윈도우의 탐색기나 맥의 Finder와 같이 데이터를 통합적으로 관리하는 장치가 없는 상태이다. 따라서 우리팀은 우선 WOC 개발기간중 안드로이드라는 신기술을 공부함과 동시에 Image 데이터만을 점(태그), 선(히스토리), 면(맵)이란 주제로 구현하는 것까지를 시스템 바운더리로 잡았다.
결국 WOC행사 기간 중 Image 데이터관리 시스템을 완성하였고 이제 남은것은 비디오, 문서, 오디오, 기타 데이터들을 현재의 구조위에 추가하는 일이 남았다. 덧붙여 현재의 코드를 리팩토링하고 최적화 하는 작업이 남았는데 이같은 사항을 아래에 순서대로 정리해 보았다.
1. 다양한 데이터타입 지원
현재 이미지를 태그별,시간별,위치별 관리가 가능하게 해놓은 상태이다. 원래 이미지관리는 썸네일형식으로 관리하는 것이 보통이기 때문에 다른 타입의 데이터보다 메모리관리 측면에서 개발이 힘든게 사실이다. 하지만 이미지데이터 관리 구조를 어느정도 완성했기 때문에 오디오, 문서, 비디오(이것도 썸네일이필요), 기타 데이터들은 그에 필요한 정보(이름같은것)만 출력해서 모아 놓는다면 이미지를 관리하는 경우보다 훨씬 간단한 작업이 될거라고 예상한다.
만약 개발이 완성된다면
+ 우리는 안드로이드의 모든 데이터를 우리가 원하는 태그로 관리할 수 있고
+ 데이터를 등록한 시간별로 나열하여 단순히 기억을 되짚는 수준을 넘어 비즈니스의 스케쥴관리를 유용하게 계획할 수 있게되며
+ 데이터의 위치정보 관리로 나만의 지도(범용 지도가 아닌 사용자의 목적에 맞는 특수한 컨텐츠 지도 - ex. 맛집지도, 숨은길지도, 음악지도)를 만들어 휴대 할 수 있는..
그야말로 세계 시장에서 이슈가 되고 있는 안드로이드폰. 그 중심에 당당히 WOC에 의해 엮어진 우리팀의 이름을 올릴 수 있을 것 이라고 생각한다.
2. 최적화
이 미지데이터 관리 구조를 어느정도 완성하긴 했지만 아무래도 핸드폰을 기반으로 작동하기 때문에 성능면을 고려하지 않을 수 없다. 프로젝트의 기본목표가 쉽고 간편하게 데이터를 관리하는 것인데 속도가 느려진다면 간편하지 않고 또 쉽다고 느낄 수가 없을것이다. 일정에 맞추기 위해 지나쳤던 구조적 문제를 아래의 목표에 도전하기 전까지 리팩토링하고 그 과정에서 발견되는 오버헤드와 문제점를 최대한 관리하여 사용자가 프로그램 접근에 아무런 부담감을 가지지 않게 해야 하겠다.
3. ADC(구글 안드로이 개발자 챌린지) 참가
우 리 프로젝트의 멘토는 과거 안드로이드 개발자 챌린지에 입상한 경력이 있다. 이 프로젝트 또한 멘토의 의견을 바탕으로 한것이고 또 한번 세계에 한국의 이름을 알릴 아이템임에 틀림없다. 올해 ADC의 정확한 계획은 알려진바 없지만 안드로이드가 번져나가는 속도와 각종 매체의 관심도로 볼 때 조만간 정확한 ADC의 일정이 나올것으로 보인다. 그때까지 우리는 위에 나열한 버전관리 계획을 확실히 지킬 수 있게 준비해 나가는 것이 중요한 일이라 할 수 있다.
4. 안드로이드 마켓 등록
애 플의 마켓처럼 안드로이드 또한 마켓이 존재한다. 프로젝트의 나머지 기능을 완성하고 테스트와 UI, UX 개선 프로세스가 끝나고 나면 우리의 이름으로 안드로이드 마켓에 등록할 예정이다. 말했듯이 안드로이드에는 통합적으로 데이터를 관리하는 기능이 없기 때문에 이 프로그램은 분명 세계의 안드로이드 사용자들이 드나드는 마켓에서도 폭발적인 인기를 얻을 수 있을 것이라고 생각한다.
[ver1.0] - Woc 참가
photo data 에 대한 개발 끝남. Goal 달성
Content view(Tag view, History view, Map view)
[ver2.0] - ADC or Android Market
다른 data 에 대해 적용.(memo -> office file -> another data)
완성, 정책 결정 이후 Android Market Publish
[ver3.0]
Application update를 통해서 다른 content에 대한 Browser 제공, 확장
[별도첨부 - 페이지 기획서]
CB 첫 번째 기획서 by Grey
CB 두 번째 기획서 by Grey + woonjjang
CB 세 번째 기획서 by woonjjang
CB 스크립트 첨가 by woonjjang(value, goal, context)
2. Project Code
프로젝트 코드는 압축화일과 URL 두 가지를 공유합니다.
1. 압축화일
2. 버전관리 툴 : http://code.google.com/p/contentbrowser/
3. Check out(SVN) : https://contentbrowser.googlecode.com/svn
3. Project Manual of CB(Content Browser)
프로젝트 메뉴얼은 온라인 과정에 모두 기록해 놨습니다.
1) Android Study - http://www.mobileplace.co.kr/android_dev_info
2) Android CB Development Manual - http://www.mobileplace.co.kr/progacb
3) Android CB Development Code Trunk - http://code.google.com/p/contentbrowser/
4) Android CB Development Check OUt - https://contentbrowser.googlecode.com/svn
4. 프로젝트 관련 글 링크 모음.
운짱 - 웹 기획자? 오픈소스 프로젝트? 팀 커뮤니 케이션?
회색
http://graynote.tistory.com/153
http://jonghwani.egloos.com/
http://openparadigm.tistory.com/
http://nemoweb.tistory.com/category/WOC_%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%20%EC%BB%A8%ED%85%90%ED%8A%B8%20%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%B8
http://blog.naver.com/bluebost
5. 스크린 캡쳐 및 동영상.