この記事は Karen Ng、Jacob Lehrbaum による Android Developers Blog の記事 "What's new for Android developers at Google I/O" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android デベロッパーの皆さんは、世界中の人々を喜ばせるエクスペリエンスを作り出そうと日々努力を重ねています。人々がこれまでになくアプリを必要としている今、期待も大きくなり、デベロッパーとしての仕事の難易度も高まっています。私たちは Google I/O で、デベロッパーの皆さんをサポートするためにリリースした新機能をいくつか発表しました。過去最大級のデザイン変更を行った Android 12 や、高品質の優れたアプリ開発をサポートする Jetpack、Jetpack Compose、Android Studio、Kotlin などです。また、ウェアラブルデバイスや大画面対応が進むデバイスを通して、ユーザーによるアプリの使用シーンを広げるお手伝いをしています。こちらの Developer Keynote でもカバーしていますが、この記事でいくつかをハイライトしてご紹介します。
Android 12 は最初のベータ版のロールアウトがはじまったばかりですが、素晴らしい機能が満載です。ユーザーの安全のための機能である、Bluetooth や推定位置情報の利用許可、優先ジョブやスタートアップ アニメーションなどといったパフォーマンスの改善、よりインタラクティブなウィジェットやストレッチ オーバー スクロールなどの楽しいエクスペリエンスまで、このリリースで Android は過去最大級のデザイン アップデートをしています。
Android 12 Beta 1 の内容の詳細についてはこちらをご覧ください。内容をご確認いただき、年内公開のコンシューマ リリースに向けて、アプリの準備を始めてください。今すぐベータ版をダウンロードして、あなたのアプリでお試しください。
ここ数年間、私たちは Android 開発エクスペリエンスを進化することに取り組んできました。デベロッパーの皆さんのフィードバックに耳を傾け、フィードバックにオープンであり続けました。それが、Android の特徴だからです。しかしながら、自分たちが正しいと信じることに関しては、妥協しないよう心がけてきました。このことは、Android Studio(デベロッパーに合わせることができる高性能 IDE) 、Kotlin(より少ないコードでより多くのことを実現できるプログラミング言語)、Jetpack ライブラリ(後方互換性でモバイルに関連する最も難しい問題を解決するライブラリ)を通して、おわかりいただけるでしょう。
このオファリングの次のステップは Jetpack Compose、あらゆる Android デバイス向けの優れたアプリを簡単に構築できる最新 UI ツールキットです。私たちは、ここ Google I/O で 2 年前に Compose を発表し、それ以来新しいバージョンを公開しながら強化を重ね、フィードバックに耳を傾け、反映させてきました。今年はじめに公開した Compose Beta 版 では、世界中のデベロッパーの皆さんが、すばらしく革新的なエクスペリエンスを提供するアプリを通常の半分ほどの時間で作り出すことも実現されています(株式会社メルカリのケーススタディ)。また、Compose を使ったコンテストである #AndroidDevChallenge へのデベロッパーの皆さんからの熱い反響に、私たちはとても感動しました!
次回の Material You のアップデート(詳細はこちら)では、新しい マテリアル コンポーネントを追加し、大画面に対応する開発をさらにサポートする予定です。短期間で楽に素晴らしい UI を作成できるようになります。Compose のテストは最後の追い込み中です。1.0 Stable は 7 月にリリース予定です。ご準備ください。
公式の強力な Android IDE の最新リリース、Android Studio Arctic Fox (2020.3.1) Beta が、2021 年 5 月 19 日(現地時間 5 月 18 日)に公開されました。より楽に、より短期間で良質なアプリを開発できるようデベロッパーをサポートする IDE です。このツールスイートを提供しアップデートすることで、私たちは 3 つの主要テーマを強化してきました。そのテーマとは、UI 設計期間の短縮、新しいデバイスへのアプリ拡張、デベロッパーの生産性向上です。この最新リリースと Compose を合わせて使うことで、最新の UI を作成することができます。複数のデバイスでのテスト結果をご覧ください。そして App Inspector で、デバッグ データベースとバックグラウンド タスクを最適化してください。また、Accessibility Scanner (ユーザー補助検証ツール)を用いるとアプリがより使いやすく、Memory Profiler を用いるとアプリがより高性能になります。開発期間短縮のため、Android Gradle プラグイン 7.0、新しい DSL、さまざまな API を用意しました。Android Studio アップデートの詳細についてはこちらをご覧ください。
最近の調査によると、Kotlin はいまや、プロの Android デベロッパーに最も使われている第 1 言語です。実際、Google Play Store の 120 万以上のアプリで Kotlin が使用されています。これには、トップ 1000 アプリの 80% が含まれます。Google でも、Kotlin は愛されています。Drive、Home、Maps、Play など 70 以上の Google アプリで Kotlin が使用されています。そして Kotlin の注釈処理のために新しく作られた、まったく新しいネイティブソリューション、Kotlin Symbol Processing が本日リリースされました。Kotlin のコードを直接解析するための、強力だがシンプルな API です。Room のようなライブラリで最大 2 倍の速度を誇ります。
Android Jetpack で開発されたライブラリ スィートを利用すると、ボイラープレート コードが減り、本来のコードに集中することができます。現在、トップ 10,000 アプリの 84% 以上で Jetpack ライブラリが使用されています。そして 5 月 19 日(現地時間 5 月 18 日)、Jetpack 向けの新リリースがいくつか公開されました。アプリをリリースする前にアプリの起動に影響を与える大きなインタラクションやジャンクを把握するための Jetpack Macrobenchmark(Alpha)、Jetpack DataStore(Beta)を介してデータをより効率良く維持するための新しい Kotlin Coroutines API などです。Android Jetpack のアップデートの詳細についてはこちらをご覧ください。
最新の Android 開発環境を構築する上で、私たちが心掛けているもっとも大事なことは、これらのツールを提供することで 皆さんがより容易に Android の次の時代を切り開いていけるようにするということです。そしてそれは、電話と各種デバイス(テレビ、自動車、時計、タブレット)が接続し、連携することで生まれる新たな世界を実現することに他なりません。
今日 5 月 19 日(現地時間 5 月 18 日)から私たちは、ウェアラブルにむけて大きな一歩を踏み出します。まず、Samsung と合同で Wear と Tizen の長所を組み合わせた統合プラットフォームを構築すると発表しました。次に、刷新した Google アプリによる新しいコンシューマ エクスペリエンスをベストプラクティスとして共有しました。3 つめとして、Fitbit の世界クラスの健康フィットネス サービスをプラットフォームに取り入れることにしました。これは、Android デベロッパーにとっては、手が届く範囲が広がること、そしてモバイルアプリを素晴らしいものとする既存のスキル、ツール、API のすべてを使えることを意味します。結果として、世界中の人に使われる単一のウェアラブルプラットフォームが構築されるのです。
Wear 向けの新しい Jetpack API は、小型スクリーン用に調整し、バッテリーの寿命を伸ばすために設計しました。Jetpack Tiles API を使えば、Wear エコシステムの中のあらゆるデバイス向けカスタムタイルを作成できます。他にも Wear での開発を支援する新しい機能がたくさんあります。Samsung と共同してつくられた健康フィットネス向けの新しい API セットを使用すると、センサーやメトリクス計算のデータ コレクション(心拍数、カロリー、毎日の移動距離など)が、1 つの信頼できるデータソースから取得された、無駄のない、一貫性を持った、正確なデータになります。これらすべてが新しいツールにまとめられて、Android Studio Arctic Fox Beta でリリースされています。アプリをテストするための簡易なペアリングや、エミュレータでの仮想の心拍数センサーまで揃っています。アプリが配信されたら、ユーザーは、大きくアップデートされアプリの見つけやすさも向上した Google Play で、 より容易に Wear アプリの世界を楽しむことができます。Wear アップデートの詳細については、こちらをご覧ください。
タブレット、折りたたみ式デバイス、Chrome OS ノートパソコンなど、スマホのコンテンツをより大きな画面で体験するユーザーが増えています。人々は、家族や友人とのつながりを保ったり、学校に行ったり、リモートワークしたりする目的で、大型画面デバイスにますます依存するようになっています。実際に使用されている大型画面の Android デバイスは 2 億 5000 万台を超えています。Chrome OS は昨年、PC 市場の成長率の 5 倍、前年比で +92% 成長しました。その結果、Chrome OS は最速の成長を遂げて、2 番目に人気のデスクトップ OS になりました。この機会を掴むべく、大型画面でのエクスペリエンスをより簡単に最適化するための API と各種ツールを用意しました。たとえば、SlidingPaneLayout 1.2.0 と新しい垂直ナビゲーション レール コンポーネントを使うと大きくなった空間に合わせてコンテンツのサイズが自動調整されます。コンポーネントの幅を最大化することで UI が間延びしないようにします。また、プラットフォーム、Chrome OS、および Jetpack windowmanager がアップデートされたため、デフォルトでもアプリが問題なく動作します。詳細についてはこちらをご覧ください。
以上のことは、高品質の Android アプリを構築しやすくする、新しい方法のほんの一部です。5 月 19 日(現地時間 5 月 18 日)以降、私たちは Android と Google Play に関するテクニカル セッションを 20 以上公開し、バックグラウンド タスク、プライバシー、Android における機会学習、Android 12 に備えるトップ 12 のヒントなど、さまざまなトピックを扱います。自動車、テレビ、ウェアラブルの構築を担当する方のためのセッションもあります。こうしたセッションなどのすべての情報は、I/O の Web サイトにあります。今年の Google I/O では、セッションやニュースだけでなく、Google 関係者や他のデベロッパーとバーチャルにつながることができる楽しい仕掛けがたくさんあります。I/O Adventure の Android ドームをチェックしてください。新しいブログ投稿、ビデオ、コードラボなどをご覧いただけます。Jetpack Compose スキルを試したり、ドーム内部の自動車を巡るバーチャルツアーにもご参加ください!(注:会期外でアクセスできないプログラムがありますのでご了承ください)
Reviewed by Yuichi Araki - Developer Relations Team and Tamao Imura - Developer Marketing Manager, Google Play
この記事は Anna-Chiara Bellini、Nick Butcher による Android Developers Blog の記事 "Announcing Jetpack Compose Beta!" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
2021 年 2 月 24 日(日本時間 2 月 25 日)、Jetpack Compose のベータ版をリリースしました。新しい UI ツールキットである Jetpack Compose は、すべての Android プラットフォームでネイティブ アプリを高速かつ簡単に開発できるようにすることを目指して設計されています。Compose が提供するのは、最先端の宣言型 Kotlin API です。これにより、少ないコードで美しくレスポンシブなアプリを作ることができます。Compose は既存の Android アプリや Jetpack ライブラリに組み込めるので、Android のビューと Compose を組み合わせながら、自分のペースで採用できます。
今回のベータ版リリースで Compose の API は確定版になりました。これで本番向けのアプリを構築する際に必要な機能がすべてそろったことになります。ベータ版には、API が安定したという意味合いもあります。つまり、API が変更されたり、削除されたりすることはありません。Compose を学び始め、今後のプロジェクトや機能にどう活用するかについて計画を立てるには、今が絶好の機会です。Compose は今年中に 1.0 に到達する予定です。
Compose チームは、コミュニティの皆さんからのフィードバックも取り入れて、オープンに開発を進めています。2019 年に開発をオープンソース化して以来、30 回のパブリック リリースを行い、外部から寄せられた 700 個以上のバグに対応し、200 件以上の外部からのコントリビューションを受け入れました。皆さんに Compose を使ってアプリを開発していただくことはとても嬉しいことで、いただいたフィードバックや機能リクエストは API の微調整や作業の優先順位を付けることに役立っています。アルファ版リリース以降も、たくさんの機能を追加または改善しています。
ベータ版リリースでは、API の完全性を確保することに重点を置いています。つまり、1.0 やその先に向けて、土台となる API を提供することです。今後は、1.0 リリースに向けてこれらの API の機能を安定させる作業を進める予定です。アプリのパフォーマンスとユーザー補助機能には、特に重点を置いています。
最新の Android Studio Arctic Fox Canary 版は Compose ベータ版をサポートしており、たくさんの新しいツールも搭載しています。
🆕 ライブ リテラル: デバイスやエミュレータで、プレビューのリテラルをリアルタイムにアップデート🆕 アニメーション プレビュー: アニメーションの調査と再生🆕 Layout Inspector の Compose サポート🆕 インタラクティブ プレビュー: Composable を切り離して調査や操作が可能🆕 デプロイ プレビュー: アプリ全体をデプロイすることなく、デバイスに Composable をデプロイ
🆕 ライブ リテラル: デバイスやエミュレータで、プレビューのリテラルをリアルタイムにアップデート
🆕 アニメーション プレビュー: アニメーションの調査と再生
🆕 Layout Inspector の Compose サポート
🆕 インタラクティブ プレビュー: Composable を切り離して調査や操作が可能
🆕 デプロイ プレビュー: アプリ全体をデプロイすることなく、デバイスに Composable をデプロイ
Jetpack Compose は、Android ビューと共存してシームレスに動作するように設計されているので、自分のペースで採用できます。具体的には、Android ビューに Compose UI を埋め込んだり、Compose の中でビューを使ったりすることもできます。相互運用性に関するドキュメントに、たくさんの採用戦略をまとめました。
既存アプリに Compose を追加する際に役立つように、ビューとの相互運用性に加えて、よく使われるライブラリとの統合も行っています。そのため、アプリを書き直したり、アーキテクチャを変更したりする必要はありません。以下の統合が利用可能です。
MDC-Android Compose Theme Adapter ライブラリや Accompanist ライブラリを使えば Material および AppCompat のXML テーマとの統合機能を利用できるので、テーマを重複して定義する必要はありません。Accompanist は、よく使われるイメージ読み込みライブラリのラッパーも提供します。
Jetpack Compose は、 宣言型 UI ツールキットであり、現在のビューシステムからのパラダイム シフトです。つまり、記述するのは、アプリが特定の状態のときに UI がどのように見えるべきか であって、 どのように UI を生成するかではありません。アプリの状態が変わったときは、Compose によって UI がアップデートされるため、UI を操作して目的の状態に変更するという面倒でエラーが起こりやすい作業は必要なくなります。
また、Compose はすべて Kotlin で書かれているので、優れた言語機能を活用して、簡潔で強力かつ直感的な API を提供できます。たとえば、コルーチンを使うと、ジェスチャー、アニメーション、スクロールなど、はるかにシンプルな非同期 API を書くことができます。そのため、ジェスチャーに続いてアニメーションするなど、非同期イベントを組み合わせたコードを簡単に書けるようになります。キャンセルやクリーンアップはすべて構造化され、並列に行われます。
皆さんや皆さんのチームが Jetpack Compose に関するあらゆることを学習できるように、Jetpack Compose Pathway をアップデートしました。これは、動画やハンズオン Codelabs、重要なドキュメントを厳選した一覧であり、Compose を始める際に役立ちます。本日は、新しく作成またはアップデートしたガイド ドキュメントも公開します。たくさんのスクリーンキャストや新しい Animation Codelab を通じて、Compose で開発を始める方法を詳しく学ぶことができます。アーキテクチャ、ユーザー補助機能、テストに関するガイドから、アニメーション、リスト、Compose の思想に関する詳しい説明まで、作業をより早くするために役立つガイドも準備しました。
さらに、実際に動作する Compose をすぐに見てみたい方のために、8 つの公式サンプルアプリも提供しています。シンプルなものから複雑なものまで、すべて異なる API やユースケースを扱っています。詳しくは README をご覧ください。
Compose を始める準備ができ、賞品も獲得したい方は、#AndroidDevChallenge に挑戦してください。Jetpack Compose で優れたアプリをすばやく作成する技術を身につけられるよう、4 週間にわたって日本時間の木曜日朝、週単位のチャレンジを出題します。各チャレンジでは、「インサイトを開放する」をテーマに、アニメーションやマテリアル テーマ、Composable やリストなど、毎回 Compose の新しい領域を扱います。毎回のチャレンジの勝者に新しい賞品があり、Pixel 5 を含む 1000 個以上の賞品を準備しています*。2 月 25 日から始まっている第 1 週のチャレンジの詳細は、こちらをご覧ください。
Jetpack Compose はベータ版に到達し、1.0 に向けた確定版の API や機能が完成しています。アプリで Compose を採用した方は、ぜひフィードバックをお寄せください。Kotlin Slack の #compose チャンネルで行われているディスカッションへの参加もお待ちしています。
*毎週のチャレンジに新しい賞品が設定されています。Google Pixel 5 が賞品になる週で、Google Pixel 5 が利用できない国にお住まいの方には、同程度の価値がある電子ギフトカードをお送りします。詳しくは公式ルールをご覧ください。
Reviewed by Yuichi Araki - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing APAC
この記事は Chris Banes による Android Developers - Medium の記事 "Jetpack Compose — Before and after" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
今年になってから、サンプル アプリTivi の UI を Jetpack Compose に徐々に移行していました。そして 2020 年 12 月第 2 週、移行作業の第一段階がほぼ完了しました。
今回のブログ投稿では、重要な指標の数値を振り返って比較し、Compose によって何が変わるのかを確認してみましょう。比較するのは、APK サイズ、ビルド速度、コードの行数です。
Compose の話題を進める前に、まずは簡単にアプリについて説明します。
Tivi はかなり細かくモジュール化されており、それぞれの UI の「画面」ごとに Gradle モジュール(ui-$NAME)があります。それぞれの画面は Fragment で実装され、メインアプリ モジュールでは AndroidX Navigation を使ってそれらを組み合わせています。
ナビゲーション グラフはディープリンク URI を使って実装されているので、ほとんどの Fragment はお互いのことを知りません。そのため、疎結合が保証されます。しかし、それよりも重要なことは、独立してコンパイルできるため、ビルドの並列化がしやすくなることでしょう。
Compose に移行する前の Tivi は、Android デベロッパーが利用できるありとあらゆるクールな UI を利用していました。一例をあげれば、データ バインディング、Epoxy、マテリアル デザイン コンポーネント、Insetter DBX、MotionLayout などです。しかし残念ながら、これらの大半ではアノテーション処理が使われているため、ビルドのコストがかかります。
先ほど、移行の「第一段階」を終えたばかりだと書きました。これはどういう意味でしょうか。2020 年 1 月にこの作業を始めたときから、アプリの見た目はほとんど変わっていません。
アプリがモジュール化されているということは、移行自体も部品単位になり、一度に 1 つの Fragment だけ移行できるということです。この 11 か月間はまさにそれを実践し、46 個のプル リクエストに対応しています。
最初に簡単な画面 Episode details を移行し、次に Show details、そして ‘Discover’、‘Search’、‘Followed shows’ と移行を進めました。最近追加された Compose の Paging3 サポートと合わせて、最後の画面となった ‘list’ グリッドを移行できました。
2020 年 12 月 10 日(日本時間 12 月 11 日)、アプリから AppCompat、マテリアル デザイン コンポーネント、その他の AndroidX ウィジェット ライブラリを削除する処理を始めました。これは、Tivi の UI が Compose ベースになったことを意味します。
Remove AppCompat + MDC by chrisbanes · Pull Request #737 · chrisbanes/tivi
アプリで Fragment と Navigation を使っている点は変わりませんが、論理的な次のステップは、Fragment から移行して直接新しい Navigation Compose コンポーネントを使うようになります。
この移行の過程は近日中に別のブログ記事で書きたいと思いますが、本投稿の最後の「まとめ」から、私自身の言葉を引用しておきます。
いろいろ考えなくても、Compose が Android の UI 開発の未来であることはわかります。
では、いくつかの指標を確認してみましょう。
以下のそれぞれの指標では、3 つのバージョンのアプリを比較します。
ユーザーが最も気にする指標は、APK サイズです。
以下の結果は、リソース圧縮を有効にし、R8 を使って最小化した release APK を APK Analyzer で測定したものです。
‘adjusted’(調整済み)の値と ‘Pre-Compose’ を比較すると、Compose を使った場合は APK サイズが 41%、メソッド数は 17% 削減されていることがわかります。
Compose を使った場合は、APK サイズが 41%、メソッド数は 17% 削減されていることがわかる
この数から、AppCompat や MDC などがアプリ内でどれほどの容量を占めているかがわかります。それだけではなく、レイアウト ファイルで使われる場合に備えてすべての View クラスを保持しなければならない場合には、最小化ツールはほとんど役に立たないこともわかります。
ソフトウェア プロジェクトを比較する場合、ソースの行数を数えても特に役立つ統計情報にはならないことは承知していますが、この比較によって、どのような変化が起きているのかは確実に把握できます。
このテストでは、cloc ツールで以下のコマンドを使い、すべてのビルドと生成されたファイル、設定ファイルを除外しました。
cloc . --exclude-dir=build,.idea,schemas
cloc ツールにはコメントを無視する機能が組み込まれているので(ただし、検証はしていません)、上記は実際の「コード」の結果です。当然ながら、XML の行数は大幅に少なくなり、76% 削減されています。レイアウト ファイル、スタイル、テーマなど、たくさんの XML ファイルとお別れできます。
同じように興味深いのは、Kotlin の合計行数も減っていることです。仮説としては、アプリ内のボイラープレートが減り、たくさんのビューヘルパーやユーティリティ コードを削除できたためだと考えられます。3,000 行近くを削除できたこちらの PR をご覧ください。
Remove a load of old code 🗑️ by chrisbanes · Pull Request #713 · chrisbanes/tivi
ビルド速度はデベロッパーの関心が非常に高い指標です。このプロセスを開始する前は、多くのアノテーション プロセッサを削除できることでビルド速度が向上するものと考えていましたが、どの程度かはよくわかりませんでした。
テストの設定
説明を続ける前に、以下の数値をどのようにして測定したのかを知っておくことが重要になります。ここでは、Chris Horner が異なる CPU でビルド速度を測定したときと同じ設定を使いました。
テストに使ったマシンは、192 GB の RAM と超高速な Xeon® Gold 6154 CPU を搭載した Lenovo P920 です。言うまでもなく、このマシンは一般的なデベロッパーの設定ではありません。そこで、現実に近いテストを行うため、CPU を最低クロック周波数に固定しました。
# Use performance governor to allow tweaking of max freq
sudo cpupower frequency-set -g performance
# Set max frequency to CPU minimum: 1.2GHz
sudo cpupower frequency-set -u 1.2GHz
その後、すべてのリモート アーティファクト キャッシュを準備するため、./gradlew assembleDebug を実行しました。
そして、テストを実行するため、次のコマンドをループで 5 回実行します。
./gradlew --profile \
--offline \
--rerun-tasks \
--max-workers=4 \
assembleDebug
厳密には --max-workers は必要ありませんが、この CPU では、デフォルトで Gradle が利用できる 64 個の「コア」のすべてが使われます。これを 4 に制限することで、通常のラップトップ CPU と比較しやすくします。
テスト結果は以下のとおりです。それぞれの結果プロファイル レポートの ‘Total Build Time’(合計ビルド時間)の値をご覧ください。
この結果にはかなり驚かされました。ほとんど数値が変わらなかったからです。予想では、多くのアノテーション プロセッサが削除されることで、‘Without view libs’(ビュー ライブラリなし)が大幅に速くなると思っていました。
結果の明細を見てみると、kapt の実行時間はすべて同じくらいでした。おそらくこれは、View Binding、Dagger/Hilt、Room の使用を継続しているためではないかと思います。
しかし、Kotlin コンパイラや Compose コンパイラ プラグインが行ってくれることを考えれば、ビルド時間が 5% 削減されたことに何も不満はありません。
これまでに説明してきた全ての結果に当てはまる注意点があります。
この 11 か月間、Tivi には何の機能も追加しませんでしたが、この点を厳密に制限したわけではありません。移行とはあまり関係のない部分で多くの変更を行っており、それが結果に影響した可能性もあります。
移行を行った 11 か月間で、多くの依存性が更新されました。ほとんどの依存性の更新はランタイム ライブラリの依存性だったので、APK サイズ指標に影響する可能性は低いはずです。
Gradle のアップデート(6.0.1 から 6.7.0)、Android Gradle Plugin のアップデート(3.6.0 から 4.2.0)、そして Kotlin のアップデート(1.3.61 から 1.4.20)などは、すべてビルド速度に大きな影響があります。
Compose は現在アルファ版なので、すべての成果物は開発中のスナップショットになります。来年 1.0 の安定版になったとき、これらのテストを再実行して違いが出るかを見るのが楽しみです。
結果と注意点を見る限り、リンゴ 🍎 とリンゴ 🍏 を比較しているわけではない(同じ条件で比較しているわけではない)ので、あまり多くの結論を出すべきではありません。これは、リンゴ 🍎 とそれよりも少し甘いナシ 🍐 を比べているようなものです。
果物の例はさておき、最大のポイントは Compose がほとんどのデベロッパー指標で良好な(または中立的な)影響を示していることです。この点と Compose でデベロッパーの生産性が大幅に向上することを踏まえれば、いろいろ考えなくても、Compose が Android の UI 開発の未来であることはわかります。