Mokelab Blog

#36 Androidアプリ開発で使用するライブラリなど 2020年7月

2020年7月時点で、Androidアプリ開発で使用するライブラリやツールなどをざっくり紹介してみます。 久しぶりにAndroidアプリ開発をやるぞ!という方の助けになれば幸いです。

Android Studio

AndroidアプリはEclipseではなくAndroid Studioを使用します。安定版は4.0で、ベータ版/プレビュー版として4.1と4.2があります。

安定版のダウンロードはこちら。プレビュー版のダウンロードはこちらからどうぞ(プレビュー版は日本語表示にすると最新でないことがあるため、英語版のリンクにしています)。

Kotlin

「AndroidアプリはJavaで書く」時代から、「AndroidアプリはKotlinで書く」時代にシフトしています。後述のコルーチンや 来年リリース予定のJetpack Composeなど、Kotlinが必須な場面はどんどん増えています。

AndroidX / Android Jetpack

Android Jetpackが登場し、そこで提供されるライブラリはandroidx.*という パッケージで提供されるようになっています。サポートライブラリのアップデートは終了しているので、 AndroidX版をつかうよう修正していきましょう。

公式サイトはこちらです。

appcompat

アプリのベースとなるアクティビティやフラグメントはappcompat版を使用します。Android SDKに含まれる android.app.Fragment はdeprecatedになりました。

Navigation

アプリ内の画面遷移にはこのNavigationライブラリを使用します。特に理由がない限り、1アクティビティ複数フラグメントで 開発するのがベストプラクティスです。

公式のガイドはこちらです。

LiveData / ViewModel

LiveDataは監視可能なデータのいれもので、ViewModelはUI関連のデータ管理を担当するモノです。 フラグメント(UI)での処理を記述する際、「LiveDataをViewModelに持たせて使う」という設計パターンが推奨されています。

ConstraintLayout / MotionLayout

制約をベースにViewを配置してくれるレイアウトです。リアクティブにUIが作れるJetpack Composeは2020年7月時点ではアルファ版なので、まだまだConstraintLayoutは現役です。 アニメーションを含む場合、 MotionLayoutの利用も検討してみましょう。

DataBinding / ViewBinding

findViewById()を書く機会が激減します。DataBindingの場合、レイアウトXMLの ルート要素をlayoutにする必要がありますが、ViewBindingはその必要もなく、気楽に取り入れることができます。

Kotlinコルーチン

非同期処理を手続きのように書くことができ、RxJavaよりシンプルかつ柔軟に非同期処理を記述することができます。 Android Jetpackで提供されているライブラリもコルーチン対応が進んでいます。

Room

SQLiteDatabaseをとてもかんたんに扱えるようになるライブラリです。ボイラープレートコードがかなり減るので、 導入できそうな場合は導入していきましょう。

Dagger / Hilt

依存性注入(DI)をいい感じにやってくれるライブラリです。Daggerは強力な反面、学ぶのに時間がかかるという 欠点がありましたが、それをいい感じにやってくれるHiltというライブラリがアルファ版ですがリリースされています。

Hiltのドキュメントはこちらです。

Firebase

さまざまなサーバー機能を使うことができます。プッシュ通知を行いたい場合には必須になります。

公式サイトはこちらです。

OkHttp

HTTP通信ライブラリです。すでに使用しているという方も多いでしょう。

公式サイトはこちらです。

AppBundle

ライブラリでもツールでもありませんが、Google Playでアプリをリリースする際、App Bundle(.aab) でリリースすると、ダウンロードサイズを小さくすることができます。2021年のどこかで、新規アプリはこのApp Bundle対応が 必須となるようです。

まとめ

2020年7月時点での、Androidアプリ開発に使用するライブラリやツールなどを紹介してみました。 一度にすべてを導入するのは大変なので、すこしずつ導入をすすめてみてはいかがでしょうか?

本サイトではサービス向上のため、Google Analyticsを導入しています。分析にはCookieを利用しています。