日本のデベロッパーの方へ Google Play や Android に関する最新情報をお届け
Jetpack Compose アルファ版を公開しました
2020年9月1日火曜日
この記事は Karen Ng による Android Developers Blog の記事 "
Announcing Jetpack Compose Alpha!
" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
8 月 26 日(日本時間 8 月 27 日)
Jetpack Compose
のアルファ版を公開しました。最新の UI ツールキット Jetpack Compose は、すべての Android プラットフォームで美しいアプリをすばやく簡単に構築するために設計されており、プラットフォーム API へのネイティブ アクセスを提供します。劇的に削減されたコード、インタラクティブなツール、そして直感的な Kotlin API を活用して、魅力あふれるアプリを作りましょう。
時間を節約し、少ないコードで成立するプログラミング言語と IDE、そして強力な UI フレームワークは、どんなアプリを開発する時でも必要です。Jetpack Compose は、皆さん(と私たち)の UI 構築の生産性を上げるために開発しました。
その最初の一歩が
Android Jetpack
でした。この一連のライブラリは、Android でデベロッパーが頻繁に直面する難しい問題を解決するために開発し、プラットフォームのあらゆるバージョンでアプリを確実に動作させ、高い品質を確保できるライブラリとなっています。現在、Google Play ストアのトップ 10,000 アプリの 84% で、いずれかの Jetpack ライブラリが使われています。
また、Kotlin も使用率が高く、現在トップ 1,000 アプリの 70% 以上、そして Android デベロッパーの 60% が Kotlin を使っています。
Google Home
アプリを例に挙げると、Kotlin を使うことでコードの行を 80% 削減できました。さらに、NullPointerException は過去の同期間と比べて 33% 減少しました。
Duolingo
も、Kotlin を導入することで平均 30% のコード行数の削減を実現しました。
Jetpack Compose は、大規模で高品質なアプリを構築できる API、直感的な言語、そしてリアクティブ プログラミング モデルを組み合わせたものです。 デベロッパーの皆さんから寄せられていた、シンプルな宣言型 API による UI の構築を希望するというフィードバックを実現しました。
Jetpack Compose アルファ版
Jetpack Compose アルファ版には一連の API が含まれており、強力なツールや、本格的な Android アプリの構築に必要なものがすべてそろっています。既存の Android ビューとの相互運用性も備えていますので、アプリを書き直す必要はありません。Compose API は、マテリアル デザインを使った
正規のサンプルアプリ
のセットとともに設計、開発されています。このサンプルアプリのセットも 8 月 26 日に公開しましたので、Android Studio に直接
インポートして試してみる
ことができます。
Jetpack Compose アルファ版には、次のものが含まれています。
アニメーション
Constraint Layout
デフォルトでサポートされる A11Y
入力とジェスチャー操作
ビューとの相互運用性(既存アプリで Composable 関数を利用可能)
遅延読み込みリスト
マテリアル UI コンポーネント
パフォーマンス最適化
テスト
テキストと編集可能テキスト
テーマとグラフィック
ウィンドウ管理
Compose でアプリを作りやすくするため、Jetbrains Kotlin チームとも連携して Android Studio 4.2 Canary 版にも多くの新機能を追加しています。
Compose コード補完
Compose プレビュー アノテーション
端末への Composable の個別デプロイ
インタラクティブ Compose プレビュー
コード生成用 Kotlin コンパイラ プラグイン
Compose 用 Sample Data API
Compose の特長
Compose は、Android の既存 UI 構築モデルとはまったく異なるプログラミング モデルを使用しています。Android ビューの階層は、当初から UI ウィジェットのツリーとして表現されています。アプリの状態が変更されると、現在のデータを表示するために UI 階層を更新する必要があります。UI を更新する場合は、
findViewById()
などの関数を使ってツリーから UI を検索し、button.setText(String) や container.addView(View)、img.setImageBitmap(Bitmap) などのメソッドを呼び出してノードを変更するのが一般的な方法です。これらのメソッドは、ウィジェットの内部状態を変更します。手動でビューを更新するという作業は、面倒であるだけでなく、エラーが起きる可能性も高くなります(例: ビューの更新を忘れる)。
Jetpack Compose では、完全に宣言的でコンポーネントベースのアプローチを採用しています。つまり、UI は、データを UI 階層に変換する関数として記述します。ベースとなるデータが変更されると、Compose フレームワークは自動的に UI 階層を更新します。そのため、UI をすばやく簡単に構築できます。
既存の Android ビューとの完全な相互運用性
新しいフレームワークを採用すると、既存のプロジェクトやコードベースに大きな変更が発生します。そのため、Compose は Kotlin と同じくらい採用しやすいものとして設計しました。Compose は、既存の Android コードと完全に相互運用が可能で、すぐに使い始めることができます。
Compose への移行方法は、担当者やチームによってさまざまです。新しいアプリを構築する場合は、UI 全体を Compose で実装する方法が最適かもしれません。しかし、ほとんどの皆さんは既存の大きなコードベースを抱えているはずです。その場合は、アプリを書き直すよりも、既存の UI デザインに Compose を組み込む方がよいでしょう。
主に次の 2 つの方法を使用して、ビューベースの UI に Compose を組み込むことができます。
Compose の要素を既存の UI に追加します。これは、まったく新しい Compose ベースの画面を作るか、Compose の要素を既存のフラグメントやビューによるレイアウトに追加することで実現します。
Composable 関数にビューベースの UI 要素を追加します。この方法を使うと、MapView や WebView などの Compose 以外のウィジェットを Compose ベースのデザインに追加できます。
さらに、新しいライブラリ
MDC Compose Theme Adapter
も公開しています。これを使うと、Compose UI で既存の
マテリアル コンポーネント
テーマを再利用できます。
詳細については、
既存のアプリで Compose を使うためのコードラボ
を試してみるか、次の 2 つのサンプルをご覧ください。
Tivi
と
Sunflower
は、Compose を組み込んだ既存アプリです。
Crane
サンプルアプリ
では、Compose に MapView を埋め込んでいます。
強力なツール
構築する UI をすばやく繰り返し試せるように、Jetpack Compose は Android Studio の強力なツールと組み合わせて利用できるように構築されています。
Compose レイアウト プレビューを使うと、端末やエミュレータにアプリをデプロイしなくても、Compose コンポーネントをプレビューできます。アプリに変更を加えると、プレビューが更新されてすばやく変更点を確認できます。レイアウト プレビューを作成するには、パラメータのない Composable 関数を作成して @Preview アノテーションを追加します。アプリをビルドすると、Studio の
プレビュー ペイン
にプレビュー関数の UI が表示されます。
Android Studio では、インタラクティブ プレビュー モードを利用できます。インタラクティブ プレビュー モードでは、UI 要素のクリックや入力が可能です。UI はインストールしたアプリと同じように反応します。
また、Composable を単独で物理端末や Android Emulator にデプロイすることもできます。Android Studio は、新しいアクティビティを作成してその関数が生成した UI を追加し、端末のアプリにデプロイします。これにより、アプリ全体を再インストールしたりその場所に移動したりすることなく、実際の端末で UI を試すことができます。
Jetpack Compose を使ってみる
Jetpack Compose を使ってみたい方は、
Compose チュートリアル
を試し、
セットアップ
を行ってみてください。または、直接
サンプルアプリ
を確認することもできます。これらのアプリを紹介している ‘Compose by Example’ の動画もご覧ください。
新しい
コードラボ
やさらに充実したドキュメントなど、Compose 全般に関する情報を確認したい方は、
Compose Pathway
をご覧ください。
Jetpack Compose は、
昨年のオープンソース化
以降も引き続き多くの方から貴重なフィードバックをお寄せいただいています。また、バグの記録、 CLにも貢献してくださっています。現在の Jetpack Compose があるのは、皆さんのおかげです。本当にありがとうございました!
Compose は安定版 API に向けた作業やパフォーマンス最適化を行っている段階のため、まだ本番環境での利用は推奨されていません。ですが、ぜひお試しいただき、
フィードバックをお寄せください
。
Kotlin Slack
の #compose チャンネルで行われているディスカッションへの参加もお待ちしています。Compose 1.0 は、2021 年のリリースを予定しています。
ぜひ Compose を使ってみてください!
Reviewed by
Yuichi Araki - Developer Relations Team
and Hidenori Fujii - Google Play Developer Marketing, APAC
ラベル
#11WeeksOfAndroid
18
#Android12
1
#AndroidDevJourney
1
#androiddevsummit
5
#GoogleIO
19
#WeArePlay
12
12l
1
5 star apps
1
Ads
1
advertising
1
AGDE
1
AGDK
2
AGI
1
AI
3
AI Announcements beginner Explore Generative AI
1
AI Announcements beginner Explore Generative AI、
1
Android
113
Android 10
1
Android 11
1
Android 12 Beta 5
1
Android 12L
1
Android 13
3
Android 14
7
Android 14 Beta 4
1
Android 14 ベータ版4
1
Android 15
4
Android App Development
42
Android app excellence
1
Android Architecture
1
Android Architecture Components
1
Android Auto
4
Android Automotive OS
1
Android Dev
2
Android Dev Summit
1
Android Dev Summit 2021
1
Android Developer
31
Android Developers
51
Android Development
8
Android Development Tools
1
Android fitness
1
Android for cars
5
Android Game Development Kit
1
Android Games
2
Android health
3
Android Jetpack
10
Android O
1
Android photo picker
1
Android SDK
2
Android SDK Upgrade Assistant
1
android security
7
Android Stu
1
Android Studio
35
Android Studio Bumblebee
1
Android Studio Chipmunk
1
Android Studio Dolphin
2
Android Studio Dolphin Beta
1
Android Studio Electric Eel Canary
1
Android Studio Giraffe
1
Android Systemui
1
Android Tools
2
Android TV
4
Android TV OS
1
Android10
1
Android11
19
Android12
13
android13
6
Android14
2
Android15
2
Android9
1
androidbasics
1
AndroidDev
1
AndroidDevChallenge
4
AndroidGoogle Play
1
androidstudio
3
AndroidX
4
announcement
3
Announcements
12
aosp
1
APIs
1
App
2
App Bundle
2
app development
4
app lifecycle
1
app performance
1
App quality
3
App Security
1
appexcellence
2
appexcellencecasestudy
1
appquality
2
apps
2
AppWidgets
1
Architecture
2
Assistant
1
attestation
1
Authentication
4
Best Apps 2020
1
best apps 2022
1
best apps 2023
1
Best games 2020
1
best games 2022
1
best games 2023
1
Best Practices
2
Beta
2
Biometrics
1
Buildbetterapps
2
CameraX
2
case study
7
ChromeOS
1
Cloud photos
1
coding productivity
1
compatibility
3
Compose
20
Compose Animation Previews
1
Conversation API
1
conversations
2
COVID-19
3
credential manager
1
Custom Model
1
Dagger Hilt
1
dark theme
1
Delegation
1
Dependency Injection
1
Design Patterns
1
Develop
1
Developer Preview
14
Developer Review
1
developer stories
5
developers
1
Developers Story
5
device explorer
1
devices
2
Edge-to-edge
1
events
2
Explore
2
Featured
153
Featured Game Development
1
Featured Google Play Policy
1
features
2
Firebase
2
Firebase Remote Config
1
foldables
7
form factors
3
game
19
Game Development
7
Game Mode API
1
games
2
gaming
1
GDG
1
Gemini
3
Get Inspired
2
get started
1
glance
1
Google AI Studio
1
Google Developers
1
Google for Games Developer Summit
2
Google I/O
5
Google Pixel Fold
1
Google Pixel Tablet
1
Google Play
123
Google Play App Safety
1
Google Play Billing
2
Google Play Billing Library
1
Google Play Console
3
Google Play developer distribution agreement
1
Google Play Developer Policies
3
google play developers
7
Google Play Devs
2
Google Play Game Services
1
Google Play Games
6
Google Play Indie games accelerator
2
Google Play Indie Games Festival
1
Google Play Integrity API
1
Google Play Latest
1
Google Play Pass
1
Google Play Points
1
Google Play SDK Index
1
Google Play Store
4
GoogleIO
3
googleplay
1
GPS
1
Gradle sync
1
Health Connect
1
Health Connect API
1
health data
1
How to build Android app
1
I/O Extended
2
I/O Extended Japan
2
Identify
1
IGF2020
6
IGF2021
9
Indie developers
1
Indie Game
16
Indie Games
1
Indie Games Festival
17
Indie Games Festival 2020
7
Indie Games Festival 2021
9
indies
5
Insights
1
Japanese
15
Japanese Developer
9
JetLagged
1
Jetpack
17
Jetpack Compose
23
Jetpack Compose 1.2
1
JetpackCompose
5
key
1
keymaster
1
keymint
1
keystore
1
Kotlin
21
Kotlin Android Extensions
1
Kotlin Beginners
3
Kotlin Symbol Processing
1
Kotlin Vocabulary
2
Large Screens
6
large_screens
1
latest
133
Learn
1
learn Android
1
lifull
1
live edit
1
Location
1
Location Data
1
Machine Learning
1
Mad Skills
3
MADSkills
3
Material Design
4
material you
4
Media
8
mikan
1
ML
1
ML Kit
1
mobile
2
Model Maker
1
Modern Android Development
1
monetization
3
multiplatform apps
1
Navigation
1
nonce field
1
notifications
2
Now in Android
27
Open source
1
Optimization
1
organization account
1
passkeys
3
people
2
People API
1
Performance
9
permissions
1
Pixel
3
Platform_Update
13
Platform_Updates
1
play
1
Play Billing
1
Play Console
21
Play Store
1
Policies
6
Policy
11
policy compliance
8
policy violations
8
privacy
29
Privacy Sandbox
2
privacy sandbox on android
1
Programming
1
provisioning
1
Requirements
3
Resources
1
safety
3
sandbox
1
Security
12
stable
1
Story
3
subscriptions
5
success stories
4
Tablets
7
tapple
1
TensorFlow
2
TensorFlow Lite
1
Testing
1
Tools
1
training
2
UI
2
UX
1
wear
1
Wear OS
16
Wearables
1
wearos
3
webinar
2
Windowinsets
1
Women in Gaming
1
Workmanager
2
ベータ版4
1
ブログ アーカイブ
2024
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2023
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2022
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
1月
2021
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2020
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2019
12月
9月
7月
6月
4月
3月
2018
8月
Feed
Follow @googledevjp
"プロダクトに関するご意見は
プロダクトフォーラム
にお願いします"