LoginSignup
6
5

More than 3 years have passed since last update.

【Android】Jetpack、AndroidX、Architecture Componentsなどの用語や関係性を整理する

Posted at

Android の Architecture Components を使ってみたくて情報を調べていたら、「Jetpack」「AndroidX」などの用語も合わせてよく見かけた。Android 開発経験が1年に満たない自分には、まだこれらの意味や関係性がピンと来ていなかったので、この機会に一通り調べて整理してみた。

※自分なりに解釈したものなので、もし間違っているところがあればコメントなどをください:pray:

Android Jetpackとは?

image.png

Jetpack は、高品質の Android アプリをデベロッパーが簡単に作成するための一連のライブラリ、ツール、およびガイダンスです。

Android Jetpack とは、Google 公式の「Android 開発のベストプラクティス集」のようなもの。「思想」と言ってもいいかもしれない。「思想」にとどまらず、実際にそのベストプラクティスを実現するためのツールやライブラリも提供されている:pray:

Jetpackの構成要素(コンポーネント)

image.png

Jetpack という思想に含まれる構成要素は、上記のスクリーンショットからもわかるように色々ある。大きく4種類に分類される。

  • 基盤 (Foundation) Kotlin向けの拡張、テストなど。
  • アーキテクチャ (Architecture) Jetpackの目玉。ViewModelやLiveData、Navigationなど、実践的なアプリでよく使われるパターンが公式にライブラリ化されている。
  • 動作 (Behavior) Androidが提供するサービス(カメラ、通知など)へのより良いアクセス方法。
  • UI UI向けの便利機能。アニメーション、絵文字、フラグメントなど。

「Architecture Components」は、↑の2番目のコンポーネント群のこと。Architecture Component の詳細は後述する。

AndroidXとは?

AndroidX は Android チームが Jetpack 内でのライブラリの開発、テスト、パッケージ、バージョン管理、リリースに使用しているオープンソース プロジェクトです。

AndroidX とは、Jetpack という「思想」のリファレンス実装のようなもの、と解釈した。androidx.* という名前空間のライブラリ群で構成されていている。

たとえば、Jetpack の一部にナビゲーションというコンポーネントがあるが、AndroidX での実装が androidx.navigation ライブラリとして提供されている。

Android のプラットフォーム API (android.*) を基盤にしているが、それとは独立したバージョニングになっている。

Jetpack、AndroidX、プラットフォーム API の関係は以下のようになる(と考えられる)。

Android Jetpack: 思想

↓ リファレンス実装

AndroidX: ライブラリ(androidx.*)

↓ 基盤

Android プラットフォーム API (android.*)

Android Architecture Components

Android アーキテクチャ コンポーネントは、堅牢でテストとメンテナンスが簡単なアプリの設計を支援するライブラリのコレクションです。

Jetpack の一部で、おそらく一番の目玉が Arcitecture Components。関心の分離、ビューモデル、データバインディングなど、「良い」アプリで実践されているアーキテクチャのパターンがまとめられている。

Jetpack の一部なので、Architecture Components 自体は「考え方」の集合。以下のページを見るとわかりやすい。
https://developer.android.com/jetpack/docs/guide

とはいえ考え方だけでなく、それを実現するための実装にもちゃんと触れられている。

Architecture Componentsの始め方

本筋とは若干逸れるが、Architecture Component についてもう少し掘り下げて調べた時の参考資料も載せておく。

まとめ

  • Android Jetpackが一番大きな概念で、Android開発のベストプラクティス集のようなもの。
  • Jetpackはいくつかのコンポーネント群で構成されていて、そのうちの1つのコンポーネント群が Architecture Component。
  • AndroidXは、Jetpackの思想に則って実際にアプリを作るためのライブラリで、いわば「Jetpackのリファレンス実装」のようなものと考えられる。
6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5