はじめに
遂に約3年前から作りたかったアプリを作成できたので、使ったアーキテクチャとクローズドテストの話をしていきます。
まだまだ勉強不足でツッコミどころが多いかもしれません。
アプリ紹介
日々のメンタルを記録し、可視化して自己管理していこうぜって感じのアプリです。
メンタルと日付と時間帯とメモを記録、振り返ることができます。
肝心の削除機能は次のアプデで...
アーキテクチャ
今回はMVVM + Repositoryを採用しました。
理由は3つあって↓
- 業務で使っているけどイマイチ理解が進んでいない
- Activityに処理書きすぎてエグい
- Roomを使ってデータを操作をしていて、この処理もRepositoryとして組み込んだら綺麗に描けるのでは
以上の3つです。
①から⑥の処理の流れになっています。
View
ActivityやFragmentがViewの役割を担っています。ユーザーに見える部分です。
ほぼViewControllerみたいな役割もしています。これいいのか...
ViewModel
ここからが内部的な部分。画面回転が入っても情報を保持してくれているので助かる。
LiveDataを作って値を監視できる。変更通知をActivityで書いたobserve受け取ることもできる。
特にDBからの応答をView層に通知することができるので良き。
コルーチンを使って非同期処理でデータのやり取りができるので、UIスレッドをブロックせずに済む。
正直やっと理解が進んで感動した。
Repository
DB関連の役割。
ここではRoomを使ってSQLite(ローカルDB)を操作している。
ここにinsertなどの処理をまとめておけば、毎回実装するなんてことが起きないので絶対あった方がスッキリする。
Model(Data Class)ともやりとりをしている。
Model
データクラスの役割。
感情や日付などの、Roomで使うデータをここで書いている。
DBにどんな情報があるか、必要かすぐに分かるのでこれもあった方がいい。
クローズドテスト
アプリを作り終えたからストアにアップしたい。
が、ここからが鬼門。
20人テスターを集めて2週間テストをすることが必須条件とのこと。Googleさんマジスカ。
筆者は、アプリやクローズドテストのコミュニティを使ってやり遂げました。
正直、最初は鬼だと思ってたけど様々な人にテストしてもらって見えたものがある。
特にコミュニティに参加して良かった。レビューなどもいただけてアプリがいい方向に動いた。
なんやかんや、クローズドテストして良かった。
筆者が大変お世話になったコミュニティとアプリのリンクを貼らせていただきます。本当にありがとうございました。
まとめ
約3年前の自分。エンジニアは楽しいぞ。
めげるな、じゃなくてMVVMで考えて役割を持たせる大切さと、テストの大切さを学習できました。
筆者が作ったアプリ
アプデちゃんとするので良かったらDLお願いします!