#3 Kotlin で TODO アプリを開発・リリースするまでの記録

# 前回のあらすじ
### 前回までの記事
[#1 Kotlin で TODO アプリを開発・リリースするまでの記録](https://qiita.com/m_n_r/items/03ac9f641f735ad40d43)
[#2 Kotlin で TODO アプリを開発・リリースするまでの記録](https://qiita.com/m_n_r/items/90f9f96bf1a8b4f91613)

### 前回のあらすじ
- RecyclerView に必要なものがなんとなくわかった
- CardView を使いたい欲がもりもり

### 今回の目標
- ライブラリについて調べる
- 引き続き実装に必要な下調べを行う

# Support Library ってなに？
ライブラリが突然 **Support Library** に変わりましたが同じものを指しています。
前回まで登場していた「RecyclerView」や「CardView」のライブラリのことです。

[Support Library の機能ガイド](https://developer.android.com/topic/libraries/support-library/features?hl=JA)

要は、アプリの開発に役立つ機能を拡張可能なクラスとして提供しているようです。
使う分にはそこまで意識する必要はなさそうですね。

**いや、まてよと。**
記事文頭にある注意書きが、気になります。

> 注: Android 9.0（API レベル 28）のリリースにより、Jetpack の一部として AndroidX と呼ばれる新しいバージョンのサポート ライブラリが登場しました。AndroidX ライブラリには既存のサポート ライブラリのほか、最新の Jetpack コンポーネントも含まれています。 

> サポート ライブラリは引き続きご利用いただけます。過去のアーティファクト（バージョン 27 以前で android.support.* としてパッケージ化されたもの）は、Google Maven でそのまま利用可能です。ただし、新しいライブラリ開発はすべて AndroidX ライブラリで行われます。 

> すべての新しいプロジェクトで AndroidX ライブラリを使用することをおすすめします。また、既存のプロジェクトを AndroidX に移行することもご検討ください。

**サポートライブラリ、過去の遺物じゃない？**

技術の進歩は早いものですが、スマートフォンの OS ともなれば目にも止まらぬ速さのようです。
*※引用した公式記事の「Jetpack」「AndroidX」リンク先が逆になっているので注意です（2019/08/13時点）*

# AndroidX ってなに？
> [AndroidXへの移行がすぐできたのでまとめ](https://qiita.com/keidroid/items/57b0b3e3ecc458d1f548)
> AndroidXとは今までのSupport Libraryを代替するAndroid拡張機能ライブラリのオープンソースプロジェクトです。

AndroidX は Support Library を代替する。

> [AndroidX の概要](https://developer.android.com/jetpack/androidx?hl=JA)
> AndroidX は、同等の機能と新しいライブラリを提供することで、完全に Support Library の代わりとなります。

AndroidX は Support Library の上位互換。
ならこれを使いましょう。

# Jetpack ってなに？
ところでさっきの引用をもう一度確認します。
> [Support Library の機能ガイド](https://developer.android.com/topic/libraries/support-library/features?hl=JA)
> 注: Android 9.0（API レベル 28）のリリースにより、Jetpack の一部として AndroidX と呼ばれる新しいバージョンのサポート ライブラリが登場しました。

Jetpack の一部として AndroidX が登場したようですね。
最新の何かっぽいです。

- [Android Jetpack](https://developer.android.com/jetpack?hl=JA)
- [Android Jetpackってなにもの？](https://qiita.com/k_masa777/items/c01c1de6ac763ce5c075)
- [GoogleI/O行ってないけどAndroid Jetpack気になったので調べてみた](http://t-miliya612.hatenablog.com/entry/2018/05/13/030607)

Jetpack は Android 開発全域に関わる高品質コンポーネントであり、Kotlin も書きやすくしてくれているので積極的に活用していくべきであることがわかりました。
ただ、Jetpack と AndroidX の関係性の記述が一切見つけられませんでしたが・・・謎。

### もうちょっと詳しく
AndroidX はさておき、Jetpack で追加されたいろんな新しい機能が気になります。

# Android Architecture Components 
Jetpack の中でも気になった Architecture について、簡単に掘り下げていきます。
本題から外れない程度に、簡単に触れます。

### MVVC
- [Android Architecture Components 初級 （ MVVM + LiveData 編 ）](https://qiita.com/Tsutou/items/69a28ebbd69b69e51703)  
Android Architecture Components の登場で、[MVVM](https://qiita.com/homyu/items/046c9a43b15b9e376198) の実装がより扱いやすくなったそうです。ありがたい。

### Lifecycle
- [新しく追加されたAACのLifecycleObserverを使ってAndroidのライフサイクルのコードをスッキリさせよう！](https://qiita.com/Pooh3Mobi/items/ef50b90098678eb5f476)  
すっきり書けちゃうそう。大事。やってみたい。

### Navigation
- [[Android] 10分で作る、Navigationによる画面遷移](https://qiita.com/tktktks10/items/7df56b4795d907a4cd31)  
画面遷移がおもしろい。やってみたい。

### LiveData
- [Android Architecture Componentsに感動した話](https://tech.studyplus.co.jp/entry/2019/06/04/100954)
**これぇ・・・めっちゃ関係あるやつぅ・・・**
検索結果をリスト表示する実装ですが、文字結果を通知する点や、非同期通信でリスト更新など、いろいろと使える部分がありそうです。

- [[android-architecture] MVVM & LiveDataを読んでみる](https://qiita.com/tak-wisteria/items/419cc117cdcf94909430)
・・・？難しくてよくわかりませんが、わかりやすく解説してくれている記事なので、後からもう一度読んでみたいと思います。

- [Android MVVM + LiveData + DataBinding(初心者向け)](https://qiita.com/zakimiiiii/items/2d0de51bc37f8e3789e0)
> 基本的な「MVVM + LiveData + DataBinding」を実装しました。
> 最終的に双方向にしたので、LiveDataは関係なくなってしまいましたが。。。

最後はLiveData と関係ないそうなのですが、双方向データバインディングも実装に必要となる可能性があるので、勉強になりました。

**あれ、何を調べているのかわからなくなってきた・・・。**

# まとめ
今回はここまでです。
ライブラリを調べて、寄り道していたらおわってしまいました。
AndroidX を使用した場合のライブラリインポート方法には触れていませんが、この段階では気付いておらず、調べるだけ調べて満足しています。
後々躓くところも書くのでお楽しみに。
次回は本題へ戻りますよ。

### 成果
- ライブラリの最新は AndroidX
- Jetpack には便利な機能がたくさんあり、中でも LiveData が使えそう

### 参考記事に感謝
たくさんの記事を引用させて頂きました。ありがとうございます。
著者が一部のみを引用したことにより、引用元の意図しない情報として受けられることがないよう、できれば引用元の記事を読んでいただけますようお願いいたします。
またいずれの記事の感想も、著者個人の意見に基づくものですのでご注意ください。

# 次の記事

[#4 Kotlin で TODO アプリを開発・リリースするまでの記録](https://qiita.com/m_n_r/items/31bff60b2c867ecfc73d)