Genta Hirauchi

公開日:2020/04/12
更新日:2020/08/03

【Kotlin MVP】todo-mvp-kotlinでMPVを学ぶ #2 | todo-mvp-kotlinの構成について

  • MVPって何?
  • MVPの実装方法を1から学びたい

アプリ開発におけるアーキテクチャ(設計)の1つに、MVPというものがあります。

本記事は、Googleが公開している、todo-mvp-kotlinというサンプルアプリを通して、MVPについて学ぶシリーズの第2弾です。

今回は、todo-mvp-kotlinがどのような構成で実装されているのかを、実際の動作と見比べながら、解説致します。

目次

todo-mvp-kotlinの構成について

前回の記事では、MVPについての解説と、todo-mvp-kotlinのソースコードの取得から、アプリをインストールするまでを行いました。

今回は、実際にアプリを動かしながら、todo-mvp-kotlinがどのようなアプリなのか?どのような構成で実装されているのかを解説致します。

タスク一覧画面

アプリ起動後、最初に表示されるのは、タスク一覧画面です。タスク一覧画面に関するファイルは、tasksディレクトリにまとめられております。

TasksActivityTasksFragmentには、Viewに関する処理が実装されております。
初回起動時は、タスクが登録されていないため、”You have no TO-DOs!”という文言が表示されます。タスクを追加すると、タスクが一覧表示されます。

ScrollChildSwipeRefreshLayoutは、SwipeRefreshLayoutを継承したLayoutで、TasksFragmentに実装されております。画面を下に引っ張ると、ローディングが表示されます。

TasksFilterTypeには、タスクの検索条件がenumで定義されております。検索条件は、Toolbarの逆三角アイコンから変更できます。

TasksPresenterには、Presenterに関する処理が実装されております。主にデータの取得処理などを行っております。

TasksContractには、TasksFragment及び、TasksPresenterがimplementsしているinterfaceが実装されております。

タスク追加画面

タスク追加画面に関するファイルは、addedittaskディレクトリにまとめられております。

AddEditTaskActivityAddEditTaskFragmentには、Viewに関する処理が実装されております。
タスク一覧画面右下の追加ボタンをタップすると追加画面が、タスク詳細画面右下の編集ボタンをタップすると編集画面が表示されます。

AddEditTaskPresenterには、Presenterに関する処理が実装されております。主にデータの追加、更新処理などを行っております。

AddEditTaskContractには、AddEditTaskFragment及び、AddEditTaskPresenterがimplementsしているinterfaceが実装されております。

タスク詳細画面

タスク詳細画面に関するファイルは、taskdetailディレクトリにまとめられております。

TaskDetailActivityTaskDetailFragmentには、Viewに関する処理が実装されております。
タスク一覧画面にてタスクをタップすると、この画面へ遷移します。

TaskDetailPresenterには、Presenterに関する処理が実装されております。主にデータの削除処理などを行っております。

TaskDetailContractには、TaskDetailFragment及び、TaskDetailPresenterがimplementsしているinterfaceが実装されております。

統計画面

統計画面に関するファイルは、statisticsディレクトリにまとめられております。

StatisticsActivityStatisticsFragmentには、Viewに関する処理が実装されております。
タスク一覧画面のドロワーメニューのstatisticsをタップすると、この画面へ遷移します。

StatisticsPresenterには、Presenterに関する処理が実装されております。主に統計データの取得処理などを行っております。

StatisticsContractには、StatisticsFragment及び、StatisticsPresenterがimplementsしているinterfaceが実装されております。

Modelについて

Modelに関するファイルは、dataディレクトリにまとめられております。

Taskは、タスクのデータクラスです。タスクのプロパティが定義されております。

TasksRepositoryには、Modelに関する処理が実装されております。Presenterから呼ばれ、ローカルやリモートに対し、データの操作を行います。

localディレクトリの、TasksDaoTasksLocalDataSourceToDoDatabaseには、SQLiteデータベースに関する処理が実装されております。SQLite へのアクセスは、Roomライブラリが使用されております。

参考 : Room | Android Developers

remoteディレクトリには、TasksRemoteDataSourceというファイルがありますが、実はこのファイルは使用されておりません。サンプルアプリでは、SQLiteデータベースからのみデータのやりとりを行います。

以上が、todo-mvp-kotlinの大まかな構成の解説となります。
次回以降は、実装内容の詳しい解説をしていく予定です。
ありがとうございました。