Android Jetpack
Jetpack はライブラリ スイートです。ベスト プラクティスを取り入れ、ボイラープレート コードを減らし、Android バージョンやデバイスが変わっても一貫して機能するコードの作成を助け、コーディングの負担を軽減します。
Jetpack の使い方を学ぶ
基礎トレーニング
「Compose を用いた Android アプリ開発の基礎」コースで重要な Jetpack ライブラリについて学び、アプリのボイラープレートを削減する
実践的なチュートリアル
データレイヤを簡素化する 3 つの Jetpack ライブラリ(LiveData、ViewModel、Room)を使ってみましょう。
Now in Android サンプルアプリ
最新の Android アーキテクチャが実際のアプリに実装される方法を確認します。
Jetpack ライブラリ ライブラリをすべて表示
* 人気のライブラリや頻繁に使用されるライブラリを先に表示しています
activity * | アクティビティの上に構築されるコンポーズ可能な API にアクセスします。 |
appcompat * | プラットフォームの古い API バージョン(多くの API がマテリアル デザインを使用)で新しい API にアクセスできるようにします。 |
appsearch * | ユーザー向けにカスタムのアプリ内検索機能を構築します。 |
camera * | モバイル カメラアプリを構築します。 |
compose * | 形状とデータの依存関係を記述するコンポーズ可能な関数を使用して、UI をプログラムで定義します。 |
databinding * | 宣言形式を使用して、レイアウト内の UI コンポーネントをアプリ内のデータソースにバインドします。 |
fragment * | アクティビティ内でホストされる複数の独立した画面にアプリを分割します。 |
hilt * | Dagger Hilt の機能を拡張して、androidx ライブラリから特定のクラスの依存関係インジェクションを可能にします。 |
lifecycle * | アクティビティまたはフラグメントの現在のライフサイクル状態に基づいて動作を調整できるライフサイクル対応コンポーネントを構築します。 |
マテリアル デザイン コンポーネント * | Android 用のモジュール式でカスタマイズ可能なマテリアル デザイン UI コンポーネント。 |
navigation * | アプリ内 UI の構築と構造化、ディープリンクの処理、画面間の移動を行います。 |
paging * | データをページに読み込み、RecyclerView に表示します。 |
room * | SQLite データベースに支えられた永続的なデータを作成、保存、管理します。 |
test * | Android でテストを実施します。 |
work * | 延期可能な制約ベースのバックグラウンド タスクをスケジューリングして実行します。 |
ads | Play 開発者サービスの有無にかかわらず、広告 ID を取得します。 |
annotation | ツールと他のデベロッパーがアプリのコードを理解するのに役立つメタデータを公開します。 |
arch.core | LiveData で使用できる JUnit テストルールを含む、他の arch 依存関係のヘルパー。 |
asynclayoutinflater | UI でジャンクが発生しないように、レイアウトを非同期でインフレートします。 |
autofill | ヒントを拡張して自動入力の精度を高めます。 |
benchmark | Android Studio 内でコードのパフォーマンスを正確に測定します。 |
biometric | 生体認証システムまたはデバイス認証情報で認証を行い、暗号オペレーションを実行します。 |
Bluetooth | 下位互換性のある API で Android プラットフォームの Bluetooth 機能を使用する。 |
browser | ユーザーのデフォルト ブラウザにウェブページを表示します。 |
car-app | Android Auto と Android Automotive OS 用のテンプレート化されたアプリを作成します。 |
cardview | 丸い角とドロップ シャドウを使用したマテリアル デザイン カードパターンを実装します。 |
collection | 小規模な既存のコレクションおよび新しいコレクションのメモリへの影響を軽減します。 |
compose.animation | Jetpack Compose アプリ内でアニメーションを作成して、ユーザー エクスペリエンスを高めます。 |
compose.compiler | @Composable 関数を変換し、Kotlin コンパイラ プラグインで最適化を有効にします。 |
compose.foundation | すぐに使用できるビルディング ブロックで Jetpack Compose アプリを作成し、基盤を拡張して独自のデザイン システム要素を構築します。 |
compose.material | すぐに使用できるマテリアル デザイン コンポーネントで Jetpack Compose UI を構築します。Compose の上位レベルのエントリ ポイントであり、www.material.io のガイドラインと適合するコンポーネントを提供するように設計されています。 |
compose.material3 | マテリアル デザインの進化版であるマテリアル デザイン 3 コンポーネントで Jetpack Compose UI を構築します。マテリアル 3 には、最新のテーマ設定とコンポーネント、ダイナミック カラーなどの Material You のパーソナライズ機能が含まれており、Android 12 の新しい視覚的スタイルとシステム UI と調和するように設計されています。 |
compose.runtime | Compose のプログラミング モデルと状態管理の基本ビルディング ブロックと、Compose コンパイラ プラグインがターゲットとするコアランタイム。 |
compose.ui | レイアウト、描画、入力など、デバイスの操作に必要な Compose UI の基本コンポーネント。 |
concurrent | コルーチンを使用してメインスレッドからタスクを移動し、ListenableFuture を活用します。 |
constraintlayout | 相対位置を使用して、ウィジェットの位置とサイズを柔軟に調整します。 |
contentpager | バックグラウンド スレッドで ContentProvider データの読み込みとページングを行います。 |
coordinatorlayout | AppBarLayout や FloatingActionButton など、最上位のアプリ ウィジェットを配置します。 |
core | 最新のプラットフォーム機能と API をターゲットにしつつ、古いデバイスもサポートします。 |
core.uwb | サポート対象のデバイスに超広帯域無線(UWB)を実装します。 |
credentials | このライブラリはユーザーの認証情報への統合アクセスを提供します。パスワード、パスキー、フェデレーションの認証情報などが含まれます。このライブラリは、シームレスで安全なログイン エクスペリエンスを提供する際に使用します。 |
cursoradapter | カーソルデータを ListView ウィジェットに公開します。 |
customview | カスタムビューを実装します。 |
datastore | 一貫性のある、トランザクションとしてのデータの保存を非同期で行い、SharedPreferences の欠点の一部を解消します。 |
documentfile | ファイル ドキュメントを表示します。 |
draganddrop | 別のアプリからの、またはアプリ内でのドラッグ&ドロップデータを受け入れ、一貫したドロップ ターゲット アフォーダンスを表示します。 |
drawerlayout | マテリアル デザインのドロワー ウィジェットを実装します。 |
dynamicanimation | 物理理論を取り入れたアニメーション API で、スムーズなアニメーションを作成します。 |
emoji | 現在のデバイスと古いデバイスで絵文字を表示します。 |
emoji2 | 現在のデバイスと古いデバイスで絵文字を表示します。 |
enterprise | エンタープライズ対応アプリを作成します。 |
exifinterface | 画像ファイルの EXIF タグの読み取りと書き込みを行います。 |
games | アプリ内で Android Game SDK をネイティブに使用して、フレーム ペーシングなどの複雑なゲームタスクを実行します。 |
glance | Jetpack Compose スタイルの API を使用して、リモート サーフェスのレイアウトを作成します。 |
graphics | 複数の Android プラットフォーム リリースでグラフィック機能を利用します |
gridlayout | グリッド レイアウトを実装します。 |
health | プラットフォームに依存しない方法で高性能のヘルスケア アプリを作成します。 |
health.connect | ユーザーの健康状態やフィットネスの記録をデベロッパーが読み取り/ 書き込みできるようにします。 |
heifwriter | 利用可能なコーデックを Android デバイスで使用して、画像または画像コレクションを HEIF 形式でエンコードします。 |
input | 今後の MotionEvents を予測して、入力インタラクションのレイテンシを短縮します |
interpolator | 古いプラットフォームでアニメーション インターポレータを使用します。 |
javascriptengine | Android アプリで JavaScript を評価できるようにします。 |
jetifier | 非推奨のサポート ライブラリに対するライブラリの依存関係を同等の AndroidX 依存関係に移行するスタンドアロン ツール。 |
leanback | このアーティファクトの代わりに Compose for TV を使用してください。 |
legacy | このアーティファクトとそのクラスは非推奨になりました。Android 8 以降、バックグラウンド チェックの制限により、このクラスは有用でなくなりました。 |
lint | Gradle API の使用状況を検証する lint チェック |
loader | 設定の変更後も保持される UI のデータを読み込みます。 |
localbroadcastmanager | このアーティファクトとそのクラスは非推奨になりました。代わりに、LiveData ストリームまたはリアクティブ ストリームを使用してください。 |
media | メディアのコンテンツとコントロールを他のアプリと共有します。media2 が優先されます。 |
media2 | メディアのコンテンツとコントロールを他のアプリと共有します。 |
media3 * | メディアのユースケースのサポート ライブラリ。 |
mediarouter | 共通のユーザー インターフェースを使用して、リモートの受信デバイスでメディアの表示と再生を有効にします。 |
multidex | 複数の dex ファイルを使用するアプリを Android 5 より前のデバイスにデプロイします。 |
metrics | アプリのさまざまなランタイム指標を追跡して報告します |
palette | 画像から代表的なカラーパレットを抽出します。 |
アプリ内に PDF の表示機能を追加するためのライブラリ。 | |
percentlayout | このアーティファクトとそのクラスは非推奨になりました。代わりに、ConstraintLayout と関連レイアウトを使用してください。 |
preference | デバイス ストレージの操作や UI の管理なしで、インタラクティブな設定画面を構築します。 |
アプリから、写真、ドキュメント、その他のグラフィックと画像を印刷します。 | |
privacysandbox.activity | TODO |
privacysandbox.ads | このライブラリにより、Android 版プライバシー サンドボックスの一部であるプライバシー保護 API との統合が可能になります。 |
privacysandbox.plugins | Android プライバシー サンドボックス SDK ライブラリ Gradle プラグイン |
privacysandbox.sdkruntime | このライブラリは SdkRuntime 対応コンシューマ用のコンポーネントを提供します。 |
privacysandbox.tools | Android でプライバシー サンドボックス機能を活用するためのライブラリ。 |
privacysandbox.ui | TODO |
profileinstaller | ART によって読み取られる事前コンパイル トレースをライブラリが事前取り込みできるようにします。 |
recommendation | Android TV ランチャーのホーム画面におすすめのコンテンツを表示します。 |
recyclerview | メモリ使用量を最小限に抑えつつ、大規模なデータのセットを UI に表示します。 |
remotecallback | デベロッパーが PendingIntent を提供しやすくするためのラッパーを作成します。 |
resourceinspection | Android Studio の Live Layout Inspector にカスタムビューの属性を表示します。 |
savedstate | プロセスの終了時に UI の状態を保存し、プロセスの再開時にその状態を復元するプラグイン可能なコンポーネントを作成します。 |
security | 鍵を安全に管理し、ファイルと sharedpreference を暗号化します。 |
sharetarget | ショートカットを直接共有ターゲットとして使用するための下位互換性を提供します。 |
slice | テンプレート化された UI 要素をアプリ外で表示します。 |
slidingpanelayout | スライディング ペイン UI パターンを実装します。 |
startup | アプリの起動時にコンポーネントを初期化する簡単で効率的な方法を実装します。 |
sqlite | ローカル SQLite データベースを操作します。可能であれば、代わりに Room を使用してください。 |
swiperefreshlayout | スワイプで更新する UI パターンを実装します。 |
test.uiautomator | クロスアプリで機能する UI テスト用のフレームワークです。 |
textclassifier | テキスト内の会話、リンク、選択内容などの構造を識別します。 |
tracing | トレース イベントをシステム トレース バッファに書き込みます。 |
transition | 開始レイアウトと終了レイアウトで UI のモーションにアニメーションを付けます。 |
tv | テレビ用のアプリを作成するための Compose とマテリアル デザインの機能をデベロッパーに提供します。 |
tvprovider | Android TV のチャンネルを提供します。 |
vectordrawable | ベクター グラフィックをレンダリングします。 |
versionedparcelable | 安定したコンパクトなバイナリ シリアル化形式を提供します。この形式は、プロセス間で渡すことも安全に永続化することもできます。 |
viewpager | ビューまたはフラグメントをスワイプ可能な形式で表示します。可能であれば、代わりに viewpager2 を使用してください。 |
viewpager2 | ビューまたはフラグメントをスワイプ可能な形式で表示します。 |
wear | Wear OS by Google スマートウォッチ向けのアプリを作成します。 |
wear.compose | ウェアラブル固有のデバイス、サイズ、形状、ナビゲーション操作をサポートする機能を提供して、ウェアラブル デバイス向けの Jetpack Compose アプリを作成します。 |
wear.protolayout | このライブラリを使用すると、リモート サーフェスでレンダリング/評価される UI レイアウトと非 UI 式のセットを定義できます。 |
wear.tiles | Wear OS by Google スマートウォッチ向けのアプリを作成します。 |
wear.watchface | Wear OS by Google スマートウォッチ向けのアプリを作成します。 |
webkit | Android 5 以上で、最新の WebView API を操作します。 |
window | 折りたたみ式デバイスなど、さまざまなデバイス フォーム ファクタをサポートできるようにします。 |
window.extensions.core | Window Manager ライブラリ拡張機能のコア API。 |
新機能
- Compose 2023 年 8 月
- Jetpack Compose 1.5.0 は安定版になり、パフォーマンスが大幅に改善されました。たとえば、「Clickable」などの高レベルの修飾子のリファクタリングにより、コンポーズ時間を 80% 短縮できます。2023 年 8 月の Compose では、メモリ割り当て(特にグラフィック スタック)が最大 70% 改善され、デバイス上の Compose のメモリ使用量が削減されます。
- Wear Compose と Tiles 1.2
- Wear OS デベロッパーのエクスペリエンスを向上させるため、Wear Compose と Wear タイルはどちらも安定版に移行しました。これらは互いに補完し合うため、Wear Compose を使用して Wear デバイスで複雑なアプリ画面を作成し、Wear タイルを使用してアプリタイルを作成できます。新しい Wear Compose リリースには、エキスパンド アイテムやスワイプでの表示などの新機能が含まれています。Wear Tiles のリリースでは、ウィジェット アニメーションとプラットフォーム データ バインディング(健康に関するデータソースなど)もサポートされるようになりました。
- ウィンドウ 1.1
- 1.1 ではアクティビティの埋め込みの API が安定しており、WhatsApp、eBay、Temu などのアプリで大画面レイアウトを実装できます。この API は機能が充実しており、分割画面の動作の変更、実行時の分割状態の確認(および変更)、水平分割の実装、フル ウィンドウでのモーダルの開始が可能になります。
- リリースノート
- 詳しくは、リリースノートをご覧ください。
Android Jetpack を使用する理由
おすすめの方法を実践する
Android Jetpack ライブラリは最新の設計プラクティスに基づいており、下位互換性を備え、クラッシュやメモリリークを最小限に抑えます。
ボイラープレート コードを減らす
Android Jetpack はバックグラウンド タスク、ナビゲーション、ライフサイクル管理などの煩雑な設定を削減でき、アプリの基幹機能に開発リソースを集中することができます。
断片化を軽減する
Android のバージョンやデバイスを問わず一貫して動作するライブラリにより、複雑さを軽減できます。