今年の Google I/O はいかがでしたか?まだチェックしていない方は忘れずに Google 基調講演、デベロッパー基調講演、What's new in Android の 3 つのセッションをぜひご覧ください(※ 3 つとも日本語字幕対応)。美しいリップル(波紋)効果やストレッチ オーバースクロールを含む Android 12 Beta 1 、7 月に 1.0 の安定版になる Jetpack Compose、Material You の発表、ベータ版になった Android Studio Arctic Fox、Android デベロッパーに最も使われている言語である Kotlin(トップ 1,000 アプリの 80% が使用)や、Jetpack ライブラリがトップ 10,000 アプリのうち 84% 以上で使われている現状などをすべて確認できます。
まだご覧になっていない方は、ぜひご覧ください。また、この記事では皆さんが見逃してしまったかもしれないニュースをご紹介しましょう。今年の I/O のセッションはすべて日本語字幕に対応していますので、ぜひ切り替えてご覧ください。
What’s new in Jetpack セッションとブログ記事(英語)の要点は、CameraX、Hilt、Paging 3、ConstraintLayout、MotionLayout、Security Crypto、そして Fragment ライブラリが安定版に移行したことです。DataStore と Compose は現在ベータ版です。そして、Jetpack に以下の新しいライブラリが加わります。
さらに、WorkManager の新バージョンで現在アルファ版の 2.7 は、Android S SDK がターゲットになっており、プラットフォームの新しいフォアグラウンド制限が追加でサポートされています。詳しくは、Effective background tasks on Android セッションをご覧ください。
また、Navigation ライブラリを使っている方は、最新のアルファ版で複数のバックスタックがサポートされているので、ご確認ください。
Jetpack Compose が 7 月に 1.0 の安定版になるので、誰もが心躍らせていることでしょう。しかし、Compose を採用するときに、望まないのであれば、アプリのアーキテクチャを変更する必要はないことはご存知でしょうか。詳しくは、Using Jetpack libraries in Compose のセッションをご覧ください。Compose は、Navigation、Kotlin フロー、Hilt など、特に人気のあるライブラリに組み込めるようになっています。
さらに、Compose ではマテリアル デザインの実装も提供されます。その機能を活用する方法については、Build beautiful Material Design apps with Jetpack Compose セッションをご覧ください。
2 つの新しい Codelab も公開されています。Compose Navigation と Compose のテストです。Compose について体系的に学習する場合は、こちらのラーニングパスとワークショップをご覧ください。初めての Compose アプリを構築する方法を動画形式で基礎から説明しています。
Android 12 の最初のベータ版には、Android 5.0 でマテリアル デザインが導入されて以降、最大のデザイン変更が含まれています。これには、システムのテーマを使ってウィジェットに適用するダイナミック カラーなど、アプリ ウィジェットの動作の仕組みと外観の大幅な更新が含まれています。詳しくは、Refreshing widgets セッションをご覧ください。
また、システム全体にストレッチ オーバースクロール効果が新しく導入されますが、これは 1 つのスクロール コンテナにしか適用されないので、アプリの動作がどのようになるかを確認しておきましょう。
Android 12 で Bluetooth デバイスをスキャンするアプリは、neverForLocation 属性付きの新しい BLUETOOTH_SCAN パーミッションがあれば、位置情報パーミッションは必要なくなります。これにより、アプリの煩雑さが軽減されるだけでなく、LOCATION パーミッションが必要なアプリの数も減ることになります。
neverForLocation
BLUETOOTH_SCAN
LOCATION
位置情報と言えば、FINE_LOCATION パーミッションをリクエストした場合でも、ユーザーはアプリにおおよその位置しか渡さないように設定できるようになります。
FINE_LOCATION
Beta 2 に導入する予定のたくさんの新しいプライバシー機能についてもお知らせしました。ユーザーに表示されるプライバシー ダッシュボード、新しいマイクとカメラのインジケーターと切り替え機能、クリップボード読み取り通知などです。Android 12 におけるプライバシー関連のすべての変更については、What’s new in Android privacy セッションをご覧ください。
今回のベータ版には、パフォーマンス クラスも導入されています。これは、要求の厳しいユースケースや高品質のコンテンツをサポートできるデバイス向けの一連の機能で、現在は主にメディア機能を対象としています。
Android 12 Beta 1 は、エミュレータ、Pixel 3 以降のデバイス、またはデバイス パートナーが発売しているデバイスの一部で試すことができます。
たくさんの新機能が搭載された Android Studio Arctic Fox が Beta チャンネルで公開されています。Compose のサポート、Compose 開発を加速させるすばらしいツール、Layout Inspector の Compose サポート、組み込みのユーザー補助スキャナなどの機能が搭載されています。それだけでなく、折りたたみ式デバイスのエミュレータ、Android TV リモコン、Wear OS のペア設定ウィザードなど、サポート対象のデバイスも増えています。また、生産性を飛躍的に向上させるため、Background Tasks Inspector や Kotlin コルーチン デバッガ、Kotlin Symbol Processing のサポートも Android Studio に追加されました。
これらすべて、さらにその他の機能も、What's new in Android Development tools セッションでご紹介しています。
ConstraintLayout と MotionLayout の改善についてのさらに詳しい情報や、Android Studio で利用できる Compose ツールについては、What's new in design tools セッションをご覧ください。
Android 開発コミュニティで、Kotlin が採用される数が増えています。State of Kotlin on Android セッションの中で特にお伝えしておきたい新機能が、Kotlin Symbol Processing と、UI レイヤーからフローを収集する新しいライフサイクル API です。
Kotlin Symbol Processing(KSP)は、高速のビルドと、Kotlin エコシステムで最高級のシンボル処理を目指しています。KAPT による Java スタブ生成と、それに伴う長いビルド時間は不要になります。KSP は Kotlin コンパイラに組み込まれており、すべての Kotlin シンボルへのアクセスを提供します。また、KSP はベータ版に到達し、API サーフェスが確定しました。現在 KAPT を使っているプラグイン作成者の皆さんは、ぜひ KSP への移行を始めてください。私たちの Jetpack Room ライブラリもベータ版として KSP をサポートした結果、KAPT に比べて処理が 2 倍高速になりました。KSP についての話題は、先日の ADB ポッドキャストでも取り上げました。詳しく知りたい方は、ぜひお聴きください。
lifecycle-runtime-ktx ライブラリの最新版には、ライフサイクルに対応した repeatOnLifecycle API が含まれています。この API は、ライフサイクルがある状態に到達した場合やその状態を下回った場合に、コードブロックをキャンセルしたり再開したりします。この動作は、ビューがバックグラウンドにある場合に実行を停止してアップストリームのフローをアクティブに保つ launchWhenStarted API とは異なります。新しい API を使うと、特定のシナリオでリソースを無駄に消費しなくなるので、アプリの効率を高めることができます。
lifecycle-runtime-ktx
repeatOnLifecycle API
launchWhenStarted
この API によって、Android アプリのすべてのレイヤーで Flow を使うための完全なストーリーができあがりました。詳しくは、Migrating from LiveData to Kotlin’s Flow のブログ記事をご覧ください。
タブレット、Chrome OS デバイス、折りたたみ式デバイスなどの大画面デバイスをターゲットにしやすくするためのたくさんの機能をお知らせしました。たとえば、アップデートされた折りたたみ式対応の SlidingPaneLayout を使うと、一覧/詳細ビューを簡単に実装できます。また、横向き大画面用の新しい垂直ナビゲーション レール コンポーネントや、Button、TextField、Sheet のような極端に引き延ばされることが多いマテリアル コンポーネントの最大幅の値を導入し、新しいガイダンスも提供しています。詳しくは、こちらのセッションをご覧ください。
SlidingPaneLayout
Wear の次期バージョンが登場します。そこで、プレビュー エミュレータ システム イメージ、Android Studio から簡単に Wear エミュレータと他のデバイスをペア設定できるペア設定アシスタント、バーチャル心拍数センサーなどの新しいツールを準備しています。Ongoing Activities API とタイルによって、ユーザーがアプリとインタラクションを行う方法がさらに増えます。Samsung との共同作業で作成した新しいヘルスサービス プラットフォームは、現在アルファ版として組み込むことができます。また、カーブしたテキスト、ウォッチフェイス、ウォッチフェイスの追加機能、リモート インタラクションなど、Wear 向けの開発を容易にするその他の新しい Jetpack API も準備しています。詳しくは、Now is the time: What's new with Wear セッションで解説しています。
Android TV では、Cast Connect でストリームの転送と拡張が可能になり、Android 11 を実行する新しいエミュレータが利用できるようになりました。また、ADT-3 デバイスでは Android 12 Beta 1 を利用できます。8,000 万台を超えるアクティブな TV デバイスで稼働する Android の詳細については、What's new in Android TV and Google TV セッションをご覧ください。
Android に、アップデート可能な完全統合型の ML 推論スタックが搭載されることをお知らせしました。つまり、TensorFlow Lite for Android(TFLite)と Neural Networks API(NNAPI)が Google Play 開発者サービスを使って提供されるようになります。そのため、アプリの APK サイズを削減でき、新しい APK を公開しなくても、最新の高パフォーマンスなバージョンを活用できます。TFLite と NNAPI、そして関連するチップセット向けのドライバは、プラットフォームのバージョンとは独立してアップデートされるので、Android エコシステム全体でドライバと API の一貫性が向上します。また、TFLite 2.3 に互換性リストが追加され、どの部分を GPU やアクセラレータで実行するとモデルを高速化できるかがわかるようになっています。そのリストやモデルが提供するメタデータを使って、CPU、GPU、他のアクセラレータ バックエンドのどれで実行するかを判断する Automatic Acceleration についてもお知らせしました。Android のオンデバイス ML の新機能については、What's new in Android Machine Learning セッションをご覧ください。
これまで、CI サーバーで合格するテストがローカルの Android Studio では失敗する、あるいはその逆の事象を見たことがある方もいるかもしれません。このようなことが起きると、テストの信頼性が失われ、生産性に明らかな影響が出る可能性があります。その原因の 1 つは、Android Studio と Android Gradle プラグインが異なるバージョンの Android インスツルメント テストランナーを実装していることです。Android Studio Arctic Fox では、Android Studio のすべてのテストが Android Gradle プラグインで実行されるので、動作の一貫性が保たれます。
プロジェクト Nitrogen がどうなっているのか、気になっている方も多いでしょう。Nitrogen はもう存在しません。代わりに、統合テスト プラットフォーム(UTP)が登場しています。これは拡張可能なテスト実行環境で、Android Studio と Android Gradle プラグインから大規模な Android テストを実行します。
UTP によって実現できる機能の 1 つが、Gradle が管理する仮想デバイスです。これにより、Gradle DSL を使ってデバイスを定義できるようになります。もう 1 つの機能は、複数のデバイスで並列にテストを実行することにより、テスト実行の拡張性を向上させる機能です。さらに、テストが失敗したときのエミュレータのスナップショットを取得し、後ほどその状態を復元して何がうまくいかなかったのかを調査できるようにする機能もあります。
テストの詳細については、What's new in Android testing tools セッションをご覧ください。
I/O ではゲーム デベロッパー向けの内容はそれほど多くありませんでしたが、その大きな理由は、7 月 12-13 日に Google for Games Developer Summit の開催を予定していることです。登録は無料です。I/O では語られなかったゲーム開発に関するセッションをお届けする予定です。
長年にわたって、ポリシー、ポリシーの変更、ポリシー違反への対応について多くの質問が寄せられてきました。そのご要望にお答えして、Google Play Console に新しいポリシーとプログラムのセクションで、ポリシーとその適用情報が 1 か所で確認できるようになりました。
また、Google Play に新しい SDK コンソールが導入され、SDK プロバイダが非準拠や古い SDK バージョンなどの問題を報告できるようになります。AppBundle で公開する場合、Android Gradle プラグイン 4.0 以降では、アプリのどの SDK に依存関係があるかを自動的に報告できます。これにより、Play で SDK のアップデートが推奨される場合に通知などを行えるようになります。今年中には、アプリに適切な SDK を選択する際に役立つ新しいウェブサイトが Play に登場する予定です。
Play Billing 4.0 ライブラリのリリースにより、複数の数量の購入や、複数のプロダクトを 1 つのサブスクリプションの一部としてまとめるマルチライン サブスクリプションなどの新機能を利用できるようになります。既存の課金対応アプリは、今年の 11 月 1 日までに、少なくとも以前の Play Billing 3.0 ライブラリにアップデートする必要があります。新規アプリは、8 月 2 日までに Play Billing 3.0 以降に移行する必要があります。
ADB エピソード 163 では、Android グラフィック チームの Nat Duca と Sumir Kataria とADB チームで、シェーダー、GPU、Vulkan、OpenGL、ANGLE、ドライバ、ぼかし、ピクセルなどのトピックについてのトークをお届けします。もちろん、Chet のお気に入りの「色」についての話も登場します。
エピソード 164 は、Jetpack Compose について取り上げる新しい連載ミニシリーズ「AD/BC」の初回です。このシリーズでは、Android の未来の UI ツールキットについて、さまざまなトピックを掘り下げます。今回は、Nick と Chet が Adam Powell と Leland Richardson に、Compose のコンパイラやランタイム、データフローについて、そして Compose がデータの状態の変化に応じて Composable を呼び出すタイミングを判断するという素敵な機能について話を聞きました。
今回は以上です。今年の Google I/O はお楽しみいただけましたでしょうか。Jetpack、Android 12 とプライバシー、ツール、Kotlin、大画面、Wear OS、Android TV、オンデバイス機械学習、テスト、ゲーム開発、Google Play といったさまざまな最新情報が満載でした。グラフィックと Compose のポッドキャストもお聴きください。次回も Android デベロッパーの世界の最新アップデートをお届けします。お楽しみに。
この記事は Chet Haase による Android Developers - Medium の記事 "Now in Android #37"を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android 開発の最新ニュースやトピックをご紹介する Now in Android。今回は Android 12、MAD Skills WorkManager、AndroidX、最新のポッドキャスト エピソードなどをご紹介します。
今回の Now in Android は、動画とポッドキャストでもお届けします。内容は同じですが、読む量は少なくて済みます。この記事版には、取り上げているすべてのコンテンツへのリンクが掲載されていますので、ぜひご覧ください。
下のリンクをクリックするか、お気に入りのクライアント アプリでポッドキャストをサブスクライブしてください。
Android 12 の 2 回目のデベロッパー プレビュー が公開されています。また、4 月 7 日(日本時間 4 月 8 日)にはパッチ リリース の DP 2.2 を公開しました。
デベロッパー プレビュー 2 でリリースした新機能の概要は、ブログ記事でご紹介しています。ピクチャー イン ピクチャーの改善、ぼかしや色フィルタなどの強力なグラフィック効果を簡単に実現できる新しい RenderEffect API などが含まれています。
また、デベロッパー ドキュメントにもいくつか改善を加えました。
Android 12 プレビュー の Web サイトには、動作の変更点、新機能と新しい API などの情報を掲載しています。新しくリリースしたバージョンでぜひ皆さんのアプリのテストをお願いします。何か問題があればフィードバックをお送りください。デベロッパー プレビューをリリースすることで、皆さんからのフィードバックをより多く集め、最終プロダクトの公開までに完成度を上げていきます。
最終リリースに向けて作業が進むにつれて、機能や修正が増えていきます。今後のリリースにもご期待ください。
最先端の Android 開発に関する技術コンテンツを扱う MAD Skills シリーズが続いています。ミニシリーズとして取り上げてきた WorkManager から今回も最新情報をお知らせします。
Firebase JobDispatcher や GCMNetworkManager API をまだ使っている場合は、どちらも非推奨となってますので、今こそ移行のタイミングです。このエピソードでは、WorkManager を使うようにコードを移行する方法について、Caren Chang が解説しています。動画に加えて、Firebase JobDispatcher と GCMNetworkManager から移行する方法についてのガイドも忘れずにご覧ください。
Hugo Visser さんが、健康管理アプリで WorkManager を使ってスケジュールを設定し、定期的にデータをダウンロードして処理する方法について解説しています。さらに、いくつかのデバイスで問題を発見し、その問題を送信したところ、最新リリースの WorkManager でバグが修正されたことにも触れています。
WorkManager シリーズの最後のエピソードでも、WorkManager のエキスパートを招いてリアルタイム Q&A を行いました。私のほかに、Ben Weiss とこのシリーズの進行役である Caren Chang、そして Sumir Kataria と WorkManager の担当エンジニア Rahul Ravikumar が参加しました。この API について、できる限り多くの質問にお答えしています。
連載中のコンテンツは、YouTube の MAD Skills プレイリスト、Medium の記事、またはすべてのリンクが掲載されているランディング ページからご覧いただけます。
Fragment 1.3.2、Activity 1.2.2、Lifecycle 2.3.1 など、いくつかの AndroidX のバグ修正版を安定版としてリリースしました。最初のアルファ版リリースになったばかりですが、いくつかの新ライブラリも登場しました。
Oboe は、さまざまな Android リリースやデバイスで高パフォーマンス、低レイテンシ(遅延)のオーディオを実現するネイティブ ライブラリです。昨年 4 月には、ADB ポッドキャストで Oboe のエンジニアから話を聞きました。そして現在、Oboe は Games SDK に統合されています。Daniel Galpin が Android Developers ブログに新しい記事(英語)を投稿しました。プロジェクトに Oboe を追加してコードから利用する方法について詳しく説明しています。
Manuel Vivo が、Lifecycle 2.4.0-alpha01 の新しい API を紹介するブログ記事(英語)を公開しました。この API を使うと、UI レイヤーから安全に Kotlin Flow を使用できます。
Nicole Borrelli が、PendingIntent を正しく使う方法と、これを使うべきタイミングについてのブログ記事(英語)を投稿しました。これはタイムリーな話題です。次のリリースで行われるセキュリティ関係の変更により、Android 12 をターゲットとしたアプリで PendingIntent の可変性についての宣言が必須になるからです。
ユニット 4 が始まります。他のコースもご覧ください!
Android 開発の基本と Kotlin プログラミングを学びたい方向けのコース、Android Basics in Kotlin で、ユニット 4: インターネットへの接続が公開されました。この新しいコンテンツでは、Kotlin コルーチンのコードを書きつつ、ネットワーク データを扱う Retrofit や Coil などの重要なライブラリの使い方を学習します。
今まで Blogger で公開していた ADB が終了しました。そして、Android Developers Backstage の新しい Web サイトを公開し、新しいフィード、そして素敵な新しいロゴを作成しました。この変更は現在の ADB サブスクライバには影響しません。フィードはリダイレクトされるので、再度サブスクライブする必要はありません。しかし、今後のエピソードのメモを参照したい場合は、adbackstage.libsyn.com をご確認ください。
新しいサイトとフィードに投稿された最初のエピソードは、長年にわたり独立系の Android アプリ デベロッパーとして活躍している Chris Lacy さんへのインタビューです。Chris さんがアプリをどのように実装したのか、またその過程で Android のプログラミングや API についてどのようなことを学んだのか、Romain と私が話を聞きました。
次回も Android デベロッパーの世界の最新アップデートをお届けします。お楽しみに。
この記事は Manuel Vivo による Android Developers - Medium の記事 "Now in Android #36" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android 開発の最新ニュースやトピックをご紹介する Now in Android。今回は MAD Skills のミニシリーズ WorkManager、AndroidX、オーディオ、UX、Wear OS タイル、Jetpack Compose、コルーチン、#AndroidDevChallenge、最新のポッドキャスト エピソードなどをご紹介します。
今回の Now in Android は、動画とポッドキャストでもお届けします。内容は同じですが、読む量は少なくて済みます。この記事版(そのままお読みください!)には、取り上げているすべてのコンテンツへのリンクが掲載されていますので、ぜひご覧ください。
最先端の Android 開発に関する技術コンテンツを扱う MAD Skills シリーズが続いています。
WorkManager についてのミニシリーズには、2 つのエピソードが追加されました。
バックグラウンド処理: Android アプリでやってはいけないことがあるとすれば、それは UI スレッドのブロックです。このエピソードでは、Ben Weiss が WorkManager を使ってバックグラウンド処理を行う方法について、さまざまなアプローチを取り上げています。
WorkManager では、Executor、コルーチン、RxJava のどれを使うかによって、利用する API が違います。このエピソードでは、作業が完了したときに結果を返す方法についても説明しています。さらに Ben は、これまでの MAD 動画の中で最高級の “Let’s go” を披露しています。
高度な設定とテスト: さらに Ben は、WorkManager の初期化をカスタマイズする方法、複数のプロセスにまたがるアプリをサポートする方法、Worker をテストする方法について解説し、便利なデバッグ テクニックもご紹介しています。
今回の、 AndroidX リリースは、ほとんどがバグの修正です。
ご存知の通り、私は Hilt を担当しています。今回は広く、Hilt のベータ版をリリースしたことをお伝えしたいと思います!ViewModel、WorkManager、Navigation をサポートする Hilt の API と AndroidX 固有の API は、すべて安定版です。Hilt は Android で依存関係の注入を行う際の Jetpack の推奨ソリューションです。今回は、クイック リファレンスを公開しました。Hilt と Dagger のさまざまなアノテーションが行う処理の内容と、それを使う方法をすばやく調べることができます。
また、Jetpack Compose や Navigation コンポーネントを使い始めた方のために、hilt-navigation-compose ライブラリを新しくリリースしています。これを使うと、Navigation Compose で作成したナビゲーション グラフの遷移先がスコープになった ViewModel が Hilt から提供され、それを取得できます。詳しくは、こちらのドキュメントをご覧ください。
Don Turner が、Android のオーディオ レイテンシの改善と、それがリアルタイム オーディオ アプリに与える影響について解説しています。このブログ記事では、エコシステムでの変更内容と今後の計画、そして Oboe ライブラリを使って低レイテンシ オーディオ アプリを構築する方法を取り上げています。
Jetpack Compose は、常にユーザーを念頭に置いて開発されています。一番のユーザーは、デベロッパーの皆さんです。Android Studio の Compose プレビュー機能がどのように設計され、さまざまな UX の研究がそのデザインや機能にどのような影響を与えたのか、Preethi Srinivas と Paris Hsu がこちらのブログ記事(英語)で解説しています。
Wear OS Tiles が刷新されました。まだアルファ版ですが、カスタムタイルを作成できる新しい Jetpack Tiles ライブラリをリリースしました。Wear OS でタイルを使うと、アプリを開かずに情報やアクションにすばやくアクセスできます。なお、対応する Wear OS プラットフォームのアップデートが今春にロールアウトされた後、ユーザーはカスタムタイルを利用できるようになります。
Jetpack Compose チームが API ガイドラインを公開しました。Jetpack Compose API を使いこなすためのパターンやベスト プラクティス、スタイルのガイドラインがまとまっています。このガイドは Compose らしいコードを書くために参考になりますので、ぜひご確認ください。Compose API 全体の背景にある考え方を詳しく知りたい方もご一読ください。
Caren Chang と私が、Android でコルーチンを使う方法についてリアルタイム セッションで解説しました。コルーチンのドキュメントや基本の Codelab をご紹介しつつ、チャットで寄せられる質問に回答しました。
コルーチンについての学習をスタートする方は、Android Studio にアクセスし、この動画を見ながらコーディングしてみましょう。
数週間前に Jetpack Compose がベータ版になり、デベロッパー チャレンジが始まりました。その結果、1 週目には子犬の里親探しアプリが、2 週目にはカウントダウン タイマーがインターネットにあふれました。続いて 3 週目はスピード勝負、最終週の第 4 週はお天気アプリの課題にチャレンジしていただきました。
参加する時間がなかった方も、このチャレンジを活用して、ご自分のペースで Compose を試してみてください。
前回の Now in Android 以降、Android Developers Backstage に新しいエピソードが投稿されています 。以下のリンクまたはお気に入りのポッドキャスト クライアントでご確認ください。
ADB 158: Jetpack Compose… C’est bêta !
Chet Haase、Romain Guy、Tor Norbye が、Jetpack Compose チームから 4 名のゲスト Nick Butcher、Clara Bayarri、Leland Richardson、Adam Powell と「Compose がベータ版になったこと」の意味、コルーチン、マテリアル デザインの実装、ConstraintLayout などの Jetpack が提供する機能について話を聞きました。
今回は以上です。次回も Android デベロッパーの世界の最新アップデートをお届けします。お楽しみに。
この記事は Chet Haase による Android Developers - Medium の記事 "Now in Android #35" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android 開発の最新ニュースやトピックをご紹介する Now in Android。今回は Jetpack Compose ベータ版、#AndroidDevChallenge、Android 12、WorkManager、Android for Cars ライブラリ、RecyclerView、コルーチン、最新のポッドキャスト エピソードなどをご紹介します。
公開です!ついに公開です!Jetpack Compose が 2 月 24 日(日本時間 2 月 24 日)にベータ版としてリリースされました!このリリースを祝して、#TheAndroidShow を開催しました。Jetpack Compose の機能概要とライブ Q&A、そしてデモを通して、この新しいツールのリリースがなぜ待ち望まれていたのか理由をご紹介します。
日本語字幕に対応しています。ぜひ日本語に切り替えてご覧ください。
Jetpack Compose は未来の Android 向け UI ツールキットで、ネイティブ Android アプリを短時間で簡単に作成できるように設計されています。このライブラリの作業は、2019 年の Google I/O で Compose を発表して以来、オープンソースで進めてきました。昨年 8 月にアルファ版のマイルストーンに到達したばかりですが、2 月 24 日にベータ版になりました。
ベータ版は大きな成果で、プロダクトの安定化を継続するために必要な API が安定版であることを示しています。 Compose に関する多数の情報が既に公開されています。使い方を学び、今年中に 1.0 が完成したときにアプリで利用できる準備を整えるためにご活用ください。
まずは、こちらのブログ記事をご確認ください。Jetpack Compose に関するあらゆる情報や、詳しく学習する際に役立つ関連情報へのリンクが掲載されています。
また、Jetpack Compose のさまざまな機能の使い方を説明した動画とスクリーンキャストもまとめてあります。
もちろん、実際にコードを触ってみることもできます。サンプルや新しい学習 Pathway の Codelab も更新されているので、忘れずにご覧ください。
さらに、デベロッパー サイトにアクセスすると、アップデートされた最新のドキュメントを確認できます。Jetpack Compose を使い始める方法など、あらゆる情報へのリンクが掲載されています。
Android の歴史は、1.0 リリース 1 年前 の 2007 年に開催した、デベロッパー チャレンジによって始まりました。ですので、 Android 開発の世界にクールな新機能が登場するとき、その様なチャレンジが企画されることは別に不思議なことではないでしょう。
そして、Jetpack Compose がベータ版になった今こそ、もう一度チャレンジを開催すべきだと考えました。今回は、4 週間にわたって毎週 1 回ずつチャレンジを実施し、Pixel 5 を含む 1000 個以上の賞品をご用意しました。詳しくは、初回のブログ記事や 第 2 週のチャレンジ以降のブログ記事、そして#AndroidDevChallenge の ウェブサイトをご覧ください。そして、ぜひこれからも Compose でコードを書いてみてください!
またこの季節がやってきました。桜の花が咲き始め、少しずつ暖かくなり、カリフォルニアは 11 月まで雨が降らなくなります。そして、次期バージョン Android 最初のデベロッパー プレビュー をリリースしました!
今回のリリースの概要はブログ記事(日本語)に掲載されています。プライバシーやセキュリティの向上、メディアのトランスコードや AVIF イメージのサポートといったグラフィック機能など、さまざまな内容が含まれています。
さらに、Android 12 プレビュー サイトでは、動作の変更点、新機能と新しい API などを詳しく説明しています。最も重要なことは、新しいリリースで皆さんのアプリを試し、何か問題があればフィードバックを送っていただくことです。早い段階でプレビューをリリースする意味のすべてはそこにあり、最終プロダクトの公開までに完成度を上げることが目的です。
もちろん今回のリリースは、最終リリースに向けてこの先も多くの段階が待ち受ける中、第 1 歩を踏み出したに過ぎません。今後もリリースを重ねて、機能や修正の数を増やしていきますので、ご期待ください。
Android 12 は最終リリースに向かって進行中、今後のリリースに注目
今週より、MAD Skills で次のミニシリーズが始まり、Ben Weiss がその概要についてお話ししています。
WorkManager の基本: 最初の技術コンテンツとなるこのエピソードでは、Caren Chang が WorkManager の基本について解説しています。ここでは、WorkManager を使って画像をぼかす例を紹介します。コードは、WorkManager Codelab から確認できます。
新しい API Android for Cars App Library が登場します。現在はベータ版で、クローズド ソースの com.google.android.libraries.car.app の機能が元になっていますが、現在はオープンソースとして AndroidX で利用できます。
この API を使うと、Android Auto で動作するナビゲーション、駐車場、充電スポットのアプリを開発できます。ドライバー ディストラクション基準を満たし、画面フォーム ファクタや入力の違いなどの細かい点に対応してくれるテンプレートが提供されるので、開発が簡単になります。
ブログ記事(英語)と、ガイドを確認し、ライブラリを使って新しいアプリ体験を実現しましょう。
RecyclerView を扱う連載シリーズの最終回として、Meghan Mehta が ConcatAdapter を使って RecyclerView のヘッダーを実装する方法を解説します。
マルチスレッド プログラミングは厄介かもしれませんが、正しく行うことが重要です。Kotlin デベロッパーには、同時実行コードを簡単に書く方法として、コルーチンの使用をお勧めします。ただし、コルーチンを初めて使う方や、コルーチンを正しく効果的に使う方法についてアドバイスがほしい方は、こちらの新しいドキュメントをご覧ください。
新しいガイドに Kotlin のコルーチンで開発するためのベスト プラクティスをまとめました。
前回の Now in Android 以降、Android Developers Backstage にいくつかのエピソードが投稿されています。以下のリンクまたはお気に入りのポッドキャスト クライアントでご確認ください。
私は歴史にまつわる ADB エピソードが大好きです。なぜそのような仕組みになっているのかという深い謎に包まれた秘密に迫ることができるからです。今回は、Tor と Romain と私が、1.0 が登場するかなり前という初期の Android チームに関わっていたエンジニアの 1 人、Dan Bornstein に話を聞きました。Dan は、現在の Android Runtime(ART)の前身となる Dalvik ランタイムの作成に携わったメンバーです。Dalvik におけるいくつかの設計上の決断のほか、ランタイム、ガベージ コレクタ、パフォーマンスなど、ありとあらゆるテクノロジーに関するトークが登場します。
皆さんのお声をお待ちしています。今回は、Tor Norbye と Romain Guy と私が、Android Developers Backstage を改善するためにできること、またはしないことについて話します。
アンケートフォームから皆さんのご意見、ご感想をお知らせください。
Reviewed by Yuichi Araki - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing APAC
この記事は Manuel Vivo による Android Developers - Medium の記事 "Now in Android #34" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android 開発の最新ニュースやトピックをご紹介する Now in Android。今回は MAD Skills のミニシリーズ MotionLayout、マテリアル コンポーネント、KSP、AndroidX、コルーチンとインテントに関する最新のブログ記事・動画・関連ドキュメントなどをご紹介します。
今回の Now in Android は、動画とポッドキャストでもお届けします。内容は同じですが、読む量は少なくて済みます。このブログ記事版には、取り上げているすべてのコンテンツへのリンクが掲載されていますので、ぜひご覧ください。
MotionLayout についてのミニシリーズが終わりを迎えつつあります。4 回目のエピソードでは、Sean McQuillan が Motion Layout を使って折りたたみ可能なツールバーを作る方法について説明します。このようなツールバーは、この API が大活躍してくれる場所の 1 つです。MotionLayout を使ってカスタム属性をアニメーションさせる方法も習得できます。
最後のエピソードでは、デベロッパー リレーションズ チームとエンジニアリング チームからモーション レイアウトのエキスパートが参加し、リアルタイム Q&A を開催しました。
これまでのエピソードを見逃してしまった方は、MAD Skills ミニシリーズ MotionLayout のプレイリストをチェックしておきましょう。
material-components-android ライブラリの安定版として、バージョン 1.3.0 がリリースされました。MaterialTimePicker や ProgressIndicator などの新しいマテリアル コンポーネントが含まれています。その他、ダイアログなどのコンポーネント内の文字列の国際化とローカライズ、BadgeUtils クラスのパブリックへの公開も行われています。
すべての変更点は、リリースノートでご覧ください。
Kotlin で軽量コンパイラ プラグインを作成するツール、Kotlin Symbol Processing(KSP)がアルファ版になりました。アノテーション プロセッサに詳しい方向けに説明すると、KSP は KAPT に似たような機能を提供します。しかし、最大 2 倍高速で、Kotlin マルチプラットフォームを念頭において開発されています。
アノテーション処理を使っているライブラリ作成者の方は、ライブラリを KSP 互換にする方法に関するブログ記事をご覧ください。
さまざまな AndroidX ライブラリでたくさんの最新増分リリースが公開されています。また、以下の安定版リリースが含まれています。
安定版リリース以外では、Paging 3 が最初のベータ版リリースに到達しています。これは注目に値します。Paging 3 は、土台からコルーチンに対応している Kotlin を使って、大きく書き換えられています。この API は、beta01 で API 安定版に到達しました。
私は、コルーチンが Android ランタイムで実際にどのように実行されているのかを解説するブログ記事(英語)を投稿しました。Android のコルーチンは Java プログラミング言語で定義されているスレッドモデルを使うので、コードの同時実行の問題に注意する必要があります。
プライバシーは Android の最優先事項であり続けています。ユーザーの個人データの保護や、アプリがそのデータを使う際の透明性は、ますます重要になっているからです。Fred Chung の動画では、ユーザーの目に見える変更点もいくつか取り上げていますが、主にデベロッパーを対象に、新しい API、動作の変更、テストについて解説しています。1 回だけのアクセス許可オプションなどのアクセス許可の変更、ストレージ、パッケージの公開設定、個人データへのアクセスを特定する際に役立つツールなどをご紹介しています。
Nicole Borrelli が、アプリ内コールバックを実装する際に Intent ではなく PendingIntent を使うべき理由について説明しているブログ記事(英語)を投稿しました。PendingIntent を使わないと、アプリに脆弱性が残る可能性があります。
アプリの品質は、すべての人にとって重要です。Android Developers の ウェブサイトにアプリの品質セクションを新たに設けて、アプリの品質についての重要な最新情報や、高品質を実現して維持する際に役立つ情報を提供しています。アプリの中核品質チェックリストは、視覚的な体験、機能、パフォーマンスと安定性、プライバシーとセキュリティ、Google Play という観点でアプリを評価する参考になります。ユーザーから期待される水準を満たすため、このリストをデザインチームや QA チームと共有することもおすすめします。
今後は、このリストを定期的に更新して最新の状態を保つとともに、タブレットや WearOS などの他のフォーム ファクタにも拡大していく予定です。
アプリの品質については、こちらのブログ記事も併せてご覧ください。
私たちは、Android 開発をさらに多くの人に広めたいと考えています。そこで、Android 開発の教育者向けに、Kotlin による Android 開発の新しいカリキュラムを公開しました。講義のスライドから、ハンズオンの Codelab まで、必要なものをすべて含むたくさんの素材がそろっています。
グループで学びたい方のために、すべてのデベロッパーに Android Study Jams プログラムを公開しました。このコンテンツを使うと、グループのメンバーがオンライン カリキュラムを通して、好きなペースで一緒に Android を学ぶことができます。
この記事は Chet Haase による Android Developers - Medium の記事 "Now in Android #33" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android 開発の最新ニュースやトピックをご紹介する Now in Android。今回は MAD Skills のミニシリーズ Kotlin+Jetpack と MotionLayout、AndroidX、Hilt と WorkManager に関する最新のブログ記事・動画・関連ドキュメント、MotionTags スクリーンキャスト、WindowManager についての ポッドキャスト エピソードなどをご紹介します。
前回の Now in Android の後、リアルタイム Q&A をもって Kotlin と Jetpack API の利用に関するミニシリーズが完結しました。たくさんのご質問お寄せいただきありがとうございました。ぜひ録画をご覧ください。
いつものように、まとめのブログ記事(英語)には、すべてのエピソードの動画と記事、そして関連技術へのリンクを掲載しています。
MADSkills で新しいミニシリーズが始まりました。Sean McQuillan が、高度な UI アニメーションを作成できる MotionLayout API と Motion Editor ツールについてお話ししています。MotionLayout は Android の Transition API と似たような機能を提供しますが、はるかに柔軟性が高く強力で、高度なカスタム アニメーションを実現できます。さらに、複雑なアニメーションをとても簡単に作れる抜群のビジュアル エディタも搭載しています。
MotionLayout
Transition
この動画では、ConstraintSet を使って異なる状態を定義し、その状態間で UI をアニメーションさせる方法を紹介しています。Android Studio で Motion Editor を使って遷移を作成、編集する方法について、Sean が説明しています。
ConstraintSet
このエピソードでは、MotionLayout アニメーションで Keyframe を使い、さまざまなプロパティの値を時間とともに変化させてアニメーションをカスタマイズする方法を説明して
Keyframe
います。たとえば、オブジェクトが開始点と終了点の間を移動する場合、デフォルトでは直線上を移動しますが、キーフレームを使うと経路を変えることができます。
3 つ目のエピソードでは、Sean がデフォルトの 2 つ(開始と終了)に加えてさらに ConstraintSet を追加し、開始と終了の間で複数の状態を経由する複雑なアニメーションや遷移を作成する方法について説明しています。
ミニシリーズ MotionLayout のエピソードはまだまだ続きます。YouTube のプレイリストからご覧ください。MotionTags のYouTube プレイリストもチェックすることをおすすめします。MotionLayout API の特定の領域を詳しく取り上げたスクリーンキャストが掲載されています。
MAD Skills で連載しているコンテンツは、YouTube の MAD Skills プレイリスト、Medium のブログ記事(英語)、またはすべてのリンクが掲載されているランディング ページからご確認ください。
AndroidX ライブラリで、たくさんの最新増分リリースが公開されています。以下のような重要な安定版リリースが含まれていますのでご確認ください。
work-multiprocess
Manuel Vivo が投稿した新しいブログ記事(英語)で、Hilt の階層中に存在する新しい ViewModelComponent について説明しています。ViewModelComponent を使うと、型を特定の ViewModel にスコープさせることができます。一方、ActivityRetainedComponent のスコープ付き型は、すべての ViewModel で共有されます。
ViewModelComponent
ViewModel
ActivityRetainedComponent
Ben Weiss が WorkManager ライブラリの最新リリース、バージョン 2.5.0 に関するブログ記事を公開しました。このリリースでは、マルチプロセス アプリで WorkManager を簡単に使えるようになります。合わせて、バグの修正や一般的な改善も行われています。
MotionTags は、MotionLayout API の特定の領域を徹底解説するスクリーンキャスト動画集です。シリーズの最後の 2 つのエピソードが最近投稿されました。
このエピソードでは、以前公開した KeyCycle を解説している動画の続きとして、複雑なアニメーションの作り方を説明しています。
シリーズ最後のエピソードでは、KeyTrigger を取り上げています。これを使うと、アニメーションの状態(「トリガー」)に応じて発生するコールバックを通して、アプリでアニメーションを制御できます。
KeyTrigger
前回の Now in Android 以降、Android Developers Backstage に新しいエピソードが投稿されています。以下のリンクまたはお気に入りのポッドキャスト クライアントでご確認ください。
今年最初の Android Developers Backstage では、WindowManager チームの Wale Ogunwale と Rob Carr から話を聞きました。WindowManager の歴史(と複雑さ)、そして最新の進展やこの先実現する機能について話しています。
この記事は Chet Haase による Android Developers - Medium の記事 "Now in Android #32" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android 開発の最新ニュースやトピックをご紹介する Now in Android。今回はKotlin と Jetpack の API、Navigation についての新コース、最近公開されたブログ記事・動画・関連ドキュメント、ポッドキャスト エピソードなどをご紹介します。
最先端の Android 開発に関する技術コンテンツを扱う連載シリーズ MAD Skills の新しいミニシリーズ Kotlin で Jetpack API を使用する が順調に進んでいます。最初のエピソードを紹介した前回以降、3 つのエピソードが追加されました。この 3 つのエピソードでは、大まかに言えば Room ライブラリと WorkManager ライブラリの使い方に関する情報をお届けしていますが、コルーチンなどの Kotlin 機能を使ってコードをシンプルにする具体的な方法にも触れています。
このエピソードでは、Florina Muntenescu が、Room Kotlin API を使ってローカル データベース ストレージ要件を実現し、それをテストする方法について説明します。
ブログ記事(英語)でもご覧いただけます。
このエピソードでは、Florina が WorkManager を使って非同期作業をスケジュールする方法を説明します。これは、すぐに実行することも、遅延実行することもできます。
Android の Google Developer Expert の Magda Miu さんとチームメンバーは、Kotlin を使ってわかりやすく、メンテナンスしやすい CameraX のベンダー拡張機能を記述しています。その方法について動画で説明してくれました。
Kotlin と Jetpack シリーズの締めくくりとして、1 月 15 日にからもう一度リアルタイム Q&A を開催しました。
1 月 18 日の週から、新しい MAD Skills シリーズが始まっています。連載中のコンテンツは、YouTube の MAD Skills プレイリスト、Medium の記事、またはすべてのリンクが掲載されているランディング ページからご覧いただけます。
Android Basics in Kotlin コースに新しいユニット「Unit 3: Navigation」が追加されました。
このユニットでは、Navigation コンポーネントや Android アーキテクチャ コンポーネント ライブラリのその他の API に関するチュートリアルとサンプルを確認できます。
Isai Damier が暗号と認証、セキュリティについての新しい記事(英語)を公開しました。暗号に関するさまざまな興味深い背景を取り上げながら、暗号を利用した安全なソリューションで生体認証が用いられることが多い理由について説明しています。
Florina Muntenescu が、Kotlin を使えば生産性が上がるという記事を公開しました。既にたくさんの Kotlin コードを書いている方なら、おそらくご存知のことでしょう。しかし、仕事で Kotlin を使うべきか迷っている方や、プロジェクトの他のメンバーを説得する方法を探している方なら、この記事に書かれている具体的な内容が役立つかもしれません。
Meghan Mehta が RecyclerView に関する連載シリーズの第 3 回目のブログ記事(英語)を公開しました。RecyclerView でよくある要件の 1 つが、ユーザーのクリックへの対応です。リストの項目をクリックすれば、通常は何かが起こります。記事では、この機能を扱うおすすめの方法を紹介します。
2020 年末、Tor Norbye と Romain Guy、そして私がこのエピソードを収録しました。昨年、それまでとは違う働き方を模索する中で起きたことや、Android のツールやプラットフォームの最新機能について解説しています。
この記事は Chet Haase による Android Developers - Medium の記事 "Now in Android #31" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android 開発の最新ニュースやトピックをご紹介する Now in Android。今回は連載シリーズ MAD Skills のコンテンツ、最近公開されたブログ記事・動画・関連ドキュメント、ポッドキャスト エピソードなどをご紹介します。
MAD Skills シリーズに少しインタラクティブ性をもたせ、あなたのアプリがどのくらい MAD か、スコアで可視化できるようになりました。あなたの MAD スコアを確認するには、Android Studio に MAD Scorecard プラグインをインストールして実行します。すると、カードが作成され、最先端の Android 開発の大事な 4 つのトピックにおいて、皆さんのアプリを評価したスコアが表示されます。この結果は、 #MADscore ハッシュタグを付けて Twitter で共有できます。
詳しくは、MAD Score サイトをご覧ください。Christopher Katsaro のブログ記事(英語)でも詳しく説明しています。
最先端の Android 開発に関する技術コンテンツを扱う連載シリーズ MAD Skills が続いています。先週は、マテリアル デザイン コンポーネント (MDC) のシリーズが完結しました。前回の Now in Android 以降、さらに 3 つのエピソードが投稿されています。
#4: マテリアル モーション
MDC 4 つ目のエピソードでは、Nick Rout がマテリアルに動きをつける 4 つのパターンと、アプリでそれを実装する方法についてお話ししています。実際の活用例を紹介するため、Reply サンプルアプリとそのアプリに基づいた Codelab を題材に解説します。
#5: Zarah Dominguez さんからのコミュニティ ヒント
5 つ目の MDC エピソードは、Google Developer Expert の Zarah Dominguez さんが、チームでマテリアル カタログアプリを使って、各コンポーネントが実際にどのような外観になるか、またその実装例としてどのようなソースコードになるかの両方を確認している方法について説明しています。
#6: リアルタイム Q&A
最後の MDC エピソードは、これまでの App Bundle やナビゲーションのシリーズと同じく、MDC のエキスパートであるデベロッパー リレーションズ チームとマテリアル エンジニアリング チームが登場して、リアルタイム Q&A を行いました。Twitter からだけでなく、Q&A の最中も YouTube からリアルタイムで質問が寄せられました。すべてに答える時間はありませんでしたが、マテリアルについて理解を深めていただけたのではないかと思います。
MDC シリーズのコンテンツを見逃してしまった方のために、Nick Rout がシリーズのまとめのブログ記事を投稿しました。対応する動画や記事に加え、関連するサンプルやドキュメント、Codelab などへのリンクも含まれています。
12 月 第 3 週から、Kotlin と Jetpack について取り上げる新しい MAD Skills のミニシリーズが始まりました。具体的には、Kotlin と多くの Jetpack API を組み合わせて使う方法について、Florina Muntenescu が紹介しています。
#1: Using KTX
ミニシリーズ最初のエピソードで取り上げるのは、KTX の使い方です。KTX は、さまざまなプラットフォームや Jetpack ライブラリに対するアプローチを改善して簡単に使えるようにした Kotlin エクステンションです。Florina が、プラットフォームと Jetpack API の両方の例を挙げて、LiveData と ViewModel を利用する場合の使い方を示しながら、KTX の概要について説明します。
このコンテンツはブログ記事(英語)でもご覧いただけます。
#2: コルーチンで API をシンプルに
この 2 つ目のエピソードでは、Manuel Vivo が、Kotlin コルーチンを使って既存の API を簡単に利用できるようにする方法について説明します。たとえば、コルーチンを使ってアダプタを作成すれば、複雑にネストしたコールバックをシンプルに整理できます。Fused Location Provider を使うための API をシンプルにする例を挙げ、実際にこれを行う方法を解説します。
ブログ記事形式(英語)でもご覧いただけます。
これからの数週間で公開される Kotlin/Jetpack エピソードにご期待ください。YouTube プレイリストと Android Developers のブログ記事(英語)のどちらでもご覧いただけます。
連載中のコンテンツは、YouTube の MAD Skills プレイリスト、Medium の記事、またはすべてのリンクが掲載されている 便利なランディング ページ からご確認ください。
最近数回実施している Android のリリースでは、ユーザーによる制御やユーザーデータの透過性を重視することを続けているため、権限に関するいくつかの変更が行われています。場合によっては、最新のアップデートや動作の変更に追従するというデベロッパーの作業も伴います。そのため、そのプロセスをサポートするドキュメントの整備に取り組んでいます。
この作業の一環として、 Android の権限ガイドにいくつかの重要な改善を行いました。権限の仕組みに関するわかりやすいガイドのほか、アプリで権限を使う際のベスト プラクティスを確認できるようになりました。特に重要なのは、実際に権限の宣言が 必要かどうかを評価することです。多くの一般的なユースケースでは、権限は必要ではありません。
いくつかの Room ライブラリ ガイドを全面的に改訂し、一部の API の使い方をわかりやすく説明するようにしました。
Room DAO を使用してデータにアクセスするでは、組み込みのクエリーを使う方法や、@Query アノテーションを使うカスタムの方法など、DAO インターフェースの使い方の概要を説明しています。
Write asynchronous DAO queries では、UI スレッド以外で実行するクエリーの書き方についてさらに詳しく説明しています。データベースを操作する場合、この方法が求められることが非常に多くあります。このガイドでは、好みの言語や非同期 API に応じて利用できるいくつかの代替手段についても解説しています。
最近たくさんのアルファ版、ベータ版、RC 版の AndroidX ライブラリがリリースされましたが、安定版のリリース内容は次のとおりです。
Exifinterface 1.3.2、Media 1.2.1、Navigation 2.3.2 など、いくつかの安定版でもバグ修正リリースが行われています。
Jamal Eason が Android Studio の次期リリースについてのブログ記事(日本語)を投稿しました。現在、Canary チャンネルに Arctic Fox がリリースされ、試せるようになっています。このリリースについてまず注目すべき点は、新しい命名スキームとバージョニング スキームです。この記事では、その内容について詳しく説明しています。さらに、このリリースには、デバイスとペア設定して Wi-Fi デバッグを行うための UI(現在のところ MacOS のみ)、レイアウト検証ツール、継続的に行われている Jetpack Compose 開発のサポートなどが含まれています。なお、現段階のバージョンはかなり初期の状態です。Compose を利用する場合は常に Canary 版の Studio を使う必要がありますのでご注意ください。
Murat Yener も、新しい Android Studio に関するブログ記事(日本語)を投稿しました。この記事では、Android Gradle プラグインの新しいアルファ版リリースであるバージョン 7.0.0-alpha01 について説明しています。なお、AGP もバージョン名が変更されました。今後、AGP は Android Studio のバージョンと連動するのではなく、Gradle のリリース バージョンに追従する形になります。現在の 4.2 リリースからいくつかバージョン番号が飛んでいるように見えるのは、そのためです。この記事では、AGP 4.2 における最新 API のいくつかの変更点についても説明しています。
Meghan Mehta が、RecyclerView についてのシリーズにブログ記事を投稿(英語)しました。RecyclerView は新しいものではありませんが、おそらく、ほとんどの Android デベロッパーはすでにアプリで使っているはずです。一部の基本的なドキュメントやサンプルがドキュメントや記事の中で見つけにくいことがわかったので、基本から使い方を説明しています。さらに、実例を示すためのサンプルコードも提供します。
この最新記事では、ListAdapter の使い方を重点的に説明します。ListAdapter を使うと、パフォーマンスの向上や項目の自動アニメーションなどのすばらしい機能を RecyclerView で簡単に実現できます。ListAdapter は DiffUtil を使って発生した具体的な変更を確認します。RecyclerView は、それを使ってパフォーマンスやアニメーションを最適化します。
私は引き続き、最近 1.0 に到達した AndroidX ライブラリである App Startup についての 2 回シリーズの記事(英語)で、起動時のパフォーマンスについて説明しています。パート 1 では、ライブラリのインスタンス化に Content Provider が使われることが多く、それによってアプリの起動時間に見えない影響が生じている点について説明しました。
パート 2 では、App Startup ライブラリを使って見えない Content Provider を取り除き、代わりにライブラリの遅延初期化リクエストをプーリングする方法について検討します。
Android Developers ブログには、位置情報のシステムと API に加えた改善について詳しく説明した記事(日本語)が投稿されています。この改善により、都市部で正確な位置情報を得られるようになります。この記事では、都市部で GPS 位置情報を取得する際の問題点について説明しています。GPS テクノロジーは、デフォルトで対象が見通し線上にあることを前提としているので、信号が高層ビルで反射する都市部ではうまく機能しない場合があります。Tor と私は、2014 年の ADB ポッドキャストで、位置情報チームの Marc Stogaitis から、「アーバン キャニオン」と呼ばれるこの現象について話を聞きました。
このチームは、精度の高い位置情報を得るために、主要都市の 3D 建造物モデルを統合しました。現在、一部の Pixel デバイスでこの技術のバージョン 2 を利用できます。初期バージョンはすでにエコシステムで広く使われており、来年の早いうちにこの最新バージョンも利用できるようになる予定です。
もちろん、この機能はユーザー機能で、Now in Android はデベロッパーが対象です。しかし、ここでこの機能を紹介したのは、(a)この記事と技術は興味深く、(b)デベロッパーは Fused Location Provider(FLP)を使って高度な位置情報データにアクセスすることが求められる場合があるからです。
さらに、FLP に新しい API が追加され、現在の位置情報をはるかに簡単に取得できるようになっています。具体的には、位置情報の変化をサブスクライブして最初の結果が得られたときにサブスクライブを解除するのではなく、現在の位置情報をリクエストして結果を得ることができます。詳しくは、FLP の getCurrentLocation() API のドキュメント、新しい CurrentLocationKotlin のサンプル、そしてブログ記事をご覧ください。
Chris Banes は、Tivi アプリを現在の UI Toolkit を使うアプリから、Jetpack Compose を使うアプリに移行しています。すべての UI を Compose 化し、移行作業の大部分を終えたところで、APK サイズ(大幅に減少)、メソッド数(減少)、ビルド時間(少し減少)について興味深い結果をブログ記事(日本語)で報告してくれました。
CameraX の CameraView API は、UI の制御から制御ロジックまで、あまりに多くのことを行い過ぎていました。そこで、ロジックをリファクタリングし、PreviewView と新しい CameraController クラスに分割しました。このブログ記事(英語)では、CameraController の使い方を説明するとともに、これまでの CameraView を使った機能との比較を行っています。
Romain Guy、Tor Norbye と私は、Square の Jesse Wilson 氏から、OkHttp、Okio、[Ok]Moshi など、同氏が手がけたいくつかの有名なオープンソース ライブラリについて話を聞きました。これらのライブラリのほかにも、Android、ライブラリ、フレームワーク、Kotlin 開発について語り合っています。また、機能リクエストや細かな問題を新しいオープンソース ライブラリを作るプロジェクトにしてしまう一部のエンジニアの厄介な癖に関する話題も登場しました。
Reviewed by Takeshi Hagikura - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing APAC