「일단공부」 앱 개발기(RN, React Native)

2019-05-23

RN(React Native)를 사용하여 「일단공부」라는 JLPT 일본어 단어 공부 앱을 제작해 보았습니다. 이 앱을 제작하면서 격은 내용을 정리해보려고 합니다.

개요

RN(React Native)를 통해 벌써 3번째 앱을 제작했네요. 아래는 이전 앱에 제작기입니다. 궁금하신 분들은 아래 링크를 통해 확인해 보세요.

일본에서 단어 공부를 하려고 단어책을 사고, 전철에서 단어 공부를 하는데 책도 무겁고 가방에서 꺼냈다가 넣다가도 귀찮았습니다. 그때, 회사를 그만두신 선배 피씨에서 단어를 정리한 파일을 발견했고, 이걸로 앱을 만들면 어떻까 싶어 선배에게 허락을 받고 이번 앱을 제작하게 되었습니다.

일단 공부란?

JLPT 일본어 단어를 레벨별로 공부할 수 있으며, 하루하루 공부할 수 있는 분량과 복습 기능으로 단어 암기를 도와주는 앱입니다.

아래는 앱을 다운로드 받을 수 있는 링크입니다.

왜 만들게 되었나?

개요에서도 잠깐 이야기 했지만, 책을 들고 일본의 전철(지옥철)에서 공부하기가 너무 어렵습니다. 그리고 책은 단어와 의미가 같이 보여서, 의식적으로 의미를 안보려고 노력하지만 자꾸 의미가 눈에 들어옵니다. 아직 한자를 잘 모를때는 어떻게 발음해야 하는지 잘 모를때도 있습니다. 그리고 단어 공부는 반복해서 봐야하는데 이놈의 책으로 반복해서 보자니 앞 챕터에서 계속 머물게 됩니다. 이런 문제들을 해결하고자 간단한 JLPT 일본어 단어 앱을 제작하게 되었습니다.

JLPT 일본어 단어 앱, 일단 공부

앱 기획

일단 네이밍은 일본어 단어 공부의 본어 공부에서 따왔습니다. 이중적인 의미로 일단 공부하자라는 의미도 포함하고 있습니다.

일단 공부의 MVP(Minimum Viable Product: 최소 기능 제품)는 아래와 같이 정의했습니다.

  1. JLPT 일본어 단어를 레벨별로 볼 수 있다.
  2. 하루하루 공부할 분량(15 단어)로 단어를 볼 수 있다.
  3. 일본어 단어가 의미가 보이지 않는 상태로 리스트로 보인다.
  4. 의미를 보기 위한 버튼이 있고 읽는 방법(히라가나/가타카나)과 의미가 보인다.
  5. 읽는 방법을 선택하면 단어를 읽어준다.
  6. 공부한 단어를 테스트를 통해 복습한다.
  7. 테스트시 틀린 단어를 보여준다.
  8. 레벨별 또는 전체 단어를 복습할 수 있는 기능을 추가한다.
  9. 복습 기능에는 자주 틀리는 단어를 자주 보여주는 로직을 넣는다.

이렇게 정리하다보니 꽤 많은 기능이 있는 것처럼 보이네요. 최대한 단순하게 만들기 위해 노력했지만 역시 제가 쓰기 편한 앱을 만들다 보니 여러 기능이 추가되었습니다. 사실 더 많은 기능을 넣고 싶었지만, 우선 MVP, MVP!

디자인

역시 디자인 센스가 제로네요…어떤 디자인이 좋은가 여러 패턴을 만들고 여러 색상을 넣어서 도전해봤지만…아직도 디자인은 어렵습니다.

JLPT 일본어 단어 앱 일단 공부 디자인

디자인은 sketchapp으로 제작했습니다. 여러 디자인 패턴중에서 최대한 간단한 디자인을 선택했습니다. 또한 불필요한 화면도 제거하고 최종적으로 아래와 같은 디자인을 선택했습니다.

JLPT 일본어 단어 앱 일단 공부 디자인

디자이너분들 존경합니다.

앱 개발

앱 개발에는 당연히 RN(React Native)를 사용하였습니다. 일단공부는 기본적으로 RN(React Native)과 타입스크립트(typescript)를 사용합니다.

  • RN(React Native) 설치 방법: RN 설치
  • RN(React Native)에 typescript 적용하기: typescript

또한 RN(React Native)의 기본적인 UI는 NativeBase를 스타일에는 styled-components을 사용하였습니다.

일단 공부의 기본 네비게이션 시스템으로는 react-navigation을 사용하고 있습니다.

MVP(Minimum Viable Product: 최소 기능 제품)의 기능중 하나인 음성 지원은 react-native-tts를 사용하여 tts(Text To Speech) 기능을 구현하였습니다.

일단 공부앱에서 사용되는 단어는 sqlite를 사용하여 앱과 함께 배포하고 있습니다. 앱에서 sqlite를 사용하는 방법은 아래에 링크를 통해 확인할 수 있습니다.

최종적으로 앱의 광고와 분석을 위해 구글의 파이어베이스(Google Firebase)와 구글 애드몹(Google Admob)을 사용하였습니다. 이를 앱에 구현하기 위해 react-native-firebase를 사용하였습니다.

마지막으로

이번 앱은 단어를 보여주는 단순한 앱이였습니다. 역시 디자인에서 시간이 제일 많이 걸렸네요. 또한 react-native-sqlite-storage가 안드로이드에서는 퍼포먼스 문제가 있는거 같습니다. 로컬에서 데이터를 읽어오는데 서버에서 받아오는 것처럼 시간이 많이 걸리네요. 제가 앱을 잘못 만든걸지도…다시 한번 sql 튜닝을 해보고 안되면 라이브러리 소스도 좀 봐봐야 할거 같습니다.

일본어 단어 공부하시는 분들 「일단 공부」해보세요.^^

책 홍보

저도 블로그를 시작한지 1년만에...책을 다 써봅니다...인생에서 이런 날도 오는군요...타국에서 책 출판도 할 수 있고, 참 좋은 세상입니다.

이번에 쓴 책은 스무디 한 잔 마시며 끝내는 React Native입니다. 다양한 예제를 통해 리액트 네이티브를 공부할 수 있도록 구성해 보았습니다. 또한 설치부터 배포까지 실전에서도 사용할 수 있는 내용들을 담고 있습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.
스무디 한 잔 마시며 끝내는 React Native React Native로 실전 스마트폰 앱 만들기
Buy me a coffeeBuy me a coffee
Posts