카테고리 보관물: 자작 앱 소개

홈 피트니스 트레이너(Home Fitness Trainer)

제작동기

집에서 혼자 운동하는 것이 참 어려운 일입니다. 여러가지 운동 관련 앱을 받아서 따라해 보려고 하면 너무 빨라서 할 수 없는 경우가 많았습니다. 여러가지 동작자체는 참 좋은데 제한된 시간내에 하려니 어려웠습니다. 문득 각 동작별로 소요되는 시간과 휴식시간을 내 수준에 맞게 조정해서 규칙적으로 알려주는 앱이 있으면 좋겠다는 생각이 들었습니다. 시간만 표시해 주는 것 보다는 옆에서 누가 구령을 붙여주면 더 좋을 것 같았습니다. 홈 피트니스 트레이너(Home Fitness Trainer) 라는 이름의 앱을 제작하게 되었습니다.

제작과정

먼저 해본 운동 위주로 설계를 했습니다. 몇번 동작을 하고 휴식하고 이것을 몇 세트 반복하는 것이 일반적이었습니다. 하나의 동작을 반복하는 운동은 거의 비슷한 형식이었습니다. 입력 받는 항목을 최대한 줄이고 운동별(플랭크, 암워킹…)로 분리해서 등록할 수 있도록 했습니다.

설정 화면
설정 화면

월별로 운동한 날짜를 보여주는 간단한 화면도 추가해서 동기부여가 되도록 했습니다.

선택한 월의 운동실행 상태를 보여주는 화면
선택한 월의 운동실행 상태를 보여주는 화면

이번에도 Room Persistence Library 를 이용했습니다. 그리고 Android Architecture Components 를 이용해서 MVVM 패턴을 적용했습니다. MVVM 패턴은 검색해 보시면 다양한 자료를 보실 수 있습니다. 본인에게 맞는 자료를 참조하시면 됩니다. AAC+MVVM 패턴을 적용한 예제 자료도 많이 있으니 참고하시면 됩니다.

처음에는 별도의 클래스(ViewModel, Repository)가 추가 되어 번거롭게 느껴졌습니다. 그러나 DB 연결을 통한 자료를 가져오는 부분이 깔금하게 정리되고 더 명확해 지는 장점이 있었습니다. 충분히 적용할 가치가 있다고 생각됩니다.

음성 부분은 방송일을 하셨던 지인분께 부탁을 해서 전달 받았습니다. 처음에는 단순히 숫자와 나머지 음성 부분만 자르면 되겠다고 생각했습니다. 음성이 설정한 시간에 맞게 나와야 하는데 그것이 생각처럼 쉽지는 않았습니다. 설정에 맞게 음성이 나오도록 편집을 다시 했습니다.

처음에는 진행된 시간만 나타났는데 실제 사용해 보니 한 동작을 하는데 남은 시간이 있으면 좋겠다는 생각이 들었습니다. 추가 후 사용해 보니 중간 휴식시간이 또 얼마나 남았는지 정보가 없으니 답답했습니다. 이것도 있어야 할 것 같아 추가했습니다.

실제 실행 화면
실제 실행 화면

앱은 다음 주소에서 확인하실 수 있습니다.

https://play.google.com/store/apps/details?id=jaeyoung.kim.fitnesstrainer.free

Box Finder

제작동기

상자나 서랍에 잡동사니를 넣어두는 경우가 많습니다. 처음에는 무엇이 들어 있는지 알지만 시간이 조금 지나면 필요한 물건이 어디 있는지 모르게 됩니다. 다행히 찾는 경우도 있지만 찾느라 시간만 허비하는 경우가 있습니다. 이럴 때 넣어둔 물건을 등록해 두고 쉽게 찾을 수 있는 앱이 있으면 좋겠다는 생각으로 제작하게 되었습니다.

제작과정

이전에 제작했던 앱과는 다르게 DB 연동 부분을 변경했습니다. 기존에는 DB 연동 Helper 클래스를 따로 제작하거나 라이브러리를 이용했습니다. 이번에는 Room Persistence Library 를 이용해서 제작했습니다. Room Persistence Library는 DB 연동 부분을 추상화해서 작업의 생산성을 높여줍니다. 일종의 ORM(Object-relational mapping) Tool 역할을 한다고 할 수 있습니다. 실제 사용해 보니 처음에 익숙하지 않았던 부분과 Primary Key, Foreign Key 등을 마음대로 정의할 수 없어서 정확한 방법을 알아내느라 고생한 것을 제외하면 꽤 만족스러웠습니다.

개발언어는 Java가 아닌 Kotlin 으로 진행했습니다. 기존의 코드를 간결하게 해주고 여러가지 장점이 있어 선택하게 되었습니다. 하지만 작업을 진행하다보니 Java와 다른 부분이 있고 대부분 공개된 코드가 Kotlin 이 아니어서 변환작업에 시간이 더 소요되었습니다. 완전하게 학습이 되지 않다보니 잘못코딩을 해서 헤매는 경우도 있었습니다. 언어 자체로 보면 발전한 것은 맞지만 아직 널리 사용되지는 않고 있다고 느껴졌습니다.

카메라와 갤러리의 사진을 사용하다 보니 사용권한을 따로 허락을 받아야 하는 부분을 처리해야 했습니다. Android 6.0 Marshmallow 부터 적용되었고 별도의 추가 작업이 필요했습니다.

일단 물건이 들어있는 상자나 서랍의 사진과 제목 그리고 내용물을 등록합니다. 검색어를 입력하면 색상이 강조되어 어디에 들어있는지 쉽게 알수 있도록 제작했습니다.

등록화면
검색화면

다음 주소에서 확인하실 수 있습니다.

https://play.google.com/store/apps/details?id=jaeyoung.kim.boxfinder.free