Edited at

最近のAndroid開発でよく使われているっぽいライブラリまとめ(2019/05)

私は去年から真面目にAndroid開発を始めたのですが、プロダクトの開発で息するように使われているライブラリなどは誰も教えてくれず知るまでなかなか時間がかかりました。この記事ではこれからAndroid開発を始める人向けに今よく使われているライブラリをまとめます。

「よく使われている」は完全に主観です。


AAC

Android Architecture Componentsの略で、Android Jetpackのコンポーネントの一つです

https://developer.android.com/jetpack?hl=JA

AACに含まれるライブラリの中でも特によく使うものについて紹介します。


Data Binding Library

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

文字通りデータバインディングに使うライブラリです。私はMVVMでの開発でよく使ってます。XMLにオブジェクトをバインドしたり、後述するLiveDataなどで双方向のデータバインディングもできるので大変便利です。


Lifecycle

https://developer.android.com/topic/libraries/architecture/lifecycle?hl=JA

ActivityやFragmentのライフサイクルを管理します。LifecycleObserverを使うとActivityやFragmentのライフサイクルイベントを他のクラスで監視することができるのでとても便利です。


LiveData

https://developer.android.com/topic/libraries/architecture/livedata?hl=JA

LiveDataはライフサイクルと連動して、値の変更を通知することができます。私はRxのSubjectを使ってレイヤー間の通知を行っていた部分をLiveDataに置き換えました。双方向のデータバインディングにも利用できて便利です。


Room

https://developer.android.com/topic/libraries/architecture/room?hl=JA

RoomではSQLiteをスムーズに使えるようなインターフェースを提供しています。私はそこまでがっつり使ってないのでなんとも言えません。


ViewModel

https://developer.android.com/topic/libraries/architecture/viewmodel?hl=JA

ViewModelはActivityやFragmentのライフサイクルと関連づけてUI関連のデータを管理することができます。いわゆるMVVMのViewModelとは文脈が少々異なる物だと思いますが、MVVMでのアプリケーション開発にはとても役立ちます。私はめちゃくちゃ使っています。


その他



  • WorkManager


    • ぶっちゃけ使ったことないので知りません




  • Navigation


    • 遷移周りを管理します。safeArgs(Fragment間でのデータ受け渡しに使えるモノ)が便利だった




  • Paging


    • ぶっちゃけ使ったことないので知りません




通信周り

okhttp + retrofit + RxJava(RxKotlin) + RxAndroid + moshi(gson) みたいな構成をよく見ます。 最近はcoroutineを使った非同期処理もよく見かけます。


HTTPクライアント


okhttp

https://github.com/square/okhttp

デファクトでしょう。私はこれが無いと生きていけないです。


retrofit2

https://github.com/square/retrofit

RESTをいい感じに扱えるライブラリ。okhttpと一緒に使うことが多し。


JSONパーサ

一昔前はJacksonが使われていたらしい?


gson

https://github.com/google/gson

google製です。よく見ます。私はDeserializerを自分で書かなきゃいけない時など複雑な要件の時に使ってます。


moshi

https://github.com/square/moshi

square製です。最近は専らこっちを使ってます。


kotshi

https://github.com/ansman/kotshi

kotlin実装です。kotlin向けのMoshiのadapter。


画像


glide

https://github.com/bumptech/glide

画像表示には欠かせない存在です。よく見ます。


picasso

https://github.com/square/picasso

こっちもよく見ます。体感的にはglideの方が使われてそう。


Rx


RxJava

https://github.com/ReactiveX/RxJava

リアクティブプログラミングというパラダイムのコード記述ができます。学習コストは高いですが覚えると大変便利です。非同期処理用のライブラリだと思われがち。最近は他の技術に置き換える流れを感じますがまだまだ色んなところで使われているし個人的にはこれが無いとかなり辛い。


RxKotlin

https://github.com/ReactiveX/RxKotlin

RxJavaのKotlin拡張です。KotlinでRxを使うならぜひ導入しましょう。


RxAndroid

https://github.com/ReactiveX/RxAndroid

Android開発におけるRxJavaでの非同期通信には欠かせない存在です。


RecyclerView


groupie

https://github.com/lisawray/groupie

最近人気すぎて怖い。でも確かに便利です。


epoxy

https://github.com/airbnb/epoxy

airbnb製。ぶっちゃけ使ったこと無いのでよくわかりませんが便利そう。MvRxや他のairbnb製のライブラリと相性が良さげです。


デバッグ関連


Log代替


timber

https://github.com/JakeWharton/timber

android.util.Logのラッパーです。誰も教えてくれないけどみんな使ってます(主観)。ビルドタイプによる機能の切り替えなどができます。


メモリ管理


leakcanary

https://github.com/square/leakcanary

信頼と実績のsquare製。アプリのメモリリークを検出し、通知します。当たり前のように使われている感じがします。


通信ログ周り


stetho

https://github.com/facebook/stetho

okhttpに噛ませるとChromeで通信ログなどが見れます。めちゃ便利。


flipper

https://github.com/facebook/flipper

Facebook製。Android以外のプラットフォームでも使えます。使ってる人見たことないです。stethoで良くね?


その他


Hyperion-Android

https://github.com/willowtreeapps/Hyperion-Android

色々できます。詳しくはこちらの記事を見てください。


DI

Dependency Injectionの略です。最近は知ってて当たり前感があります。参考


dagger2

https://github.com/google/dagger

square発google製。めちゃくちゃ使われてます。学習コストはかなり高いと思います。


koin

https://github.com/InsertKoinIO/koin

kotlin実装のDIライブラリ。知名度も上がってきて勢いを感じます。daggerよりわかりやすいので私は好きです。


テスト周り


mockito

https://github.com/mockito/mockito

モッキングフレームワークです。デファクト感があります。


mockk

https://github.com/mockk/mockk

kotlin実装のモッキングライブラリです。最近見かけるようになりました。


その他


ThreeTenABP

https://github.com/JakeWharton/ThreeTenABP

Androidで日付を簡単に扱えるライブラリ。誰も教えてくれないけど大変便利で使ってる人も多いはず。


所感


  • Java -> Kotlinの流れを強く感じます(koinとか)

  • 最近のAndroid開発ではdaggerやRxなど学習コストの高いものを覚える必要があり、開発を始める敷居が高くなっているように思います

  • 「これはみんな使ってるっしょ!」みたいなライブラリがあれば是非教えてください