The Android Developer Challenge is back! Submit your idea before December 2.

Jetpack Compose

UI 構築のための宣言型ツールキット

Jetpack Compose は、UI 開発をシンプルにするために設計された未バンドルのツールキットです。リアクティブ プログラミング モデルに、Kotlin プログラミング言語の簡潔さと使いやすさを組み合わせています。

コア原則

簡潔でわかりやすい Kotlin

簡潔さ、安全性、Java との完全な相互運用性といった Kotlin のメリットを活かして構築されています。決まり切ったコードの記述を大幅に減らすように設計されているので、アプリのコードに集中でき、あらゆる種類のエラーを未然に防ぎやすくなっています。

宣言型

カスタム レイアウトの描画や作成を含め、UI コンポーネントの定義が完全な宣言型になっています。UI をコンポーズ可能な関数のセットとして記述するだけで、フレームワークが内部的に UI を最適化し、自動的にビュー階層を更新してくれます。

互換性

既存のビューとの互換性が確保されています。Android と Jetpack のすべての API に直接アクセスでき、必要に応じて個別に選択して組み合わせることができます。

美しいアプリ

マテリアル デザインとアニメーションに標準で対応しており、動きのある美しいアプリを簡単に作成できます。

開発の加速

コード量を減らし、Apply Changes やライブ プレビューのようなツールを使用することにより、開発を加速します。

概要

Jetpack Compose は、Android オープンソース プロジェクトで開発中です。主に次の 2 つのコンポーネントがあります。

  • Compose UI ライブラリ: レイアウト、入力、テキスト、アニメーション、スタイル、ウィジェット、グラフィックを備えたコア UI ツールキットです。
  • Compose コンパイラ: コンポーズ可能な関数を解釈して、UI 階層を自動更新するカスタム Kotlin コンパイラ プラグインです。

Compose アプリケーションは、アプリケーション データを UI 階層に変換するコンポーズ可能な関数で構築します。新しい UI コンポーネントを作成するのに必要なのは関数のみです。

関数名に @Composable アノテーションを追加するだけでコンポーズ可能な関数を作成できます。Compose 内部では、カスタムの Kotlin コンパイラ プラグインが使用されており、元になるデータが変更されると、コンポーズ可能な関数が再度呼び出されて変更後の UI 階層が生成されます。次に、画面に文字列を出力する単純な例を示します。

    import androidx.compose.*
    import androidx.ui.core.*

    @Composable
    fun Greeting(name: String) {
       Text ("Hello $name!")
    }
    

Jetpack Compose UI ライブラリは、AOSP のディレクトリ frameworks/support/ui で開発中です。Compose のコンパイラとランタイム コードは frameworks/support/compose にあります。

Compose UI ライブラリ

Jetpack Compose UI ライブラリには、以下のモジュールがあります。

android-text/
Android 固有のテキスト スタックに依存した実装です。
android-view/
既存の Android View に対するラッパーとアダプターです。
animation/
Animation コンポーネントです。
animation-core/
アニメーション システムのための内部宣言です。
core/
プリミティブ、グラフィック、描画などを含んだ、システム全体で使用される基底クラスです。
framework/
システムが構成要素として公開している基本コンポーネントです。Draw、Layout、Text などが含まれます。
layout/
基本レイアウト コンポーネントです。
material/
Material 仕様に従って構築された UI コンポーネントのセットです。
platform/
Android 実装をホスト側のテストから分離できるようにする内部実装です。
test/
テスト フレームワークです。
text/
テキスト エンジンです。