この記事は Florina Muntenescu による Android Developers Blog の記事 "What's new in Jetpack" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android Jetpack は、デベロッパーがベストプラクティスに従って、ボイラープレート コードを削減し、Androidのバージョンやデバイス間で一貫して動作するコードを書くためのライブラリ、ツール、ガイダンスを統合したものです。現在、Google Play の トップ 1000 アプリのうち 84 % がJetpack を利用しています。この記事では、Jetpack の最新のアップデートをまとめてご紹介します。
CameraX ライブラリは、デバイス固有の互換性の修正や回避策を含む、OS のバージョンを超えてカメラ機能にアクセスするための統一された API サーフェスを提供します。最新の改良点は、露出補正のサポートや、カメラの状態や機能に関するより詳細な情報へのアクセスなど、多数寄せられた機能要望にお応えした内容となっています。さらに、FPS レンジなどのカメラ設定を、カメラを動作中に Camera2Interop 経由で変更できるようになりました。また、ハイダイナミックレンジのプレビュー、ズーム比の調整、Android の Do Not Disturb モードへの対応など、最新のデバイスや OS の機能にも対応しています。特に重要なのは、パフォーマンスへの取り組みで、特に古いデバイスにおいて、画像の取り込みや初期化が高速化されています。
Hilt は、Dagger 上に構築されている、Jetpack 推奨の依存関係注入ソリューションです。安定版への移行の一環として、Hilt の ViewModel サポートはコア Hilt Android API に移され、SavedStateHandle が ViewModelComponent で利用可能なデフォルトの依存関係として追加されています。また、Hilt は Navigation および Compose と統合されています。適用範囲を宛先またはナビゲーション グラフ自体とした注釈付き Hilt ViewModel を取得できます。複数のデベロッパーの皆さんが、すでにアプリで Hilt を使い始めています。そのケーススタディは、こちらのブログ記事 (英語) をご覧ください。
ViewModel
SavedStateHandle
ViewModelComponent
Paging ライブラリを使用すると、データの小さなチャンクをロードおよび表示してネットワークとシステムのリソース消費を改善できます。このリリースでは、全体を Kotlin で書き直すことによって コルーチンおよび Flow を完全にサポートし、RxJava および Guava プリミティブを使用した非同期ロード、リポジトリおよびプレゼンテーション層の全体的な改善を提供します。
3.0 リリースでは Paging 2 と比べて使い勝手が大幅に改善され、書き直しは部分的および段階的移行を念頭に計画されたため、デベロッパーの皆さんはご自身のスケジュールに合わせて移行できます。詳細および実践については、Paging 3.0 のドキュメントおよび Paging 3.0 のCodelab をご覧ください。
Jetpack のレイアウト設計を柔軟に行うためのシステム ConstraintLayout、モーションおよびウィジェット アニメーションの管理を目的とした MotionLayout は現在安定版です。MotionLayout では、折りたたみデバイス、イメージ フィルタ、モーション エフェクトがサポートされています。デザインツールの新機能について詳細は、こちらの Google I/O セッションをご覧ください。
ConstraintLayout
MotionLayout
Security Crypto ライブラリを使うと、ファイルや SharedPreferences を安全かつ簡単に暗号化できます。SharedPreferences を暗号化するには、EncryptedSharedPreferences オブジェクトを適切なキーとスキームで作成し、このオブジェクトを標準の SharedPreferences オブジェクトのように使用します。
SharedPreferences
EncryptedSharedPreferences
val prefs: SharedPreferences = EncryptedSharedPreferences.create( context, "prefs_file_name", mainKey, prefKeyEncryptionScheme = AES256_SIV, prefValueEncryptionScheme = AES256_GCM,)// Use the resulting SharedPreferences object as usual.prefs.edit() .putBoolean("show_completed", true) .apply()
context,
"prefs_file_name",
mainKey,
prefKeyEncryptionScheme = AES256_SIV,
prefValueEncryptionScheme = AES256_GCM,
)
// Use the resulting SharedPreferences object as usual.
prefs.edit()
.putBoolean("show_completed", true)
.apply()
この1年間、Fragment ライブラリは内部の実装を整理して明文化されていない動作を削減するための大規模な変更を行いました。これにより、デベロッパーの皆さんは、アプリやゲームのベスト プラクティスに倣って信頼できるテストを記述しやすくなりました。これは、Navigation で複数のバックスタックをサポートするなど、将来的なライブラリの改善のための基礎となるもので、厳密化された API に対応するためには、いくつかの作業が必要になるかもしれません。実際に、ライブラリを更新した後のテストには細心の注意を払う必要があります。特に注意が必要なケースについては、Fragmentのリリースノートをご確認ください。
最新リリースでは、ActivityResult の統合も行われ、フラグメントから Activity の結果を登録することが可能になりました。 Fragment には、柔軟性があまり高くない onAttachFragment メソッドの代わりに、新しい FragmentOnAttachListener インターフェースも追加されています。Fragment または FragmentActivity でこのメソッドを上書きする既存のコードは引き続き機能しますが、新しいコードが柔軟性の高くない手法を誤って採用するのを防ぐため、onAttachFragment を非推奨にしました。
onAttachFragment
FragmentOnAttachListener
Fragment
FragmentActivity
// Obtain the fragment manager.May be a childFragmentManager,// if in a fragment, to observe child attachment.val fm = supportFragmentManagerval listener = FragmentOnAttachListener { fragmentManager, fragment -> // Respond to the fragment being attached.}fm.addFragmentOnAttachListener(listener)
// if in a fragment, to observe child attachment.
val fm = supportFragmentManager
val listener = FragmentOnAttachListener {
fragmentManager, fragment ->
// Respond to the fragment being attached.
}
fm.addFragmentOnAttachListener(listener)
ライブラリの機能が完成すると、安定化のためにベータ版に移行します。現時点では、重要な問題やコミュニティからのフィードバックに対してのみ、API を変更しています。
DataStore は、シンプルで非常に有用な API サーフェスを維持しながら、SharedPreferences の欠点を解決する堅牢なデータ ストレージ ソリューションを提供します。DataStore は、Flow と RxJava による Kotlin のコルーチンのようなベストプラクティスをサポートします。DataStore では、Preference DataStore 経由でキーと値のペアを格納したり、Proto DataStore 経由でプロトコル バッファがバックアップする型付きオブジェクトを格納できます。さらに、Kotlin Serialization のような独自のシリアル化ソリューションをプラグインすることもできます。
アルファ版ライブラリは、現在開発中のライブラリです。API の追加、変更、削除が行われる可能性がありますが、ライブラリのコンテンツはテストされていますので、高い機能性を備えています。
AppSearch は高性能で機能豊富なフルテキスト検索機能を提供する新しいデバイス内検索ライブラリです。SQLite と比較すると、AppSearch は複数の言語をサポートし、クエリ結果のランク付けがシンプルで、大きなデータセットのインデックス作成や検索の遅延がより少なくなります。
AppSearch 1.0.0-alpha01 は LocalStorage をサポートしています。これによって、アプリケーションは「ドキュメント」と呼ばれる構造化されたデータを管理し、それに対してクエリを実行することができます。アプリケーションは、「スキーマタイプ」を使って、構造がどのようなものかを定義します。例えば、メッセージは、件名、本文、送信者などのデータを持つスキーマタイプとしてモデル化することができます。
ビルダーを使用してスキーマ タイプのドキュメントを作成し、ストレージに追加します。"body:fruit" とクエリを実行すると、メッセージの本文に用語「fruit」があるすべてのドキュメント検索できます。
Android S では、AppSearch はアプリケーションのデータを他のアプリケーションと安全に共有し、追加のネイティブ ライブラリへのリンクを不要にすることで、アプリケーションのバイナリサイズを削減できる PlatformStorage も提供します。ライブラリがまだ Android S SDK を対象としていないため、現時点では Jetpack で PlatformStorage は使用できません。
デバイス全体の検索に統合するための Android S の中央ストレージ
Room は推奨されているデータ永続化レイヤであり、プラットフォーム上での使い勝手と安全性が向上します。
Room 2.4.0-alpha は自動移行をサポートしています。データベース スキーマが変更された時に、@AutoMigration を宣言して、どのバージョンからどのバージョンに移行したいかを示すと、Room が移行を生成してくれるようになりました。より複雑な移行を行う場合は、引き続き Migration クラスを使用できます。
@AutoMigration
Migration
@Database(- version = 1,+ version = 2, entities = { Doggos.class },+ autoMigrations = {+ @AutoMigration (from = 1, to = 2)+ } )public abstract class DoggosDatabase extends RoomDatabase { }
- version = 1,
+ version = 2,
entities = { Doggos.class },
+ autoMigrations = {
+ @AutoMigration (from = 1, to = 2)
+ }
public abstract class DoggosDatabase extends RoomDatabase { }
Room 2.3.0 安定版では、 Kotlin Symbol Processing が試験的にサポートされ、Kotlinコードのベンチマークでは、KAPTに比べて2倍の速度向上が見られました。また、enumとRxJava3のサポートも組み込まれています。
またRoom は、の実行時にコールバックを提供する QueryCallback クラスが導入され、ロギングなどのタスクがシンプルになりました。また、新しい@ProvidedTypeConverter アノテーションが導入され、型コンバータの作成がより柔軟になりました。
QueryCallback
@ProvidedTypeConverter
WorkManager ライブラリは、アプリが終了またはデバイスが再起動しても実行される延期可能な非同期タスクをスケジュールする方法として Android で推奨されています。すべてのタスクが確実に実行されるようにタスク照合の信頼性が向上し、さらに特定の Android OS バージョン向けのさまざまな回避策も提供されています。
WorkManager の機能の最新バージョンでは、マルチプロセス アプリのサポートが強化されています。作業リクエストのスケジュールを 1 つのプロセスに統合することで、多数のリクエストをスケジュールする際のデータベースの増大を抑制してパフォーマンスを向上するメリットがあります。
Android S SDKを対象としたバージョン 2.7(現在アルファ版)では、Android OS の新しいフォアグラウンド制限への追加サポートに対応しています。詳しくは、Effective Background Tasks on Android セッションをご覧ください。
Android Studio Arctic Fox で利用可能な Background Tasks Inspector は、最新のライブラリを使うと WorkManager のジョブを簡単に表示してデバッグできます。
Background Tasks Inspector
アプリ内の目的地間を移動するための Jetpack のフレームワークである Navigation ライブラリは、複数のバックスタックをサポートし、ボトムナビゲーションバーのように目的地が同じ深さにある場合にも簡単に対応できるようになりました。
Macrobenchmark ライブラリは、アプリの起動やスクロール パフォーマンスなどの統合された動作まで、Jetpack のベンチマーク範囲を拡張します。このライブラリは、継続的な統合テストでメトリクスを追跡するためにリモートで使用することも、プロファイリングの結果をAndroid Studioから表示するためにローカルで使用することもできます。詳細については、Google I/O のセッションをご覧ください。
Google アシスタントともっと密接した統合を希望しているデベロッパーのために、Google Shortcuts ライブラリは、既存の ShortcutInfo クラスを通じて、Google アシスタントやその他の Google サービスにアクションを公開する方法を提供します。
ShortcutInfo
ShortcutManager を介して一度に最大 15 個のショートカットを送信し、他のサービスの中から Google アシスタントに表示させ、音声やその他のインタラクションで利用できるようにします。
ShortcutManager
これを実装するには、ショートカットに Intentと機能バインディングを定義します。このバインディングは、Google サービスがユーザーに提供する最善の方法を見出すのに役立つ重要な情報を提供します。
// expose a "Cappuccino" action to Google Assistant and other servicesShortcutInfoCompat siCompat = ShortcutInfoCompat.Builder(ctx, "id_cappuccino") .setShortLabel("Cappuccino") .setIntent(Intent(ctx, OrderCappuccino::class.java)) .addCapabilityBinding( "actions.intent.ORDER_MENU_ITEM", "menuItem.name", asList("cappuccino") ) .build()ShortcutManagerCompat.pushDynamicShortcut(ctx, siCompat)
ShortcutInfoCompat siCompat =
ShortcutInfoCompat.Builder(ctx, "id_cappuccino")
.setShortLabel("Cappuccino")
.setIntent(Intent(ctx, OrderCappuccino::class.java))
.addCapabilityBinding(
"actions.intent.ORDER_MENU_ITEM",
"menuItem.name",
asList("cappuccino")
.build()
ShortcutManagerCompat.pushDynamicShortcut(ctx, siCompat)
アプリ内でユーザーが作成したすべてのコンテンツには 🎉 が含まれ、最新の絵文字をサポートすることは、あなたのアプリまたはゲームを ✨ にするために重要な要素です。API 19以降で最新の絵文字をサポートする EmojiCompat ライブラリは、従来の :emoji:emoji アーティファクトに代わる新しいアーティファクト emoji2:emoji2 に移行しました。新しい emoji2 ライブラリでは AppStartup ライブラリを使用た 🪄 自動設定が追加されています( 🐻❄️を表示するためのコード 👩🏿💻 は必要ありません)。
emoji2:emoji2
emoji2
AppCompat では、AppCompat 1.4 以降から emoji2 が追加されています。あなたのアプリまたはゲームがAppCompat を使用している場合、ユーザーは追加設定なしで最新の絵文字 ⭐ を見ることができます。AppCompat を使用していないアプリまたはゲームは emoji2:emoji2-views を追加できます。カスタム TextViews の場合は、emoji2:emoji2-views-helpers のヘルパーを使用するか、AppCompat のビューをサブクラス化することで、最新の絵文字をサポートすることができます。
emoji2:emoji2-views
TextViews
emoji2:emoji2-views-helpers
Jetpack Compose は、Android のネイティブ UI 開発用の最新ツールキットです。Android での UI 開発をシンプルにし、高速化します。Jetpack Compose は現在ベータ版で、7 月に安定版に移行する予定です。ここに掲載されているライブラリや皆さんがすでに使用している可能性のあるライブラリの多くは、Jetpack Compose との統合を目的とした機能を導入しています。Activity から ViewModel、Navigation、Hilt まで、これらすべてのライブラリを使うと、アプリに Compose をスムーズに導入できます。これらの使い方に関する詳細については、この Google I/O セッションをご覧ください。
Jetpack は、折りたたみ式デバイス、大画面デバイス、Wear デバイスなど、さまざまな形状での作業をしやすくします。大画面デバイスに対応するアプリ開発のための新しいガイドラインを導入し、、WindowManager や、SlidingPaneLayout などの Jetpack ライブラリを改善しています。詳しくは、こちらのブログ記事をご覧ください。
WindowManager
SlidingPaneLayout
以上、Jetpack の新機能を(比較的)簡単にご紹介しました。各ライブラリのアップデートの詳細については AndroidX リリースノートをご覧ください。また、Google I/O セッションでは、一部のライブラリについての詳細についてご説明しています。
Reviewed by Yuichi Araki - Developer Relations Team and Tamao Imura - Developer Marketing Manager, Google Play
この記事は Sara N-Marandi による Android Developers Blog の記事 "What’s new in Android Privacy" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
人々は、自分にとって最も大事な個人情報や機密情報を信頼して託すことができる OS とアプリを求めています。プライバシーは、Android の製品理念の中核です。Google I/O の「What’s new in Android Privacy」セッションでお話しした通り、Android 12 は、プラットフォームをさらにいっそうプライベートなものにすることで、この既存の基盤を広げ続けています。
このリリースによって、ユーザーは、アプリにアクセスされるデータに関する透明性を確保でき、かつ、シンプルなコントロールで情報に基づく選択ができるようになります。Android は、アプリが自らが提供する機能で必要なデータにのみアクセスするように、アクセス権限のスコープを小さくすることにも投資しています。ユーザーのプライバシーを保護するために私たちが Android 12 で行った、これらの重要な変更について見てみましょう。
プライバシー ダッシュボード:ユーザーの皆さんからはアプリがどのようなデータを利用しているのか知りたいというご要望をよく受けています。新しいプライバシー ダッシュボードでは、位置情報、マイク、カメラへの過去 24 時間のアクセス記録を、シンプルでわかりやすいタイムラインで確認できます。また、Android 12 に搭載された新しいパーミッション インテント API により、アプリのデータ使用に関するより詳細な情報を共有することができます。プライバシー ダッシュボードは、Beta 2 から利用可能になります。
デベロッパーの皆さんには、現在のアプリやゲームのコードを見直し、サードパーティ製 SDK を含め、データへのアクセスの必要性を把握し、すべてのアクセスが正当な利用方法か確認することをお勧めします。これをサポートするために、Android 11 にデータアクセス監査 API を追加し、現在のデータアクセスを簡単に監視できるようにしました。この API を使用してコードのどの部分が個人データにアクセスしているか追跡することで、コードのマッピングを解明できます。プライバシー ダッシュボードは Android 12 Beta 2 でお試しいただけます。
図 1.プライバシー ダッシュボードと過去 24 時間の位置情報アクセス タイムライン
マイクおよびカメラ インジケータ:Android 12では、マイクとカメラへのアクセスに透明性を持たせています。今後は、アプリやゲームがマイクやカメラの映像にアクセスしたことを、ユーザーはリアルタイムで確認できます。また、ユーザーは、クイック設定で自分のデータにアクセスしているアプリを確認でき、不審なアクセスがあった場合は、アプリの許可ページに素早く移動して、許可を取り消すことができます。
デベロッパーはマイクやカメラの使用方法を見直し、アプリやゲームからの予期せぬアクセスを積極的になくす必要があります。例えば、ユーザーがアクセスを必要とする機能をクリックする前に、アプリがこれらのセンサーにアクセスしないようにしてください。マイクとカメラ インジケータは、Android 12 Beta 2で試すことができます。
図 2.マイクおよびカメラ インジケータとトグル
マイクおよびカメラ トグル:カメラにステッカーを貼ったり、携帯電話にオーディオブロッカーを取り付けたりしている人を見たことがあるかもしれません。Android 12では、ユーザーがアプリによる端末のマイクとカメラへのアクセスを迅速かつ簡単に遮断できる 2 つの新しいコントロール機能を導入します。ユーザーの安全性を確保するため、緊急通話は対象外となります。
ユーザーがセンサーをオフにしているにもかかわらず、アクセス許可を得ているアプリまたはゲームがマイクやカメラにアクセスを試みると、そのアプリやゲームの機能を使用するためにはセンサーをオンに戻す必要があることを知らせるメッセージが表示されます。アプリがアクセス権限のベスト プラクティスに従っている場合、トグル状態を組み込むために特別なことをする必要はありません。マイクおよびカメラトグルは、Beta 2 でお試しいただけます。
おおよその位置情報:過去 2 回のリリースにおいて、私たちは位置情報へのアクセス権限を細分化しました。まず、バックグラウンド アクセスとフォアグラウンド アクセスを分離しました。次に、「今回のみ」のオプションを追加して、バックグラウンド位置情報へのアクセスをさらに制限できるようにしました。ユーザーは積極的にこれらのコントロール機能を活用し、より頻繁に選択するようになっています。このオプションが与えられたユーザーは約 80% の割合で、フォアグラウンドの位置情報へのアクセス許可を選択しません。
Android 12 では、ユーザーが自分の位置情報の共有方法と共有先をさらにコントロールできるようになり、アプリやゲームへ提供される位置情報の精度について、「おおよその位置情報」を選択することで、明確に選択できるようになります。
デベロッパーの皆さんは、ご自身のアプリやゲームの位置情報の利用方法を確認し、その機能を提供するにあたってユーザーの正確な位置情報が必要ない場合は ACCESS_COARSE_LOCATION をリクエストすることをお勧めします。また、ユーザーが位置情報の精度を下げることも想定しておく必要があります。ユーザーがおおよその位置情報を選択した場合でも、アプリが動作することを確認してください。おおよその位置情報は、Beta 1で試すことができます。
ACCESS_COARSE_LOCATION
図 3.「おおよそ」と「正確」の選択肢がある位置情報アクセス権限リクエスト ダイアログ
クリップボード読み取り通知:クリップボードにコピーされたコンテンツには、ユーザーがよくコピーするメール、住所、パスワードなどの機密情報が含まれている可能性があります。Android 12 では、アプリがクリップボードから読み取るたびに、ユーザーに通知します。アプリが getPrimaryClip() をコールするたびに、画面下部にトーストが表示されます。クリップボードのデータが同じアプリから送られてきた場合は、トーストは表示されません。初回のコールで getPrimaryClipDescription() をチェックして、クリップボードのデータのタイプを調べることで、アクセスを最小限に抑えることができます。推奨されるベスト プラクティスは、ユーザーがアクセスの理由を理解している場合にのみ、クリップボードにアクセスすることです。クリップボード読み取り通知は Beta 2 でお試しいただけます。
getPrimaryClip()
getPrimaryClipDescription()
近くのデバイスを探す権限:Android 12 では、位置情報を使わない「近くのデバイスを探す権限」に新しいランタイムアクセス権限を追加することで、データへのアクセスを最小限にします。これまで、時計などのアプリやヘッドフォンを使うアプリやゲームは、ペアリングする近くの Bluetooth デバイスをスキャンするために、位置情報へのアクセス権限をリクエストしていました。これが原因で混乱が生じ、必要ではないときに位置情報データへのアクセス権限を与えてしまう、というお声がありました。Android 12 をターゲットとするアプリでは、デバイスをペアリングするなどの利用方法で、正確な位置情報へのアクセス権限から、近くのデバイスの検出を切り離すことができます。そのためには、新しい BLUETOOTH_SCAN 権限を使用して、usesPermissionFlags=neverForLocation を宣言します。デバイスがペアリングされると、アプリは新しい BLUETOOTH_CONNECT アクセス権限を使用して、そのデバイスと通信できます。なお、位置情報を取得するために Bluetooth スキャンを使用するアプリやゲームは、引き続き位置情報へのアクセス許可が必要です。近くのデバイスを探す権限は、Beta 1 で試すことができます。
BLUETOOTH_SCAN
usesPermissionFlags=neverForLocation
BLUETOOTH_CONNECT
アプリの休止状態(ハイバネーション):昨年、Android に権限の自動リセット機能を追加しました。アプリが一定期間使用されなかった場合、Android が自動的に、ユーザーのデータにアクセスできないようにしますが、過去 14 日間で、850 万のアプリの権限がリセットされました。今年、権限の自動リセットをさらに発展させ、長期間使用されなかったアプリを自動的に休止状態に切り替え、デバイスのストレージ容量、パフォーマンス、安全性をより改善する機能を導入します。システムは、ユーザーが以前に許可した権限を取り消すだけでなく、アプリを強制停止してメモリやストレージ、その他の一時リソースを解放します。ユーザーは、アプリを起動するだけで、そのアプリを休止状態から戻すことができます。アプリの休止状態は Beta 1 でお試しいただけます。
Android 12 には、今までで最も野心的なプライバシー リリースが含まれています。これまで、デベロッパーの皆さんへの影響を考慮しながら、プライバシーを最優先にしたプラットフォームを構築するために、デベロッパー コミュニティの皆さんと連携してきました。皆さんからのフィードバックとご支援にお礼申し上げます。今回の変更点については、デベロッパー Web サイトをご覧ください。
この記事は Madan Ankapura による Android Developers Blog の記事 "Improve your app mileage with Android for Cars App library" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
4 月に、Jetpack の一部として Android for Cars App Library の最初のバージョンを発表し、デベロッパーが Google Play ストアでナビゲーション、駐車場、充電スポットのアプリを公開できるマイルストーンに到達したことをお知らせしました。
そして先日 2021 年 6 月 18日(現地時間 6 月 17 日)、デベロッパーに以下の機能を提供するバージョン 1.1 がアルファ版になりました。
すべての変更点のリストは、リリースノートをご覧ください。自動車用のアプリ開発を始めるには、最新版のデベロッパー ドキュメント、自動車向け品質ガイドライン、デザイン ガイドラインをご覧ください。
以上のライブラリ機能は、デスクトップ ヘッドユニットでのテストにのみ利用できます。これらの機能が自動車で実行できるようになった際は、改めてお知らせします。
今後の早期アクセスプログラムに参加したいデベロッパーの方は、こちらのフォームからご登録ください。また、g.co/androidforcars にアクセスすると、早速今日から Android for Cars App Library を使ってみることができます。ぜひお試しください。
Reviewed by Jake Hirakawa - Partner Development Manager, Android Auto and Hidenori Fujii - Head of APAC Developer Marketing, P&E
この記事は Alex Musil による Android Developers Blog の記事 "The top Google Play updates from I/O ‘21" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
今年の Google I/O では、Google Play を最大限に活用するために役立つたくさんのすばらしい新機能やツール、アップデートについてお知らせしました。I/O セッションですべてのアップデートを確認できますが、この記事では、インストール数の増加からエンゲージメントや収益の拡大まで、ビジネスの推進に役立つ新機能の概要をご紹介します。
※日本語字幕に対応しています
この記事は Simon Earnshaw による Android Developers Blog の記事 "What’s new with Wear" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
デベロッパーの皆さんが美しく、高品質なウェアラブル エクスペリエンスを実現するための新機能、API、ツールを備えた Wear プラットフォーム最大のアップデートを発表します。このブログ記事では、Wear 向けに優れたアプリを開発することがどのようにより簡単になったのか、また、新しいプラットフォーム用のアプリを準備するために、これら`の API やツールのプレリリース版をどのように使い始めることができるかをご紹介します。
私たちは、最新バージョンの Wear を準備するにあたって、デベロッパー向け Web サイトを全面的にリニューアルし、最新の API ドキュメント、必要な知識を体系的に学習できるラーニング pathway 、Codelab、サンプルをご用意しました。また、Wear には近日中に最新の マテリアル デザインをベースにした全く新しいコンシューマー エクスペリエンスが導入されるため、新しいデザインシステム、UI コンポーネント、UX パターン、スタイルをカバーするデザインガイドラインを更新しました。詳しくはこちらをご覧ください。
小さな (円形または正方形の) 画面向けに調整され、バッテリー寿命を最適化するように設計された新しい Jetpack API から、Jetpack Tiles API まで、優れた Wear エクスペリエンスの開発、ボイラープレート コードの削減、Wear のバージョンやデバイス間で一貫して動作するコードの作成をサポートするために、多くの新機能を追加しました。
Tiles API は現在アルファ版です。Wear OS 2 以上がインストールされているデバイスで動作をサポートしていますので、Wear エコシステムのすべてのデバイス向けにタイルを作成できます。最新のプラットフォーム アップデートが行われた後、ユーザーが使用しているウォッチにタイルが表示される予定です。詳しくはこちらをご覧ください。
ユーザー エンゲージメントとアプリの見つけやすさは、ビジネスを成長させる上で重要な要素です。そこで、Google Play ストアの大規模な改善を行います。ユーザーは、検索を使ってウォッチ用アプリを簡単に見つけたり、Wear カテゴリを見ておすすめのアプリを探したり、スマートフォンから直接ウォッチにアプリをインストールしたりできるようになり、ウォッチ上で素晴らしいアプリ エクスペリエンスをより簡単に見つけられるようにする予定です。
次世代の Wear をご提供できることを大変嬉しく思っています。スマートウォッチ用アプリの開発について詳しくは、d.android.com/wear でご確認ください。デベロッパーの皆さんが開発するアプリを楽しみにしています。
Reviewed by Saryong Kang - Developer Relations Team and Tamao Imura - Developer Marketing Manager, Google Play
この記事は The Android Team による Android Developers Blog の記事 "Android @ Google I/O: Recapping building across devices" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
今年の Google I/O では、どのようにすれば、アプリで大小さまざまな Android の画面を活用できるかについてお話ししました。この記事では、見逃してしまった方のために、知っておくべき重要なことをご紹介します。
タブレット、折りたたみ式デバイス、Chrome OS ノートパソコンなどの大画面でもうまく動作するアプリを開発することが、今までになく重要になっています。既に 2 億 5000 万台以上の大画面 Android デバイスが使われています。また、新しい折りたたみ式デバイスによってマルチタスクがさらに簡単になり、ハンズフリー アクティビティに対応したテーブルトップ モードなど、新たなエクスペリエンスが登場しています。Samsung Galaxy Z Fold2 のテーブルトップ モードで動作する Disney+ の例をご覧ください。
どんなデバイスのサイズにもシームレスに対応できるアプリの設計も、今までになく簡単になっています。たとえば、Jetpack Compose や ConstraintLayout を使ってレスポンシブ レイアウトを作成し、Chrome OS や折りたたみ式デバイスでサイズを動的に変更できます。さらに、どこに指を置くかなど、ユーザーが大画面をどのように使うかを調査したうえで、そのようなエクスペリエンスを簡単に実現できる API やツールを提供しています。
また、Android プラットフォーム、Chrome OS、Jetpack WindowManager もアップデートし、デフォルトの状態でのアプリの動作を向上させています。たとえば、デフォルトで多くの UI 要素に最大幅の値が設定されるようになったので、大画面での見栄えがよくなります。また、Display API の変更によって、既存のアプリが WindowManager を使ってウィンドウ指標を問い合わせなくても、折りたたみ式デバイスで正しくレンダリングされるようになっています。
大画面での開発サポートについての詳細は、以下の I/O セッションをご覧ください。すべての動画が日本語字幕に対応しています。
さらに詳しく知りたい方は、折りたたみ式デバイス、タブレット、大画面の最新情報のブログ記事や、エンゲージメントを向上させて評価を上げた Google Duo のケーススタディ(英語)をご覧ください。
これまでの Wear プラットフォームで最大のアップデートについてご紹介しました。このアップデートには、美しく高品質なウェアラブル エクスペリエンスを実現するために役立つ新しい機能や API、ツールが追加されます。
開発を効率化できる新しい Jetpack API も登場しました。Tiles ライブラリを使うと、特によく使う情報やアクションにすばやく直感的にアクセスできるようになります。また、もう 1 つの注目すべき追加機能が Ongoing Activities API です。これを使うと、アプリを閉じた(音楽の再生などの他のタスクを始めた)ユーザーをアプリに引き戻すことができます。現在、どちらのライブラリもアルファ版です。
健康とフィットネス向けの新たな API 群もリリースしました。デバイスのセンサーとそれに関連するアルゴリズムとの間を仲介してくれるので、アプリがアクティビティ、エクササイズ、健康に関連する高品質なデータを利用できるようになります。現在、Health Services プラットフォームのアルファ版が公開されています。
Android Studio Arctic Fox Beta をダウンロードすると、新しい Wear システム イメージのデベロッパー プレビューを試し、新しいプラットフォームでアプリの準備を始めることができます。さらに詳しく知りたい方は、以下の I/O セッションをご覧ください。すべての動画が日本語字幕に対応しています。
また、ブログ記事(英語)や、Spotify の Wear 開発ケーススタディも併せてご覧ください。
現在、Android TV OS は、毎月 8000 万台以上のアクティブなデバイスで使われ、米国では 80% の成長を遂げています。また、Android TV OS は、昨年秋に登場した Google TV エクスペリエンスの中核を担っています。Google TV は、Chromecast with Google TV、Sony のスマート TV、タブレットを含む Android デバイスのアプリなどのストリーミング デバイスで利用できます。
今年の I/O では、Android TV OS での開発を簡単にするいくつかの新しいツールや機能について発表しました。
以上のリリースにより、幅広いデバイス構成でアプリの開発やテストを簡単に行えるようになるだけでなく、最新の Android 12 や Google アシスタント、Cast 機能が TV で利用できるようになります。詳しくは、I/O の What's new in Android TV and Google TV セッションをご覧ください。なお、動画は日本語字幕に対応しています。
Android Auto のアプリは、多くの最新の自動車に搭載されているインフォテインメント ディスプレイに接続できます。これをさらに簡単にするために、先日、Jetpack の一部として Android for Cars App Library を公開しました。このライブラリを使うと、対応する自動車にナビゲーション、EV 充電スポット、駐車場のアプリを組み込めるようになります。
今後は、さらにアプリのカテゴリを拡張する予定です。Android Auto にアプリを提供することに興味がある方は、こちらのフォームから登録をお願いします。g.co/androidforcars にアクセスすると、早速今日から Android for Cars App Library をお使いいただけます。詳しくは、I/O の What’s new with Android for Cars セッションか、ブログ記事(英語)をご覧ください。
この記事は Dave Burke による Android Developers Blog の記事 "Android 12 Beta 2 Update" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
先月の Google I/O で、Android 12 最初のベータ版をリリースしました。Android 12 Beta 1 でリリースした注目の機能は、プライバシーとセキュリティを中核とした、ユーザーに適応する新しい UI や、パフォーマンスの向上が行われていることでした。デベロッパーにとって Android 12 は、スマートフォン、ノートパソコン、タブレット、ウェアラブル、TV、自動車で快適なエクスペリエンスを実現するための優れたツールです。
そして先日 2021 年 6 月 10 日(現地時間 6 月 9 日)、Android 12 Beta 2 をリリースしました。Android 12 Beta 2 では、プライバシー ダッシュボードなどの新しいプライバシー機能が追加されているほか、リリースを微調整する作業も継続しています。
Android 12 は、UI の再設計から、アプリ ウィジェット、高度な触覚機能、動画や画像の品質向上、おおよその位置情報などのプライバシー機能まで、あらゆる面で多くの変更が加えられました。関連する Google I/O セッションの要約は、後述の「Google I/O で発表した Android 12 関連情報」をご覧ください。
Android 12 Beta 2 は、 6 月 10 日より Pixel デバイスで利用でき、こちらから登録すると無線(OTA)アップデートを受信することができます。以前 Android 12 Beta 1 をインストールしているデバイスは、自動的に Beta 2 のアップデートを受信します。Android 12 Beta 2 は、一部のパートナーのデバイスでも利用できます。詳しくは、android.com/beta をご覧ください。
Android 12 Beta 2 をインストールする方法について、詳しくは Android 12 デベロッパー Web サイトをご覧ください。
今回の Beta 2 には、Google I/O でお話ししたいくつかの新しいプライバシー機能に加えて、機能、安定性、パフォーマンスを改善するためのさまざまな機能アップデートが含まれています。ここでは、いくつかのポイントをご紹介します。
プライバシー ダッシュボード - アプリがアクセスするデータについての視認性を向上させるため、プライバシー ダッシュボードを追加しました。このダッシュボードには、マイク、カメラ、位置情報にアクセスした最近のアプリが、シンプルで明確なタイムライン形式で表示されます。ユーザーはアプリに対して、プライベートなデータにアクセスする詳しい理由をリクエストできます。デベロッパーは、アクティビティで新しいシステム インテント ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD を利用してこの情報を提供できます。
アプリでこのインテントを活用し、指定された期間内のアクセスについてユーザーが理解できるよう積極的に対応することをお勧めします。自分のコードやサードパーティ製ライブラリのアクセスをトラッキングしたい場合は、Data Auditing API を利用できます。詳しくはこちらをご覧ください。
プライバシー ダッシュボードと位置情報アクセスのタイムライン
マイクとカメラのインジケーター - ステータスバーにインジケーターを追加し、アプリがデバイスのカメラやマイクを使っているときにユーザーがそれを認識できるようにしました。ユーザーがクイック設定に移動すると、どのアプリがカメラやマイクのデータにアクセスしているかを確認したり、必要に応じてパーミッションを管理したりできます。デベロッパーは、アプリでのマイクやカメラの使用について確認し、ユーザーが予期しない形で使用している場合はそれを削除するようにしてください。詳しくはこちらをご覧ください。
マイクとカメラの切り替え - マイクやカメラに対するアプリからのアクセスをすぐに簡単に無効化できるように、サポート対象のデバイスで、クイック設定に切り替え機能を追加しました。これをオフにすると、アプリからセンサーにアクセスしても、カメラや音声のフィードは空になります。その際にシステムは、アプリの機能を使うにはアクセスを有効化する必要があることを通知します。デベロッパーは、新しい API SensorPrivacyManager を使って、デバイスで切り替えがサポートされているかどうかを確認できます。
マイクとカメラの制御は、アプリのプラットフォームのターゲットにかかわらず、すべてのアプリに適用されます。詳しくはこちらをご覧ください。
クリップボード読み取り通知 - アプリがクリップボードを読み取っていることを明示的にするため、Android 12 では、アプリが getPrimaryClip() を呼び出すたびに画面下にトーストが表示されます。クリップボードにコピーしたのが同じアプリである場合、トーストは表示されません。アプリからのクリップボードの読み取りは最小限にとどめ、ユーザーが予測できる形でのみクリップボードにアクセスすることをお勧めします。詳しくはこちらをご覧ください。
接続エクスペリエンスの直感性向上 - ユーザーによるネットワーク接続の理解と管理を向上するため、ステータスバー、クイック設定、設定に、よりシンプルで直感的な接続エクスペリエンスを導入します。新しいインターネット パネルを使うと、ユーザーは簡単にインターネット プロバイダを切り替えたり、ネットワーク接続の問題のトラブルシューティングなどが行えます。
クイック設定による新しいインターネット コントロール
Android 12 のすべての新機能について知りたい方は、Android 12 デベロッパー Web サイトをご覧ください。
Google I/O では、Android 12 から最先端の Android 開発ツール、Wear や折りたたみ式デバイスなどの新しいフォーム ファクタ、Google Play まで、デベロッパー向けの Android の新機能についてお話ししました。ここでは、Google I/O の Android 12 関連の話題のうち、押さえておきたいトップ 3 をご紹介します。
#1 Android 向けの新しい UI - Android 12 では、Android 史上最大のデザイン変更が行われました。色、形状、明るさ、動きなど、エクスペリエンス全体を再考し、Material You と呼ばれる 1 つのデザイン言語によって Android 12 の表現力、ダイナミックさ、パーソナル性を高めています。
#2 パフォーマンス - Android 12 では、根本的なシステムのパフォーマンス、バッテリーの寿命、フォアグラウンド サービスの変更、メディアの品質とパフォーマンス、アプリを最適化するための新ツールなど、パフォーマンスを向上する大規模な変更を行っています。
#3 プライバシーとセキュリティ - Android 12 でも引き続き、ユーザーのデバイスとデータのセキュリティを保護しながら、透明性と制御性を高めることに努めています。
デベロッパー向けの Android 12 の機能概要を確認したい方は、今年の What's new in Android セッションをご覧ください。アプリの互換性テストに関する概要を確認したい方は、Top 12 tips to get ready for Android 12 セッションをご覧ください。Google I/O のすべての Android 関連のコンテンツは、こちらからご確認ください。
Pixel などの対応デバイスで Android 12 Beta を利用するアーリー アダプターやデベロッパーが増えてきた今が、アプリを Android 12 Beta 2 対応にする絶好のタイミングです。
アプリの互換性テストを行うには、Android 12 Beta を実行しているデバイスかエミュレータに、Google Play や他のソースで公開されているバージョンをインストールします。そしてアプリのすべてのフローを試し、機能や UI の問題を確認します。
特に注意してテストを行うべき点については、動作の変更点を参照してください。現時点でアプリの targetSdkVersion を変更する必要はありません。そのため、問題を解決でき次第、Android 12 Beta ユーザーのためにできる限り早くアップデートを公開しましょう。
Beta 2 をリリースしたので、Android 12 は 2021 年 8 月の Platform Stability に近づいています。その時点で、アプリに関連するシステムの動作、SDK/NDK の API、非 SDK リストが確定します。このタイミングで最終的な互換性テストを終え、完全に互換性があるバージョンのアプリ、SDK、ライブラリをリリースしてください。デベロッパー向けのタイムラインの詳細は、こちらをご覧ください。
今回の Android 12 Beta 2 リリースには、Android 12 の最新機能を試し、あなたのアプリの動作をテストしてフィードバックを提供するために必要なすべてのものが含まれています。サポート対象となっている Pixel デバイスを登録するだけで、OTA(無線)でアップデートを入手できます。また、Android 12 に対応したアプリの開発を行うために、Android 12 SDK をセットアップしてください。
Android 12 Beta 2 は、Sharp などの一部の主要メーカー パートナーのデバイスでも利用できます。Android 12 Beta に対応しているデバイス パートナーの全リストは、android.com/beta に掲載されています。さらに幅広くテストしたい場合は、Android GSI イメージで Android 12 Beta をお試しください。デバイスをお持ちでない場合は、Android Emulator でテストできます。
Beta 2 は Android TV でも利用できるので、最新の TV 機能を確認したり、新しくなった Google TV エクスペリエンスでアプリの動作をテストできます。ADT-3 デベロッパー キットをお使いください。詳しくはこちらをご覧ください。
Android 12 Beta の詳細については、Android 12 デベロッパー Web サイトをご覧ください。
Reviewed by Takeshi Hagikura - Developer Relations Team and Hidenori Fujii - Head of APAC Developer Marketing, P&E
今年の 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
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 のような極端に引き延ばされることが多いマテリアル コンポーネントの最大幅の値を導入し、新しいガイダンスも提供しています。詳しくは、こちらのセッションをご覧ください。
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 デベロッパーの世界の最新アップデートをお届けします。お楽しみに。
この記事は Oscar Wahltinez による Android Developers Blog の記事 "What's new in foldables, tablets, and large screens" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
ユーザーは より大きな画面で、かつ、1 台のデバイスのみを活用し、より多くのことができることに価値を見出しています。大画面デバイスに対応したアプリは、その価値をさらに高めることができます。
折りたたみ式デバイスは、大きな画面を持つデバイスの使い勝手を向上させました。タブレットのような画面サイズのデバイスをポケットに入れて持ち運べる様になり、従来型のスマートフォンでは実現の難しかった使い方ができるようになります。アプリのエコシステムへの影響について考えると、とてもワクワクします。このハードウェアの大きな変化は、スマートフォンで新しくできるようになることがあるに違いない、という期待をもたらしているからです。私たちは、この大画面化の流れは、タブレットにも及ぶと考えています。同じようなアプリ エクスペリエンスでも、画面の大きいデバイスで操作した場合は、段違いに評判が良くなります。
このブログ記事では、大画面向けにアプリを準備するときに何をすべきか、アプリの開発を効率化する最近のアップデートについてご説明します。まずはじめに、大画面についての私たちの考えと、アプリを最適化するべき理由についてお話しします。
この 1 年で、各社が新しい折りたたみ式デバイスやタブレットを発表しています。また、ユーザーが自宅で新型デバイスを使ってより多くのことをしようとしているため、需要も増加しています。つまりデベロッパーの皆さんは現在、Android の大画面デバイス向けにアプリを開発すると、2 億 5,000 万台以上のアクティブな折りたたみ式デバイス、タブレット、Chromebook にリーチすることができます。タブレット の売上は 2020 年に16% 増加し、アナリストは 2023 年までに 4 億台以上の Android タブレットが登場すると予想しています。また、Android アプリは、現在 2 番目に人気のあるデスクトップ OS である ChromeOS でも動作します。
大画面化によって、ユーザーのデバイスとの付き合い方が変わりつつあります。このようなデバイスでは、メモを見ながらスライドデッキを編集したり、夜の外出に備えておすすめのレストランを調べたり、友達とチャットしながらビデオを見たりすることができます。ここでは、アプリを大画面に対応するためにサポートしなければならない機能である、基礎レベルのサポートについて説明します。大画面に対応するためには、主に 大きく分けて 3 つのカテゴリに注目します。
これらについて以下にまとめますが、詳しくは大画面アプリの品質ガイドラインを必ずご覧ください。
最初のステップは、アプリを確実に大画面向けに設計することです。これを簡単にするために、特定のウィンドウサイズのブレイクポイントとデバイスクラスを定義して、デベロッパーが最適化できるようにしました。最短のサイズが 600dp 以上のディスプレイにはタブレットレイアウトを追加し、アプリが端から端まで表示されるようにします。また、大画面は横向きで使用されることが多いため、デベロッパーはアプリが縦向きと横向きの両方で使用されるように考慮する必要があります。画面のスペースをより有効に活用できるように、マテリアル アダプティブ コンポーネントをご用意しました。詳しくは後ほどご説明します。
分割画面(またはマルチウィンドウモード)への移行や、ドラッグ&ドロップのようなジェスチャーによる操作は、ユーザーが大画面デバイスでシームレスに動作することを期待する、自然なインタラクションになりつつあります。
アプリのサイズを変更可能にすることで、アプリをシームレスにマルチタスク対応にできます。また、画面の折りたたみ/ 展開イベントを適切に処理し、アプリをマルチウィンドウモードに対応させることで、アプリがレターボックス表示になることを防げます。
多くの人は生産性を高めるためにより大きな画面を使います。そのため、タブレットは基本のキーボード、マウス、スタイラスの使用をサポートする必要があります。
Jetpack と Material Design ライブラリの UI コンポーネントをアップデートし、スマートフォンの UI を大画面に拡大しても柔軟なユーザー エクスペリエンスを開発できるようになりました。
アプリを大画面に最適化するときに最もよく使われるアダプティブ レイアウトの 1 つが、一覧・詳細UI です。例えば、メッセージングアプリでは、片側にメッセージを一覧表示し、もう片側にメッセージの詳細を表示します。
SlidingPaneLayout ライブラリのアップデート版を使うと、小さな画面では上下に重なってしまう UI も、簡単に横に並べることができます。2 ペインスタイルのレイアウトをサポートするためにアップデートされた SlidingPaneLayout は、2 ペインの幅を使って UI のレイアウトを決定します。これは、コンテンツの幅と利用可能なスペースに基づいて、横に並べることができるかどうかを自動的に判断して実行します。例えば、リストペインの 最小幅が 200dp、詳細ペインが 400dp 必要と測定された場合、SlidingPaneLayout は、少なくとも 600dp の幅が利用可能であれば、自動的に2つのペインを横に並べて表示します。
折り目やヒンジなどのディスプレイの特徴を認識する機能も追加しました。例えば、ヒンジ付きのデバイスで画面の一部が遮られている場合、自動的にコンテンツをどちらかの画面に配置します。
ロックモードも導入しました。ロックモードでは、ペインが重なったときのスワイプ動作をコントロールできます(プログラムによる切替もサポートされます)。例えば、ユーザーがスワイプで空のペインに移動するのを防ぐために、リストのアイテムをクリックしてそのペインの情報を読み込ませ、スワイプでリストに戻れるようにすることができます。2 つのビューを横並びで表示する大きさがある折りたたみ式デバイスやタブレットでは、ロックモードは無視されます。
垂直ナビゲーション レールは、機能的にはボトム ナビゲーションと同等で、より大きな画面のナビゲーションの使用感を改善し、UI のサイズを調整する時に、NavRail が指が届く範囲内に配置することをサポートします。スマートフォンは下向きに持つユーザーが多いですが、タブレットなどより大きいサイズのデバイスは横向きに持つことが多いからです。
例えば、縦スクロールが重要なアプリの場合に、NavRai lが役立ちます。このような場合、ナビゲーション バーが下部にあると表示できるコンテンツの量が減ってしまいます。特に、タブレット デバイスを横向きに使っている場合に、より顕著になります。
他にも、複数のコンポーネントをアップデートしました。アプリを大画面対応するときの最大の落とし穴の 1 つは、UI要素が画面全体に引き伸ばされることです。これを防ぐために、この問題が最も多く発生する要素、例えば下のような要素にデフォルトのmax-width を追加しました。
今後、他の要素にも同じ対応を行う予定です。これらの変更により、独特のデフォルトが提供され、アプリを大画面デバイス対応にし、アプリのレイアウトが崩れないようにサポートします。追加設定は必要ありません。コンポーネントのサイズ制限に関する詳細は、マテリアル デザイン ガイドラインをご覧ください。
UI のサイズ調整をサポートするコンポーネントのアップデートだけではなく、これらのデバイスでより良いエクスペリエンスを開発するための WindowManager Jetpack ライブラリを提供しています。このライブラリは、現在アルファ版が公開されており、折りたたみ式デバイスやタブレットをはじめとするさまざまなデバイスタイプに対応する一般的な API サーフェスを提供しています。
WindowManagerを使用すると、折り目やヒンジなどのディスプレイの特徴を検出することができます。また、そのディスプレイ機能がアプリにどのような影響を与えるかについての情報も提供されるので、最適なエクスペリエンスを生み出すことができます。例えば、ユーザーが動画を見ているときにデバイスがテーブルトップ モードに折り畳まれた場合、折りたたみ式デバイスの状態変化に反応します。
WindowManager では、API レベル 14 以降の下位互換性のある方法で、現在および最大の WindowMetrics 情報を取得する便利なメソッドもいくつか提供します。
アプリは、各デバイスに適切にコンテンツを表示するために、画面またはディスプレイのサイズを決定する必要があります。WindowMetrics API を導入したため、ディスプレイ サイズに関連する多くのメソッドが非推奨となりました。下位互換性のある代替手段として、Window Manager Jetpack ライブラリを使用する必要があります。
Android 10 では、「トップの再開アプリ」が 1 つになり、複数の再開アプリを同時に実行することが可能になりました。ほとんどのアプリケーションは、アップデートの必要なくこの変更の恩恵を受けます。ただし、マイクやカメラなどの排他的なリソースを使用しているアプリケーションは例外です。詳細については、以前のブログ記事(英語)をご覧ください。
アプリを大画面に最適化することで、ユーザー エクスペリエンスが改善され、ビジネスの成果につなげることができます。Google Play では、大画面での利用機会を活用するアプリが増えています。例えば、Google Duo は、タブレットと折りたたみ式デバイスのサポートを実装してユーザー エクスペリエンスを向上させ、アプリの評価とユーザー エンゲージメントの向上に繋がりました。
Google Duo の折りたたみ式デバイス対応最適化エクスペリエンス(Samsung Galaxy Z Fold2 など)
Google Duo のユーザー エクスペリエンスの向上に加えて、多くのアプリでアダプティブ レイアウトを採用し、大画面や折りたたみ式デバイスでの利用が可能になりました。
折りたたみ式デバイスおよび大画面デバイスの詳細については、以下の関連情報も併せてご覧ください。
この記事は Modern Android Development チーム による Android Developers Blog の記事 "Android @ Google I/O: 3 things to know in Modern Android Development" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
※日本語字幕に対応しています。ぜひ切り替えてご覧ください。
ここ数か月間で、いくつかの Jetpack ライブラリが安定版やベータ版に到達したり、アルファ版でリリースされています。主なものをご紹介します。
新機能についての詳細は、I/Oの他のセッション What's new in Jetpack、Using Jetpack libraries in Compose をご覧ください。また、Macrobenchmark の詳細については、 Measuring Jank and Startup with Macrobenchmark をご覧ください。すべての動画が日本語字幕に対応しています。
※日本語字幕に対応しています。
Android Studio Arctic Fox が提供するさまざまなインスペクターを使うと、アプリのデバッグが簡単になります。バックグラウンド作業では、Background Task Inspector を使うと WorkManager のワーカーの状態を把握できます。UI 用の Layout Inspector は、Android ビューと Compose の両方に対応しています。データベースのデバッグには、Database Inspector を利用できます。
実際のインスペクターを見てみたい方は、 What’s new in Android development tools セッションをご覧ください。
私たちは、ツールから API まで、Android における Kotlin をあらゆるレベルで改善し続け、さまざまな学習方法を提供しています。現在アルファ版の Kotlin Symbol Processing(KSP)は、KAPT より最大 2 倍高速に実行できる簡潔なコンパイラ プラグイン API です。私たちは、JetBrains と連携して IDE のパフォーマンスの問題に対処しています。その結果、自動インポート候補の表示が最大 20 倍高速になりました。また、DataBinding に StateFlow のサポートを追加し、UI で DataBinding を使わずに Flow を監視する新しい API を追加しました。すべての Kotlin の改善点は、 State of Kotlin on Android セッションでご紹介しています。
Modern Android Development(最先端の Android 開発)に関連する、今年のすべての Google I/O セッションは、こちらのプレイリストからご覧ください。
Reviewed by Hidenori Fujii - Google Play Developer Marketing APAC
この記事は Jon Markoff、Sean Smith による Android Developers Blog の記事 "Introducing Security By Design" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
アプリ開発のどの段階でセキュリティ対策を実装すべきか悩まれたことはありませんか?セキュリティをアプリ開発のライフサイクルに組み込んでおくと、たくさんの時間と費用、リスクを削減できます。Google Play の技術情報をオンラインで学習できる Google Play アカデミーで公開している「安全性を重視した設計」コースでは、デベロッパーがセキュリティの脅威を特定し、緩和して、先回りで保護できるための知識を習得できます。
Google Play を含む Android エコシステムには、デベロッパーやユーザーを保護するための多くのセキュリティ機能が組み込まれています。 「アプリのセキュリティに関するベスト プラクティスの概要 」コースは、これらの保護を一歩進めて、アプリに組み込まれた追加のセキュリティ機能を活用できるような内容になっています。たとえば、Jetpack Security は、デベロッパーがデータを適切に暗号化し、Files や SharedPreferences を暗号化するための安全でよく知られたアルゴリズムのみを提供します。root 化されたデバイスや、危険なデバイスを通じて、悪意のある人があなたのアプリを認可されていない方法で使用する可能性を懸念していませんか?SafetyNet Attestation API を使うと、危険な可能性がある使用パターンを特定することができます。特定できる使用パターンは、一般的に見られるいくつかの設計上の脆弱性で、たとえば、ファイル ストレージの共有や不適切な使用、安全でないプロトコルの使用、アクティビティなどのコンポーネントを保護しないことなどです。このコースでは、リリース後もアプリの安全を保つためのアプリのテスト方法についても解説しています。さらに、脆弱性開示プログラム(VDP)を設定してセキュリティ研究者に協力を求めることもできます。
「セキュリティ開発ライフサイクルの概要」コースでは、セキュリティ開発ライフサイクル(SDL)を採用して開発プロセスの各ステージにセキュリティを組み込む方法を学ぶことができます。SDL は業界基準のプロセスです。このコースでは、プログラムの設定の基礎、経営陣の協力を得る方法、開発ライフサイクルへの組み込み方について学習します。
また、同じくセキュリティ開発ライフサイクルの一部である脅威のモデリングについては、脅威の特定、分類、対処を行うために、攻撃者の視点で考えることを学習します。開発の設計フェーズの早い段階でこれを行うことで、はるかに少ない費用で潜在的な脅威を特定し、それを緩和する方法について計画し、ユーザーにとってのプロダクトの安全性を高めることができます。
アプリのセキュリティ強化は終わることのないプロセスです。ぜひ、「安全性を重視した設計」コースを受講してください。いくつかのミニコースを通じて、アプリ開発ライフサイクルにセキュリティを組み込む方法、潜在的な脅威をモデリングする方法、セキュリティのベスト プラクティスをアプリに組み込む方法、そして潜在的な設計の落とし穴を回避する方法を習得しましょう。