DataBinding機能を使ってみる【Android/Kotlin】



DataBindingを試すにあたって、MVVMデザインパータンについても調べてみたのでまとめてみる。




はじめに、MVVM デザインパターン


あまり考えずにボタンやテーブルを追加したりしていくと、いつの間にか肥大化しているController。メンテナンスなどしたくないと思っているのは、私だけでは無いはず。

そんな悩みを解決する方法の1つがMVVMというデザインモデルだ。
MVVM とは Model、View、ViewModelというデザインパターンである。





View とは

画面の描画とユーザー入力の受付

ViewだけでなくViewController、ActivityもViewとして扱う。
描画に関するロジックのみを持ち、ユーザーからの入力はViewModelに任せる。


ViewModel とは

Viewから渡されたイベントを受け付ける役割

Viewから渡されたボタンタップなどのイベントをここで実際に処理していく。
Viewに表示するデータの提供もここで行う。
これらのことをプレゼーションロジックと呼ぶ。


Model とは

UIに依存しないロジック部分

残りの、UIに依存しないロジックはModelに実装する。
表現したいデータをAPIから取得したり、保存したいデーターをデーターベースへ書き込んだり、要求されたデータに答える。
これらのことはビジネスロジックと呼ばれている。




バインディング




このMVVMは、バインディングという機能で実現する。バインディングとは、結びつけるという意味で、例えばTextViewに文字をセットする際、TextView.text = "hoge"直接、または変数を使って代入していたものを、TextView.text = viewModel.hoge などという形で、Viewモデルを介して代入するのである。Viewモデルで値を更新すると、TextView.textの値も自動で更新してくれるのだ。これらの仕組みを提供してくれるのがバインディングと呼ばれる機能である。オブザーバーパターンとも呼べる。




DataBindingを実装する


DataBindingの使い方を学ぶため、簡単なサンプルを作って試してみた。

簡単に手順を説明する。


手順1

こんな感じでTextViewとButtonを用意する。




手順2

build.gradle (Module: app)に、以下のように追記する。




手順3

viewmodelパッケージを作成。(パッケージ名に大文字を使うとアクセスできなくなるので注意!)その中に、MainViewModel.ktファイルを作成する。ファイル内容は次の通り。




手順4

activity_main.xmlを編集




手順5

最後にMainActivity.ktに、おまじないの追加





ビルド

ビルドし、実行する。ボタンをクリックすると中央のテキストが変わることがわかる。



役割分担がはっきりして、とてもいい感じだ。また、一度設定してしまえば、Viewの更新を気にすることなくプログラミングできるのは素晴らしい。積極的にDataBindingを使ってみたいと思った。

Kotlinプログラミング

Kotlinは、Javaとの相互運用を可能にし、Android OSでGoogleがフルサポートする静的型プログラミング言語です。この言語は、Javaだけでは十全ではない(Javaだけでは実装に手間がかかりすぎる)、軽量かつ豊かな表現形式や、他言語ではすでに実装されている最新の機能を盛り込んでいます。

KindleAmazon

基本からしっかり身につくAndroidアプリ開発入門

圧倒的な多数のユーザーが使っているヤフーのアプリ。その制作の最前線にいる黒帯エンジニアが、ユーザーが使いやすいアプリの大切な基本をしっかりと解説します。

KindleAmazon




参考


Android + Kotlin + DataBinding
Andorid DataBinding with Kotlin


あなたにおすすめ