私は去年から真面目にAndroid開発を始めたのですが、プロダクトの開発で息するように使われているライブラリなどは誰も教えてくれず知るまでなかなか時間がかかりました。この記事ではこれからAndroid開発を始める人向けに今よく使われているライブラリをまとめます。
「よく使われている」は完全に主観です。
AAC
Android Architecture Componentsの略で、Android Jetpackのコンポーネントの一つです
AACに含まれるライブラリの中でも特によく使うものについて紹介します。
Data Binding Library
文字通りデータバインディングに使うライブラリです。私はMVVMでの開発でよく使ってます。XMLにオブジェクトをバインドしたり、後述するLiveDataなどで双方向のデータバインディングもできるので大変便利です。
Lifecycle
ActivityやFragmentのライフサイクルを管理します。LifecycleObserverを使うとActivityやFragmentのライフサイクルイベントを他のクラスで監視することができるのでとても便利です。
LiveData
LiveDataはライフサイクルと連動して、値の変更を通知することができます。私はRxのSubjectを使ってレイヤー間の通知を行っていた部分をLiveDataに置き換えました。双方向のデータバインディングにも利用できて便利です。
Room
RoomではSQLiteをスムーズに使えるようなインターフェースを提供しています。私はそこまでがっつり使ってないのでなんとも言えません。
ViewModel
ViewModelはActivityやFragmentのライフサイクルと関連づけてUI関連のデータを管理することができます。いわゆるMVVMのViewModelとは文脈が少々異なる物だと思いますが、MVVMでのアプリケーション開発にはとても役立ちます。私はめちゃくちゃ使っています。
Navigation
Fragmentの遷移をXMLで管理することが出来ます。safeArgs
というプラグインを導入することで、Fragment間のデータの受け渡しを簡単に定義出来るので便利です。
Paging
よくある無限スクロールでのページングが簡単に(?)実装できます。
その他
-
WorkManager
- ぶっちゃけ使ったことないので知りません
Jetpack Compose
Jetpack Composeは前述のAndroid Jetpackの一部です。
Jetpack Composeを使用するとKotlinのコード上でUIを定義することができます。
Jetpack Composeを使用することで、Webフロント界隈ではスタンダード(?)になっている宣言的UIをAndroidで実現することができます。「よく使われている」かはまだ微妙なラインですが、今後どんどん使われていく流れを感じます。
accompanist
Jetpack Composeの様々な拡張が提供されているライブラリです。Jetpack Composeを使っているプロジェクトではかなり使用されているように思います。
通信周り
okhttp + retrofit + RxJava(RxKotlin) + RxAndroid + moshi(gson)
みたいな構成をよく見ます。 最近はcoroutineを使った非同期処理もよく見かけます。
HTTPクライアント
okhttp
デファクトでしょう。私はこれが無いと生きていけないです。
retrofit2
RESTをいい感じに扱えるライブラリ。okhttpと一緒に使うことが多し。
JSONパーサ
一昔前はJacksonが使われていたらしい?
gson
google製です。よく見ます。私はDeserializerを自分で書かなきゃいけない時など複雑な要件の時に使ってます。
moshi
square製です。最近は専らこっちを使ってます。
画像
glide
画像表示には欠かせない存在です。よく見ます。
picasso
こっちもよく見ます。体感的にはglideの方が使われてそう。
COIL
COILはCoroutine Image Loader
という意味で、Kotlinのコルーチンを利用した画像ライブラリです。軽量かつ高速です。
Rx
RxJava
リアクティブプログラミングというパラダイムのコード記述ができます。学習コストは高いですが覚えると大変便利です。非同期処理用のライブラリだと思われがち。最近は他の技術に置き換える流れを感じますがまだまだ色んなところで使われているし個人的にはこれが無いとかなり辛い。
RxKotlin
RxJavaのKotlin拡張です。KotlinでRxを使うならぜひ導入しましょう。
RxAndroid
Android開発におけるRxJavaでの非同期通信には欠かせない存在です。
RecyclerView
groupie
最近人気すぎて怖い。でも確かに便利です。
epoxy
airbnb製。複雑なRecyclerViewを簡単に構築することができます。DataBindingとも併用が容易で使いやすいです。MvRxなどairbnbの他のライブラリとの相性も良さげ。
デバッグ関連
Log代替
timber
android.util.Logのラッパーです。誰も教えてくれないけどみんな使ってます(主観)。ビルドタイプによる機能の切り替えなどができます。
メモリ管理
leakcanary
信頼と実績のsquare製。アプリのメモリリークを検出し、通知します。当たり前のように使われている感じがします。
通信ログ周り
stetho
okhttpに噛ませるとChromeで通信ログなどが見れます。めちゃ便利。
flipper
Facebook製。Android以外のプラットフォームでも使えます。プラグインを追加することで様々な機能が利用できるようになります。便利〜
その他
Hyperion-Android
色々できます。詳しくはこちらの記事を見てください。
DI
Dependency Injectionの略です。最近は知ってて当たり前感があります。参考
dagger2
square発google製。めちゃくちゃ使われてます。学習コストはかなり高いと思います。
koin
Kotlin実装のDIライブラリ。知名度も上がってきて勢いを感じます。daggerよりわかりやすいので私は好きです。
dagger hilt
AndroidでDaggerをより簡単に扱えるようにしたものです。前述の通り、daggerはかなり学習コストが高いですが、hiltを使うとかなりシンプルな記述でAndroidアプリにdaggerを導入できます。今後のスタンダードになりそうな予感がします。
テスト周り
mockito
モッキングフレームワークです。デファクト感があります。
mockk
Kotlin実装のモッキングライブラリです。最近見かけるようになりました。
spek
Kotlin製のテストフレームワークです
truth
Google製のアサーションライブラリ。AndroidXのテストのドキュメントでも採用されているようです。
その他
ThreeTenABP
Androidで日付を簡単に扱えるライブラリ。誰も教えてくれないけど大変便利で使ってる人も多いはず。
所感
- Java -> Kotlinの流れを強く感じます(koinとか)
- 最近のAndroid開発ではdaggerやRxなど学習コストの高いものを覚える必要があり、開発を始める敷居が高くなっているように思います
- 「これはみんな使ってるっしょ!」みたいなライブラリがあれば是非教えてください