Android アプリ開発用の Google の UI ツールキットである Jetpack Compose は、現在アルファ版です。 Android の標準ビューと完全に相互運用可能です。
アプリの開発には、さまざまな方法があります。 開発対象のプラットフォーム、使用するプログラミング言語などを選択できます。
2019 年の秋に遡ると、Google 紹介された Kotlin を使用して Android で UI を構築するための新しいフレームワーク。 これまでは開発段階にあり、破壊的な変更が頻繁に行われ、不足している機能も多数ありました。 しかし今日、Google は Jetpack Compose をアルファ リリース状態に押し上げました。これは、本番品質のプロジェクトでの使用に一歩近づいたことを意味します。
Jetpack Compose とは何ですか?
Android アプリを構築する場合、通常は 2 つの主要なコンポーネントを処理する必要があります。ロジックベースのものの場合はコードです。 レイアウト用の XML。 デフォルトでは、Android はコードに Java を使用し、レイアウトに独自の XML タグのセットを使用します。
多くの人にとって、特に単純なアプリの場合は、Java と XML で十分です。 しかし、どちらのシステムにも限界と煩わしさがあります。 Kotlin の導入により、 正式 Android 開発用の (そして推奨される) 言語により、Android アプリを作成するコーディング側は間違いなくはるかに簡単になりました。 組み込みの null 保護や拡張関数などの Kotlin の便利な機能を使用すると、コードがすっきりして読みやすくなります。
しかし、Kotlin は Android のレイアウトを何も変更しませんでした。 複雑なレイアウトを作成するには、XML ファイルを作成し、そこでデザインする必要がありました。 これには、コードと XML 間の固有の分離など、いくつかの顕著な欠点があります。 たとえば、コード内に定数文字列がある場合、それを XML から単に参照することはできないため、コード内でその文字列が変更された場合は、XML でも忘れずに更新する必要があります。
Jetpack Compose を入力します。 これは、Android でますます不格好になっている XML レイアウト設計プロセスに対する Google の答えです。 アプリの UI を XML で設計する代わりに、コードから直接行うことができます。 コードベースのレイアウトを作成することは可能ですが、通常は XML よりも保守性が低く、壊れやすいライブラリが含まれます。 一方、Compose は Kotlin 内で直接動作するように設計されており、XML は必要ありません。
Jetpack Compose は、XML レイアウトの標準的な命令型設計からかなり根本的に逸脱しています。 むしろ、開発者にロジックの実装を依存するのではなく、データが変更されると自ら更新する宣言型レイアウトを備えた React や Flutter に似ています。
サポートされている内容
そのため、Jetpack Compose は現在アルファ版です。 それはどういう意味ですか? そうですね、いろいろあります。
ビューとの相互運用性
Kotlin が Java と完全に相互運用できるのと同様に、Jetpack Compose は Android の標準ビューと完全に相互運用できます。 これはかなり多くのことを意味します。
1 つは、必要に応じて Jetpack Compose に移行するのがはるかに簡単になることです。 すべてのカスタム ビューとレイアウトをコンポーザブルに変換する代わりに、Compose で新しいレイアウトとコンポーネントを作成するだけで済みます。 「レガシー」ビューを使用するライブラリがありますが、アプリは Compose で設計されていますか? 問題ない。 ビューをコンポーザブル関数に直接追加できます。 まだ Compose に移行していませんが、コンポーザブルに依存するライブラリを使用したいと考えていますか? 繰り返しますが、問題ありません。 コンポーザブルをレイアウトに直接配置するだけです。
テーマに関しては、レイアウトの相互運用性ほどプラグアンドプレイではありません。 しかし、 Googleがライブラリを作った 標準の XML テーマを Compose 互換テーマに適合させて、物事を一元化し、重複を避けるのに役立ちます。
アニメーション
Jetpack Compose は Android の View フレームワークと同様にアニメーションをサポートしていることを除けば、ここで言うべきことはそれほど多くありません。 思う存分移動、サイズ変更、回転できます。
レイジーリスト
遅延リストは基本的に、Compose 版の RecyclerView です。 必要に応じて項目のみをレイアウトするため、RAM が節約され、パフォーマンスが向上します。 もちろん、これは Compose なので、リストの実装は非常に簡単です。
制約レイアウト
Android のより強力なビューの 1 つは ConstraintLayout です。 これにより、子ビューを相互に相対的に配置、サイズ、重み付けできると同時に、特定のアニメーションが容易になります。 Compose でこの機能が失われるのではないかと心配していたとしても、心配する必要はありません。この機能もここにあるためです。
マテリアル UI コンポーネント
もう 1 つの強力なビューのセットは、Google のマテリアル コンポーネント ライブラリです。 ここに含まれるもののほとんどは、ネイティブの View フレームワークで見つかる標準の View とレイアウトです。 しかし、これらは追加の機能を提供し、テーマ設定を容易にするために調整またはラップされており、Compose にも利用されています。
テスト
アプリ開発の重要な部分はテストです。 単純なアプリの場合は、インストールして使用することでこれを手動で行うことができます。 ただし、より複雑なプロジェクトでは、面倒な作業のほとんどを自動的に実行してくれる自動テスト フレームワークから大きなメリットが得られます。 Jetpack Compose は自動テストをサポートしているため、アプリを可能な限り安定させることができます。
アクセシビリティ機能
アクセシビリティは私たちの社会の重要な部分です。 私たちのテクノロジーにアクセシビリティ機能がなければ、多くの人が電話やテレビなどの恩恵を受けられなくなります。 Jetpack Compose はまだアルファ版であるため、アクセシビリティのサポートは完全ではありませんが、Google は開発中にそれを念頭に置いていて、基本的なサポートはすでに存在しています。
Androidスタジオ
ただし、Jetpack Compose のすべての機能が Jetpack Compose 自体に含まれているわけではありません。 Android Studio と Kotlin には、作曲を容易にするためのプラグインと拡張機能もあります。
Kotlin コンパイラ プラグイン
Kotlin JVM と同様に、Android Studio には Compose 関数を Android が実際に理解して従うことができるコードに適切に変換するコンパイラ プラグインがあります。
インタラクティブなプレビュー
標準の XML レイアウトと同様に、Android Studio には Jetpack Compose のレイアウト プレビューが付属しています。 現在のところ、いくつかの点で XML プレビューほど便利ではありませんが、プロジェクトをビルドする必要があります。 プレビューを更新し、専用のプレビュー機能を作成します。これには、インタラクティブであるという 1 つの注目すべき利点があります。 プレビュー。
インタラクティブプレビューは通常のプレビューですが、 相互の作用. クレイジー、私は知っています。 ただし、これが意味するのは、コンポーザブルをデプロイしなくても、実際にテキスト ボックスにテキストを入力したり、ボタンをクリックしたり、コンポーザブルを操作したりできるということです。
単一のコンポーザブル展開
レイアウトを実際に展開 (インストール) して、実際のデバイスでどのように動作するかを確認したい場合は、この機能が役に立つかもしれません。 通常の XML レイアウトの場合、実際の世界でレイアウトがどのように機能するかを確認するには、アプリ全体を構築してインストールする必要があります。 テストしたいレイアウトが主画面にない場合は、そのレイアウトに到達するために何度もタップすることになる可能性があります。
そこで、単一のコンポーザブルのみをデプロイする機能が役に立ちます。 アプリを構築してインストールしてから、テストしているレイアウトに移動する代わりに、レイアウトをデプロイするだけで済みます。 Android Studio は、デプロイしたコンポーザブルを表示するだけのラッパー アクティビティを生成して開きます。 これにより、テストと設計が大幅に迅速化され、要素の相互作用に関連する問題を切り分けるのにも役立ちます。
コード補完
あなたの IDE にコード補完がない場合、それは IDE ですらありますか? いいえ、そうではありません。 したがって、もちろん、Android Studio は Jetpack Compose の完全なコード補完をサポートしています。
これが Jetpack Compose によってもたらされるすべてではありませんが、上記の機能と動作は、Google がこのフレームワークにどれほど強力なものを望んでいるかを示しています。 そして、まだアルファ版ではありますが、以前の「開発」ステータスよりも一歩進んでいます。 Jetpack Compose の使用を控えていた場合 (私もそうでした)、今がもう一度試してみる時期かもしれません。