1. 프로젝트 이력 정리


        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)

계획성 있는 Task doing을 한다.


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/ 

Main Messenger : MSN

Communication Channel : http://www.mobileplace.co.kr/progacb


[수행 제안서]

프로젝트 명

- 안드로이드 컨텐트 브라우저

프로젝트 요약

- 안드로이드의 다양한 컨텐트들을 한곳에서 관리할 수 있는 브라우저

- 모든 컨텐트 관련 어플리케이션들과의 연동으로 동작하는 중심 어플

- 안드로이드 개발자 경진대회 II에 도전

- 안드로이드 마켓 업로드

프로젝트 구현 상세

(이런걸 만들어 볼까요?)

 - 컨텐트 리스트

    - 다양한 컨텐트를 관리

    - 노트패드, Wiki등 외부 어플리케이션 데이터 지원

    -  전화번호부, 음악, 그림 등 기본 데이터 지원

- 컨텐트 맵

    - 위치 정보를 가지고 있는 컨텐트를 맵에서 표시

- 파일 브라우저

    - SDCARD 탐색기

프로젝트 수행 조건

(멘티가 알고 있어야 할 것들)

- Java 프로그래밍 언어를 능숙히 다룰 줄 알아야 합니다.

  - 안드로이드 개발 경험이 있으면 좋습니다.

- 기본적인 영어 능력. 어플이 지원할 언어는 영어입니다.

  - 뛰어난 영어 실력이 있으면 좋습니다.

- 커뮤니티와 같이 협업을 할 수 있어야 합니다.

- 사용자 경험 향상을 위해 UI 100번도 뜯어 고칠수 있는 열정

- 개발 관련 한글 책 없지만 소스를 파서라도 배우려 하는 자세 

획득 예상 개발 능력

(멘티가 배우게 될 것들)

- 안드로이드 개발 능력을 획득한다.

- 안드로이드만의 어플리케이션 연동 시스템을 배울 수 있다.

- 안드로이드에서 구글맵을 다루는 방법을 배울 수 있다.

선행 학습 레퍼런스

 

- http://code.google.com/android

   - Intent, Activity, MapView, BroadcastReceiver

- 노트패드 샘플 프로그램 분석

    - http://code.google.com/android/intro/tutorial.html

- 안드로이드 시작

    - http://www.mobileplace.co.kr/588  

라이선스

- 아파치2.0  

시스템 환경에 적합한 언어

- Java 5

2) 프로젝트 스펙


[ Application Value : 어플 가치 ]


안드로이드 휴대폰에서 사진을 찍었을 때(camera), 다운로드 받았을 때(paste), 컴퓨터에서 옮겨 넣기를 했을 때(sync) 생겨나는 사진 데이터들을 content Browser에서 쉽게 찾도록 한다.

자신이 관리하는 Tag, Geotag(GPS), Timeline을 이용해 커스텀화 된 탐색기능을 제공한다.

개별 App에서 CB 탐색메뉴를 추가할 수 있다.(개별 App에서 제공하는 content만 제공된다.)

앞으로 다양한 휴대기기에 제공될 Android 기반의 제품들의 기본 탐색 역할을 돕는다.


[ Goal ]



Content : Photo

Content tag database

Tag check list

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 : Photo

Content tag database

Tag check list

Content view(Tag view, History view, Map view)


[ver2.0] - ADC or Android Market

다른 data 에 대해 적용.(memo -> office file -> another data)

Viewing UI 수정, Re - Design

완성, 정책 결정 이후 Android Market Publish


[ver3.0]


Application update를 통해서 다른 content에 대한 Browser 제공, 확장



        5) 개발 관련문서


[별도첨부 - 페이지 기획서]


CB 첫 번째 기획서 by Grey

CB 두 번째 기획서 by Grey + woonjjang

CB 세 번째 기획서 by woonjjang

CB 스크립트 첨가  by woonjjang(value, goal, context)


컨텐츠 리스트.JPG스케쥴.JPG

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://analog.textcube.com/50

회색

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. 스크린 캡쳐 및 동영상.

cb1.jpgcb2.jpgcb3.jpgcb4.jpg