連日猛暑が続きますね。
今年のフジロックはSlowdiveが最高でした。
Androidアプリ開発におけるアーキテクチャについて
さて今回のブログは、将来プロジェクトに参画してもらうエンジニアへの説明も兼ねて、MVVMについて簡単にまとめたものを記事にしておこうと思います。
弊社ではAndroidアプリ開発において、アーキテクチャはMVVM(Model-View-ViewModel)を採用しております。
MVVMアーキテクチャの採用理由
Googleが推奨するだけあってMVVMは、アプリケーションのロジックをきれいに分離し、可読性やコードの再利用性、テスト容易性に優れています。
-
Model -> データやビジネスロジックを担当
-
View -> UIの表示部分を担当
-
ViewModel -> ViewとModelの間でデータの受け渡しとビジネスロジックの制御を担当
※実際のプロジェクトでは、REST APIを使用してバックエンドからデータを取得する時、図のような構成になっています。
参照 : Android デベロッパー アプリ アーキテクチャ ガイド
データバインディング
データクラスや拡張関数を活用しDataBindingライブラリを使用することで、ViewとViewModelの間でのAPIで取得したデータのバインディングを非同期で自動的に行えます。これにより、UIの更新やデータの同期が簡単になります。
ViewModelのテスト容易性
MVVMアーキテクチャでは、ビジネスロジックのほとんどがViewModelに集約されるため、単体テストが非常に簡単に行えます。ViewModelはUIに依存せず、純粋なKotlinクラスとして記述されるため、バグの発生箇所の切り分けやコードの品質向上につながります。
ディレクトリ構成
プロジェクトによってまちまちだと思いますが、画面ごとにディレクトリを作成し、Activity・Fragment・ViewModelそしてUIに関連したファイルは一つのディレクトリに格納するようにしています。
これはメリット/デメリットあると思いますが、そうすることでその画面を担当する開発エンジニアが作業しやすくなるメリットがあります。
まとめ
MVVMアーキテクチャを採用したKotlinのアプリ開発は、効率的な開発手法です。
アプリケーションのロジックをきれいに分離し、データバインディングやリアクティブプログラミングを活用することで、生産性の向上とアプリの品質向上を実現できますし、開発時に各エンジニアがスムーズに実装できます。
アプリ開発においては、MVCよりもMVVMの方が実装がしやすいと個人的に感じています。
以上、MVVMアーキテクチャの理解の一助になれば幸いです。