Skip to content

MVVM + LiveData + Coroutines 入門用サンプル

Notifications You must be signed in to change notification settings

negishitakuro/GithubClient

 
 

Repository files navigation

サンプル学習用Githubのクライアントアプリです。

Kotlin/Javaでブランチを分けています。


ざっくり言うと、MVVMは上記MVCの派生パターンであり、MVVMを考慮してアプリケーションを開発する目的は、他のMVC系のパターンと同様にアプリケーションの「プレゼンテーション層(ユーザーが見て触れられる層)とドメイン(ビジネスロジック)を分離」することです。

そのアーキテクチャをAndroidでDataBindingライブラリが登場したことで、利用可能になったよと、そして、 Android Architecture Components の登場により、より扱いやすくなったよ、ということのようです。

大まかなメリットとしては、よくあげられるのは

  • 関心の分離
  • 依存関係の切り離し
  • 画面回転問題

などなど、また、依存関係が

Model (リモートとローカル問わず、データリソースを操作する領域)


ViewModel (DataBindingライブラリを通し、Viewに表示するデータの監視、取得をする領域)


View (xml/Activity/Fragment)


と依存関係が単方向になることで、保守性も向上します。 設計についてはもっと詳しい記事が世の中に溢れているので、詳細は以下に紹介いたします。

主要な設計への理解に関しては、以下記事を参考。

Androidアーキテクチャことはじめ ― 選定する意味と、MVP、Clean Architecture、MVVM、Fluxの特徴を理解する

設計参考書籍。

Android アプリ設計パターン入門


Android Architecture ComponentsはGoogleが推奨するデザインパターンを扱いやすくしたライブラリ群です。 4つに分かれてます。(公式ドキュメントから参照/引用)

今回お世話になる、ViewModelはModelの変更を監視し、データをViewにバインドし、View操作を伝達するクラスです。Viewとライフサイクルを共に歩むので、画面回転などユーザの想定外の操作に強くなります。

LiveDataは、Android Architecture Componentsが提供する、ライフサイクルと連動した監視が可能な、データホルダーのクラスです。

【Android Architecture Components】Guide to App Architecture 和訳

LiveDataの基礎的な性質を整理する。

当サンプル


参考記事:MVVM architecture, ViewModel and LiveData (Part 1)

ここで紹介されているサンプル(よく見るあるユーザのGithubリポジトリをずらっと表示するだけのクライアントアプリ)の実装を、真似してます。

これだけ

https://gyazo.com/cb86e446446cafc7043b46cabb630c3e

まず、当たり前ですが、依存関係のない方向に従い ( Model-> ViewModel -> View ) の順で実装していきましょう。

設計にこれといった答えはなく、これが正解というわけではないです。色々なサンプルを触って、最もシンプルでわかりやすかったので、あくまで一例です。

イメージ


Untitled mvvmDiagram (1).png

About

MVVM + LiveData + Coroutines 入門用サンプル

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 93.5%
  • Java 6.5%