Votee 앱은 관심있는 뉴스를 확인하고 관련된 뉴스가 관련 링크를 통해 탐험하면서 전체적인 사건의 원인과 결과, 진행되는 이야기를 손쉽게 찾아볼 수 있는 앱으로 설계되었다. 인과 관계의 알고리즘을 통해 참여형 UX통한 '이슈'를 빠르고 재미있게 탐색할 수 있다. 이 앱의 독창적인 아이디어가 인정되어 2016년 NEXT Startup Awards Contest의 early stage에서 1등상을 수상한 바 있다.
UX를 향상시키기 위해 연관 관계도를 사용자가 손쉽게 탐색할 수 있도록 하기 위해 다이어그램 기술이 필요하였고 다이어그램 오픈소스의 자바스크립트가 고려되었다.
D3는 광범위한 Visualization 프레임워크로 다양한 시각적 다이어그램을 구성할 수 있는 프레임워크이다. D3를 용도에 맞는 네트워크다이어그램을 구성하기 위해서는 꽤 많은 연구가 필요했다. 주로 고정형 그래프에는 쉬우나 동적 그래프 구성에는 어려운 점이 있었다. 따라서 선택하게된 Cytoscape.js는 동적인 그래프 생성이 비교적 쉽고 jQuery를 이용해 프로그래밍이 가능하다는 점이 매력적으로 보였다.
구동 프레임워크는 iOS와 Android에서 구동 가능하도록 hybird 웹 프레임워크인 Ionic을 선택하게 되었다. 기본적으로는 Cordova에서 작동하고 Angular JS를 이용하고 있다. 특히, Ionic은 MVC/MVVM모델과 같은 디자인 패턴을 쉽게 구현할 수 있다. 다만, 별로 복잡하지 않은 앱을 설계할 때 무리하게 MVC모델을 따르는 것은 득보다 실이 많은것 같다. 단순 설계에서는 복잡한 모델 설계가 오히려 생산성을 방해 하였다.
결론적으로, 빠른 프론트앱 프레임워크로 Ionic은 적합하나 복잡한 앱이 아닌 경우 코드 생산성이 높지 않은것 같다. (프레임워크를 이해하기 위한 러닝커브가 있고, 또한 버전1과 버전2에 많은 차이가 있다.) Ionic 2를 하기 위해 TypeScript를 배우고 적용해야 한다. 크게 향상된 장점이 있다면 하겠지만 그렇지 않은경우 Ionic 2 프레임워크를 쓸일은 없을 것 같다. 그밖에 데이터베이스로 MongoDB를 이용해 데이터를 구성하였으며 NoSQL DB이므로 RDB와 같이 관계가 없다. 장점이라면 제약 없이 데이터를 확장하며 넣을 수 있다는 것이다. 다만 데이터가 늘어났을 때 몇가지 필요한 데이터를 뽑아내기 위해 관계가 없다는것이 단점으로 다가왔다.
가장 중요한 핵심기능인 네트워크 연관도를 빠른 시간안에 구성하기 어려웠으므로 기능을 갖춘 상용 컴포넌트를 도입해보기도 했다. 향후에는 같은 기능을 하도록 오픈소스에서 확장하여 설계되어야 할 것이다. 다만, 뉴스의 큐레이션의 기능으로 컨텐츠 관리자가 필요하며 지속적으로 관계를 형성하여 뉴스를 입력해 두어야 하는 점은 숙제가 되겠다. 또한, 이 앱의 수익 모델로서 광고를 추가 유치하기에는 기존의 뉴스의 링크로 인한 저작권 관계등을 고려해야 했다. 탐색의 재미는 있었으나 사용자에게 더 유용한 데이터가 되기 위해서는 컨텐츠를 직접 생산할 수 있는 능력을 갖추거나 사용자가 직접 의미있는 컨텐츠를 지정하도록 할 필요가 있다.
"If you would thoroughly know anything, teach it to other."
- Tryon Edwards -