Android Jetpack・AndroidXとは何なんですか?って話【Androidアプリ開発】
Android Jetpackとは?
Android Jetpackって何なの?っていう所からJetpackとAndroidXのAPI位置付けとバージョンの見方やJetpackの機能について解説しています。
Android Jetpackとはアプリ開発するための最新の設計方式で作られている機能の集合体(コンポーネント)の総称です。各機能や処理の考え方が最新の方式で、今ある方式よりも簡単に書けるように設計されています。2018年に提供が開始され下記の特徴が有ります。
- 下位互換を実現
- Kotlinが活用されているので生産性があがる
- クラッシュやメモリリークを抑えた堅牢な設計が可能
- AndroidプラットフォームAPIとは独立して開発されるので頻繁に更新される
- バックグラウンドタスク、ナビゲーション、ライフサイクル管理などのアクティビティを管理してくれる
APIの位置付け
Android JetpackはAndroid プラットフォームAPIとは分離されていてAndroidXのAPIで構成されています。つまりAndroidXはJetpackでもあります。

Jetpackコンポーネントはそれそれが独立していて個別に使ったり、他のコンポーネントと連動させて使います。中にはKotlinで作られたコンポーネントが存在しますが、Javaとの相互運用する仕組みがあるのでJavaでも使えます。
またAndroid APIと同じ機能を持つものがあります。両方使えますが(正確には使えたり廃止されてたりします)これから始めるならJetpackを意識した開発をすると良いと思います。Web上では古い記事とかも沢山あるのでimport文のとこで[androidx.~]って書いてあったら新しいんだなと思って下さい。それから、Jetpackはリリース段階があり正式版以外は公開出来ないので注意が必要です。ローカル内で使う分には大丈夫です。
Jetpackのリリース段階と依存関係
Jetpackは正式リリース前に3段階のリリースバージョンを経ています。バージョン表記の所を見ればそれが何版かがわかるようになっています。また各リリースバージョンは他のJetpack機能(API)を使う時に依存関係を意識する必要があります。
①アルファ版 | バージョン表記例:1.3.0-alpha01 機能的に安定しているが、機能が完成していないことがある。APIが追加、削除、変更される事がある。 |
②ベータ版 | バージョン表記例:2.0.0-beta4 機能的に安定しているが、バグが存在する可能性がある。試験運用版コンパイラの機能は利用できません。 依存関係:ベータ版かRC版か安定版 |
③リリース候補(RC)版 | バージョン表記例:1.3.0-rc01 リリース直前のバージョン。重要な修正がされる事がある。 依存関係:RC版か安定版 |
④正式版(安定版・リリース版・製品版) | バージョン表記例:1.1.3 基本的にはこれを使います。 |

すでに正式版となってる物の上位バージョンのアルファ版~RC版が存在します。公開用のアプリなら正式版の方を使います。例えば下図の例だと、ConstraintLayoutには1.1.3の正式版があり、他に2.0.0ベータ版が存在してる場合、1.1.3の正式版を使います。正式版がまだ出ていないCameraとCarは公開用アプリでは使えません。

現在、Jetpackの新機能でJetpack Composeというのが開発中ですがこちらのバージョンは[0.1.0-dev13]となっています。[0.1.0]なんでバージョン1にもなっていないですね。位置付け的にはアルファ版にもなっていない状態なんだと思います。多分・・・こういうのもありますよ、ということで数字の横に何か英字があったら正式版ではないんだなと思って下さい。
Jetpackの主要機能
Jetpackは今あるSupport Library、Architecture Componentsの機能を統合していて主に4つのカテゴリー分類されます。
- Foundation(基盤)
- Architecture(基本設計)
- Behavior(動作)
- UI(ユーザーインタフェース)
Foundation(基盤)
下位互換、Kotlinサポート、セキュリティ強化など基盤のコンポーネントがあります。
Android KTX | Kotlinの拡張機能セット。Android APIの共通ライブラリ・Collection・FragmentやJetpackの機能がKotlin用に提供されています。 |
App Compact | アクションバーの下位互換を実現します。(旧サポートライブラリ。まだ使えますが・・・) |
Android Auto | 車内搭載アプリ開発用。 |
ベンチマーク | ベンチマークテストを行う。 |
multidex | アプリのメソッドの数が65536を超えるとビルドエラーが発生しますがそれを回避します。 |
セキュリティ | 保存データの読取り・書込みや鍵の作成などの仕組みのセキュリティ面が強化されてます。 |
テスト | アプリを単体テスト・UIテストする機能。 |
Android TV | Android TVアプリ開発用。 |
Wear OS | Wear OS開発用。 |
Architecture(基本設計)
新しいライフサイクルの仕組みによって、画面管理やデータのやりとりなどが堅牢でメンテナンスが楽になるように設計されています。
Data Binding | バインディングは何かと何かを結びつけるという意味。データの内容をXMLで記述し、コード側ではXMLの属性を呼び出す様に記述する。データとコードを分離してプログラミングする仕組み。この仕組みによってコード側の記述が少くなります。 |
Lifecycle | 画面(アクティビティとフラグメント)を管理する新しい仕組み。従来のライフサイクルの呼び出しの回数が多くなる、競合が発生、コード量が多くなるなどの問題を解決してくれます。メンテナンスを楽にして軽量のコードを作成する事ができます。 |
LiveData | データが更新されたときにビューに通知するデータオブジェクトを作成する機能。 新しいライフサイクルによって、アクティビティ・フラグメント・サービスなどが管理されアクティブな状態のデータのみを更新します。 |
Navigation | アプリ内の画面遷移とナビゲーションを管理する機能。 |
Paging | 部分的なデータを必要に応じて読み込む。この機能によってネットワーク帯域幅とシステムリソースの使用量を削減できます。 |
Room | SQLiteデータベースのアクセスを安定させてSQLiteを最大限に活用できる機能。 |
ViewModel | アプリ回転時にUI関連のデータを破棄しない仕組みで保存します。従来の方法ではアプリ回転時に画面情報が破棄されてしまい再作成する処理が必要でした。また実行に時間がかかる非同期呼び出しを頻繁に行っていました。これらの問題を解決しています。 |
WorkManager | アプリの終了やデバイスが再起動した場合でも実行することが可能な非同期タスクのスケジュールを簡単に設定できます。 |
Hilt | Dependency Injection(DI)の新しい仕組み。現在はまだ開発中です。 |
Behavior(動作)
CameraX | 下位互換を備えたカメラ機能開発用。 |
ダウンロードマネージャー | ダウンロードのスケジュール設定と管理を行います。 |
メディアと再生 | 下位互換を備えたオーディオや動画再生のアプリ開発用。 |
通知 | 下位互換を備えた通知機能。WearOSとAndroid Autoにも対応しています。 |
権限 | 下位互換を備えたアプリの権限の確認とリクエストを行います。 |
設定 | ユーザーの設定画面を簡単に作成する機能。 |
共有 | 他のアプリと共有するデータのやりとりをする機能。 |
スライス | アプリデータをWebや動画・画像など他のコンテンツで表示できる機能 |
UI(ユーザーインタフェース)
アニメーションと遷移 | ビューに動きを持たせてアニメーション化する機能。 |
絵文字 | 下位互換を備えた絵文字機能。 |
Fragment | 画面を制御する仕組みの一つ。 |
レイアウト | ビューを画面に配置する機能。 |
Palette | カラーパレットの機能。 |
Jetpack Compose | UIライブラリ。XMLレイアウトの代わりになる構成可能な関数を使用してUIコンポーネントを定義します。現在は開発中の段階です。 |
Material Components | スタイル、ブランディング、相互作用、モーションを統合したマテリアルデザインを実装する。 |
ディスカッション
コメント一覧
まだ、コメントがありません