Androidをはじめたばかり or これから始める人向けにまとめました。UI系ライブラリは種類が多すぎるので除外しています。
公式系
1. サポートライブラリ
※種類が多いのでまとめて1つとカウントしました
Androidの後方互換姓を維持するために、Googleが提供しているライブラリ群です。機能ごとにパッケージが分かれていますが、ほぼ必須のものが多いです。
- appcompat
- support-v4
- multidex
- design
- recyclerview
- cardview
- etc
2. Data Binding
レイアウトにデータを紐付けることで、データの更新に応じて自動的にビューを更新することができるライブラリです。レイアウトの属性を増やしたり、findViewById
を簡略化するだけでも使えます。
以前はButterKnifeというライブラリが使われることが多かったですが、data bindingの方が多機能なので最近はdata bindingの方が人気があると思います。
3. Architecture Component
Androidフレームワークのライフサイクル関連の問題を扱うことができます。まだ情報が少ないので定番とは言いにくいですが、間違いなくこれから主流になると思います。主に以下4つのコンポーネントからなりますが、LifecycleとViewModelが優先度が高く、Roomが最も優先度が低いです。
- Lifecycle
- ViewModel
- LiveData
- Room
JSON
4. Gson
JSON文字列をPOJO (Plain Old Java Object)に変換したり、逆にPOJOをJSON化するのに使います。
僕の観測範囲ではGsonが最もメジャーどころですが、他にもJackson, Moshiなどがあります。
Parcelable
5. Parceler
AndroidにはParcelableというシリアライズの仕組みがあり、画面遷移時などに使います。Parcelableを使うためにはボイラープレート(お決まりの定型文となるコード)を書く必要があるのですが、Parcelerはこれを自動的に生成してくれます。
KotlinではParcelizeという標準の仕組みがありますが、まだExpetimentalなので実戦投入にはご注意ください。
通信
6. OkHttp
Squareが提供しているHTTPクライアントです。ほとんどのAndroidアプリが採用しているといっても過言ではないかと思います。
7. Retrofit
インタフェースを定義するだけでAPIクライアントを生成してくれるライブラリです。ほとんどの人はOkHttpとセットで使用していると思います。また、後述のRxJavaと組み合わせて、APIの結果をRxJavaのストリームで受け取ることも出来ます。
画像
8. Glide
簡単にサーバー上の画像を読み込んでImageViewに表示することができます。OkHttpと連携することで、画像のダウンロードをOkHttpに任せることも出来ます。
SquareのPicassoもメジャーですが、最近アップデートされていないので今ならGlideを使うほうが無難だと思います。
データベース
9. Orma
AndroidのSQLite用のORMです。高速なIOや自動マイグレーションなど、豊富な機能がたくさんあります。
Architecture ComponentsのRoomも似ていますが、マイグレーション周りはOrmaの方が便利だと思うので僕はOrmaをおすすめします。
10. Realm
こちらはNoSQLなデータストアです。高速なIO、簡単に暗号化できる点などが人気があるようです。Android組み込みのSQLiteではなく、完全に別のデータベースを組み込むのでアプリサイズが大きくなるかもしれません。
依存性注入
11. Dagger 2
依存性注入ライブラリの定番です。導入は難しいですが、一度導入してしまえばクラス間の依存関係を綺麗に保ち、テストを書きやすい状態を維持できます。
SquareのDaggerとGoogleのDaggerがありますが、Googleの方が新しくAPIやパフォーマンスが改善されているので基本はGoogleの方を使用しましょう。
非同期処理
12. RxJava
Reactive Streamsという非同期処理ライブラリのJava実装です。APIやデータベース処理などをストリームとして扱うことができます。RxAndroidと大体セットで使います。
13. EventBus
Pub/Subのライブラリです。AndroidフレームワークのBroadcastReceiverに似ていますが、Context以外のクラスでも受信できたり便利です。
言語機能系
14. ThreeTen ABP
Java 8の日付関連のAPIのバックポートライブラリです。
15. Lightweight Stream API
Java 8のストリームAPIのバックポートライブラリです。map
やfilter
など他のプログラミング言語のリストにあるメソッドが使えるようになります。
Kotlinの場合は、Kotlinのコレクションが多機能なので不要です。
ランタイムパーミッション
16. PermissionDispatcher
permissions-dispatcher.github.io
Android 6から追加されたランタイムパーミッションに対応するためのライブラリです。アノテーションを付けるだけで、パーミッション周りのコードを自動生成できます。
17. RxPermissions
PermissionDispatcherと同じですが、RxJavaの形式でハンドリングできます。
デバッグ
18. Timber
ロガー。リリースビルドとデバッグビルドでログの出力を切り替えたり、本番だけCrashlyticsなどにログを送信したりできます。
19. Stetho
PCにつないでGoogle Chromeでデバッグできます。通信のリクエスト/レスポンスの中身を見たり、アプリのデータベースの中身を見たり、UIの構造を調べたり出来ます。
20. LeakCanary
メモリリークを自動的に検出してくれるライブラリです。
テスト
21. Robolectric
Androidの単体テストをJVMで実行するためのライブラリです。Androidの単体テストは通常Androidフレームワーク上でしか実行できないのですが、それだとテストの実行時にエミュレータの起動や実機の接続が必要になるため何かと不便です。Robolectricを使ってJVM上で実行することで、簡単かつ高速に単体テストを実行できます。
22. Mockito
テスト時にモックを簡単に作成できるライブラリです。