はじめに
第1章 AndroidでMVVMを使ってみよう
第2章 SwiftUIを触ってみる
第3章 Flutter
付録A (おまけ)OSアップデート事情
あとがき
この本を手にとっていただきありがとうございます!! 著者のくまです。この本はモバイル開発についてAndroid・iOSにこだわらず書きました。詳しいところまで書いてない部分もあり、長年モバイル開発をしている方にとっては物足りない内容になっているかもしれないですが、SwiftUIやFlutterなど最近の技術についても書いています。ぜひ、ご一読ください!!そして、モバイル開発って楽しそうと思ってもらえると幸いです。
本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。
この章では、Android開発で一般的なアーキテクチャーのMVVMについて書いていこうと思います。そもそもMVVMとはどういったアーキテクチャーなのかというところから、実際にどうやって実装していくのかまで、順を追って説明します。
まず、アーキテクチャーとはアプリの設計手法のことを表し、MVVMだけでなく、MVPやMVCなどがあります。MVVMとはModelとViewとViewModelの略です。Googleは、基本的なアーキテクチャとしてMVVMを推奨しています。
Modelは馴染みのある方が多いかもしれませんが、データを実態として保存します。たとえば、Userクラスで実態化されたデータを、DBの仕様に合わせてDBに保存します。逆に、DBからデータを読み込みUserクラスとして実態を保持することもあります。DBから取得したデータを加工したり、加工したデータをDBに保存したりする役割があります。ViewはActivityやFragmentなど、UIを表示するためのコンポーネントです。更新された画面の表示やボタンを押して画面遷移を行うのをViewで行います。
ViewModelは馴染みがないかもしれませんが、ViewがUIを表示するために必要なデータを取得し、Viewにデータを渡す役割を持っています。MVCでいうコントローラーとほとんど同じ役割だと思って問題ないと思います。Googleによると、MVVMは次のような図で表されます。1
RepositoryやRemote Data Sourceはいったん置いといて、上記の図のようにそれぞれ独立した役割を持っています。逆に役割が決まっているので、次のようなメリットがあります。
・データの管理が楽になる
・テストをしやすくなる
・改修・機能追加がしやすい
・ミスを少なくする
上記以外にもメリットがあります。例えば、Activityにすべての処理を書くと膨大な長さになってしまい、見るだけで疲れてしまいます。そして、ActivityやFragmentにデータの取得・保存・UIの表示などのすべての処理を記述すると、メモリ不足になる可能性があります。ActivityやFragmentは画面を回転したり、アプリをバックグラウンドに移したりするだけでライフサイクルが終了します。つまり、ActivityやFragmentを再度表示する際には、もう一度すべての処理を実行しなければならなくなります。そのような不具合を防ぐという意味でもMVVMは効果的なのです。