目次

はじめに

免責事項
表記関係について
底本について
謝辞

第1章 Data Bindingのメリット

Data Bindingのセットアップ

第2章 実践Data Binding

まずはfindViewByIdを駆逐しよう
Data Bindingでカウントアップしてみよう
さまざまな値をBindしてみよう
Data Bindingで隠してみよう
イベントにもData Binding
ListViewにもData Binding
RecyclerViewにもData Binding

第3章 Data Binding Master

BaseObservable
ObservableField<T>
BindingAdapter
LiveDataとData Binding
RetrofitとData Binding

第4章 Build GitHub Search Repos App

第5章 小技

default
safeUnbox
Function type
Data Binding V1とV2

あとがき

はじめに

 今までのAndroid開発ではView(XML)の操作とデータの加工をひとつのActiviyで行っていましたが、これでは実装が煩雑になるため、様々な手法で効率的な実装方法が模索されてきました。

 Data Bindingはその中のひとつで、Viewに関する表示及び操作をXML側で定義します。これによりActivityはデータを用意する責務に専念し、Viewはそのデータをどう表示するかを責務とすることで実装の煩雑化を解消するという手法です。

 Data BindingはAndroidの公式ツールとして提供されているため、開発のベストプラクティスとも言えます。使って損はない機能なので、ぜひ本書を手にとって実践してみてください。

 本書では、Android中級者以上を想定読者層としています。そのため、Androidそのものの解説や開発のセットアップ等は解説しません。

 本書では次の環境で執筆しています。

 ・Android Studio 3.2.1

 ・Kotlin 1.3.10

 ・Android 9.0 (Emulator)

 Data Bindingのより詳細なリファレンスは、Android Developer公式ページを参考にしてください。


 https://developer.android.com/topic/libraries/data-binding/?hl=ja


 公式ページはJavaで書かれていますが、本書ではKotlinで解説します。

免責事項

 本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。

表記関係について

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。

底本について

 本書籍は、技術系同人誌即売会「技術書典5」で頒布されたものを底本としています。

謝辞

 2人のレビューによってめでたく1冊の本となりました。この場を借りて感謝申し上げます。

 ・131e55

 ・bakatsuyuki

 (敬称略)



第1章 Data Bindingのメリット

 Android開発の多くは、一般的にMVCモデルで行われます。AndroidはViewをXMLで定義でき、ControllerはActivityというクラスを継承することで実装します。これをMVCパターンに当てはめると次の図のようになります。

図1.1:

 このパターンではController(Activity)が担当しなければならない範囲が非常に広いため、コードが煩雑になり、保守性が下がる要因のひとつとなっていました。一部のライブラリーによってActivityの実装をModel側に移すことができますが、やはりアプリはViewの操作が非常に多いので、引き続きこの問題は残ったままとなってしまいます。

 そこで、Data Bindingを使った場合のやりとりでは次の図のように変わります。

図1.2:

 Data Bindingを使うことで、ActivityがViewに対して行う処理は「Data Bindingに値をセットする」のひとつだけとなりました。これによって、Viewはどのように表示され、どのような振る舞いを行うかをView自身が決めるという実装が可能になります。

 例えば、これまではActivityがテキストを表示するViewに対し、「そのViewに100をセットする」という処理を行っていました。また条件によっては「その数値に消費税を掛けたものを表示する」「1以上なら購入ボタンが押せる」といった振る舞いの変更もすべてActivityから指示していました。

 Data Bindingを使うと、Activityの処理は「Data Bindingに100を渡す」だけとなります。以降、Viewでは「このTextViewは受け取った値を表示する」「このTextViewは受け取った値に消費税を掛けたものを表示する」「このButtonは値が1以上なら押せるようにする」という定義によってView自身が振る舞いを変更します。

 これによりModelは「データの取得と加工」に専念し、Viewは「データをどう画面に表示してふるまうか」に専念し、Controllerは「ModelとViewを接続する」ことに専念するという構図へ変わります。その結果、ありがちだったControllerが肥大化する、通称Fat Controllerを避けやすくなります。


 文字だけの解説では難しそうに見えますが、本書では簡単な導入から実践的な使い方まで順序立てて解説します。読み終わった頃にはきっとData Bindingを実践したくなるでしょう。

試し読みはここまでです。
この続きは、製品版でお楽しみください。