오늘은 내가 전에 개발했던 특이한 경우의 앱 개발 방법에 대해 글을 써보고자 한다.


비슷한 기능및 화면구성 을 하는 어플리케이션을 여러개를 서로 다른 플랫폼에서 개발해야 할경우

빠른시간내에 유지보수가 편하도록 단순 작업만으로 쉽게 개발이 가능하도록 설계하는 구조 이다.


 - 참고 : 데이터 드리븐 방식이란 코드에서 변동이 가능한 데이터(숫자/문자 등)들을 개발자가 하드코딩 하지 않고 외부 파일이나 웹에서 불러 들여와조하여 코딩하는 방식을 말한다. 기획자와 분업을해야 할때 특히 기획자가 숫자값을 요리조리 바꿔가며 여러번 테스트 해야 할때 유용하다. ( 값을 바꿀때 마다 개발자에게 다시 빌드해달라고 하면... )

디자인패턴으로 말하자면 interpreter 패턴이라고 할 수 있다



내가 프로젝트를 수행했을 때의 조건은 이렇다

 - 병원 어플리케이션으로  Android와 IOS 두가지 플랫폼에서 개발되어야 한다.

 - 짧은 시간안에 매우 많이 만들어야 한다. (1달에 50개 정도)

 - 기능은 대부분 비슷비슷 하지만 병원에서 필요로 하는 메뉴 구성과 UI는 모두 다르다.


먼저 하나의 어플리케이션을 만든뒤 소스를 복사하여 수정하는 방식으로 비슷한 다른 병원의 어플리케이션을 만들어 보았다. 각 소스를 뒤져 일일이 버튼을 추가 삭제 하며 연결고리를 다시 만들어 주고 화면이 추가 될 경우 일일이 Activity나 ViewController를 다시 만들어줘야 했다.

한 플랫폼의 어플에 대해 약 하루의 시간이 걸렸다.

그럼 한달에 두개의 플랫폼에 대한 병원이 50여개니까 100여개나 되는 어플리케이션을 만들어야 하는데... 언제 다 만들지?


종류가 이렇게나 많은데...?




화면의 레이아웃뿐만이 아니라 기능 역할을 하는 메뉴구성역시 마찬가지로 서로 달랐다.


이것은 청담수라는 치과의 메뉴구성이다


이것은 예본이라는 안과의 메뉴구성이다.


이때 데이터 드리븐 방식이 빛을 발한다.

먼저 여러 병원 어플리케이션을 보여줄 소스는 플랫폼 별로 단 하나 이고 XML을 통하여(다른방식을써도 상관은 없다) 병원마다 변경되는 부분만 바꿀 수 있게 하는거다. 예를 들면 뷰 정보나, 버튼의 위치, 화면 배치, 버튼의 기능, 링크, 지도를 표시해준다면 지도의 좌표, 통화기능이 들어간다면 전화번호, 동영상링크 URL, 웹페이지 링크URL 등등이다.

그리고 어플리케이션이 시작될때 XML을 파싱하여 각종 과 리소스로 화면을 구성하며 버튼이 어떤 역할을 하게 되는지가 동적으로 정의 시켜면 된다.

이렇게 개발하면 하나의 컨텐츠를 만드는데 리소스와 XML만 작성하면 된다! 얼마나 간단한가!


아래는 병원 XML의 샘플이다.

이때 중요한점은 Android와 IOS는 같은 리소스와 XML을 사용한다는것이다. 즉 플랫폼 별로 따로 만들 필요가 없다. 이러한 점은 확장성에 있어서 중요한데 예를들어 300개의 병원을 이런식으로 만들었다고 하자. 이때 삼성에서 나온 타이젠 OS뜨고 있어서 대부분의 병원에서 타이젠OS에서도 이러한 병원기능을 추가 하길 원할때 타이젠용으로 XML파싱 화면구성부분만 구현하면 기존에 만들어진 300여개의 병원 모두를 타이젠 폰에서 쉽게 제작이 가능해진다.

 참고로 리소스의 경우 960 * 640 의 아이폰4 해상도에 맞춰 제작되었고 Android의 경우 X좌표와 넓이에 (단말기 가로픽셀/640), Y좌표와 높이에 (단말기 세로픽셀/960)을 곱해 계산해 해상도에 맞추어 이미지를 리사이징 한 후 배치된다

그리고 모든병원에 대한 소스가 단 하나이기때문에 비용이 제일 많이 들어가는 추후 업데이트 및 유지 보수 측면에서도 상당히 효율 적인 관리가 가능하다.



이렇게 변경되는 부분(XML)과 리소스(이미지)는 서버에 올려둔뒤 시작시에 다운받아 압출풀어 저장한다. 플로우는 다음과 같다.



또, 이러한 방법으로 만들어진 확장 마더앱을 살펴보자. 이제 만들어진 앱이 여러개가 되었을때 모든 병원을 실행시킬 수 있는 통합 어플리케이션을 만들었다. 마켓에는 하나의 어플(마더앱)을 다운받았지만 그동안 제작되어진 모든 병원의 구동이 가능하며 신규 제작되어진 병원또한 업데이트 없이(개발자의 입장에선 마켓검수 없이) 구동이 가능하다.


마치 북스토어에서 필요한 컨텐츠만 다운받아 볼 수 있는 방식과 비슷하다.



이러한 화면 동적 구성의 장점에 대해 알아보자

컨텐츠 하나의 —개발 / 테스트 시간 단축 ( 2-> 3시간)

소스관리가 쉬워짐(수정 및 업데이트가 용이)

—컨텐츠 개발 시 프로그래밍 전문지식이 없어도 가능

—컨텐츠 업데이트 및 변경 시 마켓 검수가 필요 없음 (빠른 시간 내에 업로드 가능)

플랫폼 (OS)추가 시 그 동안 제작된컨텐츠 재사용 가능


by 착한 사마리아인 착한사마리아인 2013. 3. 20. 21:30
| 1 2 3 4 5 6 7 8 9 10 11 |