この記事は Tom Grinsted による Android Developers Blog の記事 " Google Play @ Google I/O - 3 updates you need to know " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
※ 諸事情により Google I/O 関連記事の投稿のタイミングが前後してしまいました。申し訳ありません。
Google Play チームは、インストール数の増加、エンゲージメントの向上、収益化の加速など、常にデベロッパーの皆さんのビジネス成長に役立つ新たな方法に取り組んでいます。そこで、見逃してしまった方のために、2022 年の Google I/O で発表したビジネス成長に寄与する新しい方法トップ 3 を紹介します。
ストアのカスタム掲載情報 が大幅にアップデートされ、ユーザーごとに適切なメッセージを表示できるようになっています。これにより、優れた第一印象を与えられる新たな方法を提供できました。
カスタム掲載情報への一意なディープリンクを生成できるので、ユーザーがどのチャンネルやサイトからアクセスしてきたかによって掲載情報を変えることができます。さらに、Google Play Console でカスタム掲載情報ごとに分析情報を確認できるため、それぞれの効率性を把握し、徐々に最適化することもできます。
すべてのデベロッパーが最大 50 個のストアのカスタム掲載情報を作成でき、これまで以上にユーザーに合ったストーリーを伝えることができます。また、掲載情報 1 つにつき 5 つまでの実験ができることから、大きな最適化の余地が生まれます。
LiveOps は、Google Play ストアでゲームやアプリの期間限定イベント、特典、メジャー アップデートを宣伝するためのセルフサービス マーチャンダイジング ユニットです。ベータ版に参加しているデベロッパーは、インストールの促進、エンゲージメントの向上、販売増進に役立つコンテンツを送信できます。
さらに、ディープリンクを使ってユーザーをアプリやゲームの最適な部分に直接誘導し、Google Play Console の新しい LiveOps レポーティング ダッシュボードで成果を確認できるようになっています。このレポートでは、各イベントのパフォーマンス指標を細かく確認したり、経時的な結果や、獲得、オープン、アップデートなどの実績ごとの結果を表示したりできます。
LiveOps の詳しい情報やベータ版プログラムへの参加申請は、こちらをご覧ください。
定期購入のビジネスモデルが進化するにつれて、多くのデベロッパーから、定期購入を販売する方法の柔軟性を向上させて複雑さを低減してほしいという声が寄せられています。そこで、大きなアップデートとして新しい定期購入機能 (英語) をリリースし、定期購入ごとに複数のベースプランとオファーを設定できるようにしました。複数のオファーを作成してサブスクリプション ライフサイクルのさまざまな段階をサポートすることで、新しい登録者を獲得したり、アップグレードを推奨したり、既存の登録者を維持したりできます。同時に、増える一方だった SKU を管理するコストと複雑さを大幅に減らすことができます。
さらに、期間限定でアクセス可能なプリペイド プランも利用できるので、従量課金が一般的な地域や、まだ自動更新プランに登録するほど熱心でないユーザー向けに優れた選択肢となります。アクセス期間は、期限が切れる前にアプリ内や Google Play ストアの定期購入画面からいつでも簡単に延長できます。
ここでは、Google Play で皆さんの成長と発展を支援するために行った多くのアップデートの中から 3 つを紹介しました。他の項目について知りたい方は、Google I/O の Google Play 関連の全プレイリスト (日本語字幕は YouTube の自動翻訳機能で日本語を選択してください) をご覧ください。
この記事は Dan Galpin による Android Developers Blog の記事 " 3 things to know about Android Privacy, Platform & Security from Google I/O'22 " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。※一部 I/O 関連記事の翻訳が遅れております。内容が前後してしまい、申し訳ありません。
Google I/O では実にさまざまなことが紹介されましたが、その中でプライバシー、セキュリティ、Android プラットフォームに関して大きな発表がありました。以下で説明しますが、ぜひ YouTube (英語) でこのトピックのプレイリストもご覧ください。
2022 年 4 月に、Android のプライバシー サンドボックスの初めてのデベロッパー プレビュー (英語) 版を公開したので、SDK ランタイムと Topics API をいち早く確認できます。これは、無料のコンテンツやサービスへのアクセスを危険にさらすことなく、ユーザーのプライバシーを強化した新しい広告ソリューションの実現に向けた仕組みです。
これら新技術の予備テストをして、どのようにソリューションに採用できるかを評価してください。そしてフィードバックの提供をお願いします。詳しくは、Android のプライバシー サンドボックスの概要 (動画/英語) を説明したセッションをご覧ください。
新しい Google Play SDK Index は、特によく使われる 100 以上の商用 SDK を掲載したパブリック ポータルです。SDK がリクエストするアプリのパーミッション、使われているアプリの統計情報、最もよく使われている SDK のバージョンといった情報が含まれており、SDK がビジネスやユーザーにとって適切かどうかを評価できます。Android Studio Electric Eel では、Google Play SDK Index に基づいた依存関係インサイトを見ることができます。ライブラリの作成者が特定のバージョンに「古いバージョン」のマークを付けている場合、その依存関係定義を確認しようとすると、対応する lint 警告が表示されます。ブログ記事を確認し、Google Play の新機能 (英語) や Android 開発ツールの新機能 (英語) についてのセッションを視聴しましょう。
Android 13 の 2 回目のベータ版が公開 (英語) されています。アプリごとの言語設定のサポートやテーマ別アプリアイコンなどの Android 13 の機能でアプリを強化できます。システムの「戻る」の基本 (動画/英語) についてのセッションでは、Android 13 の新しいオプトイン API について説明しています。この API により、「戻る」を扱うことを事前にシステムに伝えることで、予想可能でスムーズな「戻る」操作を実現できます。
ユーザーのプライバシーを中心としたアプリの開発 (動画/英語) についてのセッションは、新しい通知パーミッション、プライバシーを保護する写真ピッカー、近くのデバイスとのペア設定やメディア ファイルへのアクセスの際の権限の改善など、アプリをプライバシーとセキュリティの最新機能に対応させる際の参考になります。
Android メディアの新機能 (動画/英語) に関するセッションは、HDR 動画や Bluetooth LE オーディオなどの最新の標準を組み込む際に役立ちます。また、Android カメラの新機能 (動画/英語) に関するセッションでは、動画キャプチャや WYSIWYG カメラ コントロールのサポートなど、現在 CameraX で行っていることの「スナップショット」についてお話しします。
こちらから Pixel デバイスを登録すると、すぐに試すことができます。Android 13 ベータ版は、ASUS、Lenovo、Nokia、OnePlus、Oppo、Realme、シャープ、TECNO、Vivo、Xiaomi、ZTE など、さまざまなデバイスでテストできます。詳しくは developer.android.com/13 (英語) をご覧ください。
ここで紹介したのは、私たちが行っている Android プラットフォーム、ユーザーのプライバシー、セキュリティの改善のごく一部です。詳しくは、プレイリスト (動画/英語) をご覧ください。
この記事は Oscar Rodriguez による Android Developers Blog の記事 " Boost the security of your app with the nonce field of the Play Integrity API " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
先日リリースされた Play Integrity API を使って、リスクや不正行為の可能性からゲームやアプリを保護する手段を講じるデベロッパーが増えています。
Play Integrity API は、アプリの整合性、デバイスの整合性、ライセンス情報に関する便利なシグナルに加えて、シンプルでありながら非常に便利な「ノンス」と呼ばれる機能を備えています。これを正しく使うと、Play Integrity API が提供する既存の保護をさらに強化できるほか、中間者 (PITM) 改ざん攻撃やリプレイ攻撃といった特定の種類の攻撃を軽減できます。
このブログ投稿では、ノンスとは何か、どのような仕組みで動作するのか、どのように使えばアプリの保護を強化できるのかについて、詳しく説明したいと思います。
暗号学やセキュリティ エンジニアリングにおいて、ノンス (number once) とは安全な通信の中で一度だけ使われる数を指します。ノンスは、認証、暗号化、ハッシュなど、さまざまなことに応用できます。
Play Integrity API でのノンスは、Base64 でエンコードされた暗号バイナリ blob です。API の整合性チェックを呼び出す前にこれを設定すると、API の署名付きレスポンスでその値がそのまま返されます。ノンスの作成方法、検証方法によって、Play Integrity API が提供する既存の保護をさらに強化したり、中間者 (PITM) 改ざん攻撃やリプレイ攻撃などの特定の種類の攻撃を軽減したりできます。
Play Integrity API が行うのは、署名付きレスポンスで実際のノンスデータをそのまま返すことだけです。そのため、有効な Base64 でさえあれば、どんな値でも設定できます。ただし、ノンスは、レスポンスをデジタル署名するために Google のサーバーに送られます。そのため、ノンスにはユーザー名、電話番号、メールアドレスなどの個人を識別できる情報 (PII) を一切設定しないことが非常に重要です。
アプリに Play Integrity API を設定したら、setNonce() メソッドを使ってノンスを設定します。または、Kotlin 版、Java 版、Unity 版、およびネイティブ版の API でも、同等の方法が提供されています。
setNonce()
Kotlin:
val nonce: String = ... // Create an instance of a manager.val integrityManager = IntegrityManagerFactory.create(applicationContext) // Request the integrity token by providing a nonce.val integrityTokenResponse: Task<IntegrityTokenResponse> = integrityManager.requestIntegrityToken( IntegrityTokenRequest.builder() .setNonce(nonce) // Set the nonce .build())
val nonce: String = ...
// Create an instance of a manager.
val integrityManager =
IntegrityManagerFactory.create(applicationContext)
// Request the integrity token by providing a nonce.
val integrityTokenResponse: Task<IntegrityTokenResponse> =
integrityManager.requestIntegrityToken(
IntegrityTokenRequest.builder()
.setNonce(nonce) // Set the nonce
.build())
Java:
String nonce = ... // Create an instance of a manager.IntegrityManager integrityManager = IntegrityManagerFactory.create(getApplicationContext()); // Request the integrity token by providing a nonce.Task<IntegrityTokenResponse> integrityTokenResponse = integrityManager .requestIntegrityToken( IntegrityTokenRequest.builder() .setNonce(nonce) // Set the nonce .build());
String nonce = ...
IntegrityManager integrityManager =
IntegrityManagerFactory.create(getApplicationContext());
Task<IntegrityTokenResponse> integrityTokenResponse =
integrityManager
.requestIntegrityToken(
.build());
Unity:
string nonce = ... // Create an instance of a manager.var integrityManager = new IntegrityManager(); // Request the integrity token by providing a nonce.var tokenRequest = new IntegrityTokenRequest(nonce);var requestIntegrityTokenOperation = integrityManager.RequestIntegrityToken(tokenRequest);
string nonce = ...
var integrityManager = new IntegrityManager();
var tokenRequest = new IntegrityTokenRequest(nonce);
var requestIntegrityTokenOperation =
integrityManager.RequestIntegrityToken(tokenRequest);
ネイティブ :
/// Create an IntegrityTokenRequest object.const char* nonce = ...IntegrityTokenRequest* request;IntegrityTokenRequest_create(&request);IntegrityTokenRequest_setNonce(request, nonce); // Set the nonceIntegrityTokenResponse* response;IntegrityErrorCode error_code = IntegrityManager_requestIntegrityToken(request, &response);
/// Create an IntegrityTokenRequest object.
const char* nonce = ...
IntegrityTokenRequest* request;
IntegrityTokenRequest_create(&request);
IntegrityTokenRequest_setNonce(request, nonce); // Set the nonce
IntegrityTokenResponse* response;
IntegrityErrorCode error_code =
IntegrityManager_requestIntegrityToken(request, &response);
Play Integrity API のレスポンスは、JSON Web Token (JWT) (英語) 形式で返されます。このペイロードは、次の形式の平文 JSON テキストです。
{ requestDetails: { ... } appIntegrity: { ... } deviceIntegrity: { ... } accountDetails: { ... }}
{
requestDetails: { ... }
appIntegrity: { ... }
deviceIntegrity: { ... }
accountDetails: { ... }
}
ノンスは requestDetails 構造に含まれており、次のような形式になっています。
requestDetails: { requestPackageName: "...", nonce: "...", timestampMillis: ...}
requestDetails: {
requestPackageName: "...",
nonce: "...",
timestampMillis: ...
nonce フィールドの値は、以前に API に渡した値と厳密に一致する必要があります。さらに、ノンスは Play Integrity API の暗号学的に署名されたレスポンスに含まれているため、レスポンスを受け取った後に値を改変することはできません。この特性を活用することで、ノンスを使ってアプリの保護を強化することができます。
悪意のあるユーザーが、オンライン ゲームでプレーヤーのスコアをゲームサーバーに報告する不正行為のシナリオについて考えてみましょう。この場合、デバイスは侵害されていませんが、プロキシ サーバーや VPN を使うと、ユーザーはゲームとサーバーとの間でネットワークに流れるデータを参照したり改変したりできます。そのため、悪意のあるユーザーは、実際のスコアはかなり低いにもかかわらず、高いスコアを報告できることになります。
この場合、Play Integrity API を呼び出すだけでは、アプリを保護することはできません。デバイスは侵害されておらず、アプリも正当なものなので、Play Integrity API が行うすべてのチェックに合格します。
しかし、Play Integrity API のノンスを使えば、操作の値をノンスにエンコードすることにより、ゲームのスコア報告という価値の高いアクションを保護できます。この実装は次のようになります。
この手順を示したのが次の図です。
保護すべき元のメッセージが署名結果と合わせて送信され、サーバーとクライアントの両方でノンスの計算にまったく同じメカニズムを使っている限り、メッセージが改ざんされていないことを示す強力な保証となります。
なお、このシナリオのセキュリティ モデルは、攻撃がデバイスやアプリではなく、ネットワーク上で行われることを前提としています。そのため、Play Integrity API が提供するデバイスとアプリの整合性シグナルも合わせて検証することが特に重要です。
別のシナリオについて考えてみましょう。ここでも、悪意のあるユーザーが Play Integrity API で保護されたクライアント サーバー アプリと不正な行為を行おうと、侵害したデバイスをサーバーが検出できないような形で使う場合です。
まず、攻撃者は正当なデバイスでアプリを使い、Play Integrity API で署名付きレスポンスを収集します。次に、侵害したデバイスでアプリを使い、Play Integrity API の呼び出しを傍受して、整合性チェックをする代わりに以前に記録した署名付きレスポンスを返します。
署名付きレスポンスは改ざんされているわけではないので、デジタル署名は問題なく見えます。そのため、アプリサーバーは正当なデバイスと通信していると誤解する可能性があります。これを リプレイ攻撃と呼びます。
このような攻撃に対する防御の第一線となるのは、署名付きレスポンスの timestampMillis フィールドを検証することです。このフィールドにはレスポンスが作成された時間を表すタイムスタンプが含まれており、たとえデジタル署名が正当であることが検証されても、古くて疑わしいレスポンスを検出する際に役立ちます。
timestampMillis
ただし、Play Integrity API のノンスを使ってレスポンスごとに一意な値を割り当て、レスポンスが以前に設定した一意な値と一致することを検証することもできます。この実装は次のようになります。
この実装があれば、サーバーがアプリに Play Integrity API の呼び出しを要求するたびに、毎回異なるグローバルに一意な値が使われることになります。そのため、攻撃者がこの値を予測できない限り、ノンスが期待される値と一致しないので、以前のレスポンスを再利用することはできなくなります。
上記の 2 つのメカニズムはまったく異なるメカニズムで動作しますが、アプリで両方の保護が同時に必要になる場合は、1 回の Play Integrity API 呼び出しで両方を組み合わせることができます。たとえば、両方の保護の結果を大きな Base64 ノンスに追加します。両方のアプローチを組み合わせた実装は、次のようになります。
ここで紹介したのは、ノンスを使って悪意のあるユーザーに対してアプリの保護を強化する方法です。アプリでプライベートなデータを扱っている場合や、アプリが不正使用に対して脆弱な場合は、Play Integrity API を使って脅威を軽減する措置を検討することをお勧めします。
Play Integrity API の詳細を知りたい方やこの API を使ってみたい方は、g.co/play/integrityapi のドキュメントをご覧ください。
Reviewed by Mari Kawanishi - Developer Marketing Manager, Google Play
この記事は Amanda Alexander による Android Developers Blog の記事 " Google I/O 2022: What’s new in Jetpack " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android Jetpack は、最新の Android 開発の重要な柱とも言えるものです。これは 100 以上のライブラリ、各種ツール、ガイドをまとめたスイートで、デベロッパーはベスト プラクティスに従ったり、ボイラープレート コードを減らしたり、Android のあらゆるバージョンやデバイスで一貫して動作するコードを書いたりしやすくなるため、アプリ独自の機能の構築に専念できるようになります。
Jetpack は Google Play のほとんどのアプリのアーキテクチャに使用されており、現在、上位 1,000 アプリの 90% 以上で使用されています。
こちらは、I/O での「Jetpack の新機能」 (動画/英語) の拡大版として、Jetpack の最新アップデートのハイライトを紹介したものです。
以下では、次の 3 つの主要な Jetpack アップデートについて取り上げます。
最後に、いくつかの重要な機能更新を紹介します。
アプリ アーキテクチャ ライブラリとコンポーネントを使うと、堅牢で、テストや保守がしやすいアプリを構築できます。
Room は、SQLite の抽象化レイヤを提供する、推奨のデータ永続性レイヤです。プラットフォームのユーザビリティと安全性を高めることができます。
Room 2.4 では、Kotlin Symbol Processing (KSP) のサポートが安定版になりました。当社の Kotlin コードのベンチマークでは、KSP の処理速度は KAPT の 2 倍に向上しています。Room 2.4 には enum と RxJava3 の組み込みサポートも追加され、Kotlin 1.6 に完全対応しています。
Room 2.5 には、Kotlin への完全な書き換えの最初の部分が含まれます。これにより、Java プログラミング言語で書かれた旧バージョンとのバイナリ互換性も確保しながら、今後の Kotlin 関連の機能向上の基盤を提供します。また、room-paging アーティファクトを利用した Paging 3.0 の組み込みサポートにより、Room クエリで PagingSource オブジェクトを返せるようになります。さらに、マルチマップ(ネストしたマップや配列)型戻り値を使用するリレーショナル クエリ メソッドがサポートされるので、デベロッパーは追加のデータ構造を定義せずに、JOIN クエリを実行できるようになります。
@Query("SELECT * FROM Artist JOIN Song ON Artist.artistName = Song.songArtistName")fun getArtistToSongs(): Map<Artist, List<Song>>
@Query("SELECT * FROM Artist
JOIN Song ON Artist.artistName =
Song.songArtistName")
fun getArtistToSongs(): Map<Artist, List<Song>>
AutoMigrations のアップデートによってデータベースの移行がシンプルになり、新たなアノテーションとプロパティのサポートも追加されます。@Database アノテーションの新しい AutoMigration プロパティを使うと、移行元や移行先のバージョンを宣言できます。また、Room でテーブルや列の変更に関する追加情報が必要な場合も、@AutoMigration アノテーションを使用して入力を指定できます。
Database( version = MyDb.LATEST_VERSION, autoMigrations = { @AutoMigration(from = 1, to = 2, spec = MyDb.MyMigration.class), @AutoMigration(from = 2, to = 3) })public abstract class MyDb extends RoomDatabase { ...
Database(
version = MyDb.LATEST_VERSION,
autoMigrations = {
@AutoMigration(from = 1, to = 2,
spec = MyDb.MyMigration.class),
@AutoMigration(from = 2, to = 3)
)
public abstract class MyDb
extends RoomDatabase {
...
DataStore ライブラリは、SharedPreferences の問題に対処する堅牢なデータ ストレージ ソリューションです。これは、さまざまな SharedPreferences のユースケースを置き換えることができる強力な仕組みです。使い方を詳しく知りたい方は、最新の Android 開発スキル : DataStore (英語) の動画シリーズと記事をご覧ください。アプリでこのライブラリを使用できるかどうかを確認する方法、依存関係の注入と合わせて使用する方法、SharedPreferences から Proto DataStore への移行などに関するガイドを提供しています。
Paging ライブラリを使うと、データの小さなチャンクを読み込んで表示することで、ネットワークやシステム リソースの消費を抑えることができます。アプリのデータは、RecyclerView や Compose の Lazy リストで、少しずつ段階的に読み込むことができます。
Paging 3.1 は Rx と Guava 統合の安定したサポートを提供します。Paging は Kotlin コルーチンをネイティブに使用していますが、これらの統合はその Java による代替機能を提供します。このバージョンでは、無効なデータや古いデータを表す新しい戻り値の型、LoadResult.Invalid が追加され、無効化の競合状態の処理が向上しました。また、新しい onPagesPresented API と addOnPagesUpdatedListener API によって、no-op 読み込みや空ページに対する操作の処理も向上しました。
Paging 3 についての詳細は、新しくシンプルになった、Android デベロッパー サイトの Paging の基本 Codelab をご覧ください。リストを表示するアプリに Paging ライブラリを組み込む方法を確認できます。
Navigation ライブラリは、アプリ内のさまざまなコンテンツ間を移動するためのフレームワークです。
今回、新しい navigation-compose (英語) アーティファクトによって、Navigation コンポーネントが Jetpack Compose に統合され、アプリでコンポーズ可能な関数を遷移先として使用できるようになりました。
また、複数バックスタック機能が改善され、状態を記憶しやすくなりました。NavigationUI で、ポップされた遷移先の状態の保存と復元が自動的に行われるようになったので、デベロッパーはコードを変更せずに複数のバックスタックをサポートできます。
navigation-fragment アーティファクトにより大画面サポートが拡張され、構築済みの 2 ペイン レイアウト実装が AbstractListDetailFragment で提供されます。このフラグメントは SlidingPaneLayout を使用して、一覧ペイン(サブクラスにより管理される)と詳細ペイン(NavHostFragment を使用)を管理します。
すべての Navigation アーティファクトは Kotlin で書き換えられ、ジェネリクスを使用するクラス(NavType のサブクラスなど)の null 可能性に関する改善が行われています。
最新の Android 開発のベスト プラクティスを取り上げたさまざまな動画と記事で、主要なアーキテクチャ ライブラリの詳しい使い方を説明しています。最新の Android 開発スキル : アーキテクチャ (動画/英語) シリーズをご覧ください。
パフォーマンス ライブラリを使用すると、パフォーマンスの高いアプリを構築したり、高パフォーマンスを維持するための最適化方法を特定したりして、エンドユーザーのエクスペリエンスを向上できます。
特にインストール直後にアプリを使用するときなど、アプリのスピードはユーザー エクスペリエンスに大きく影響します。そのような初回エクスペリエンスを向上するために、ベースライン プロファイルを作成しました。ベースライン プロファイルを使うと、アプリやライブラリが Android ランタイムにコードパスの使用方法に関するメタデータを提供します。ランタイムは、それを使って Ahead-Of-Time コンパイルの優先順位を判断します。このプロファイル データはライブラリ全体で集計され、baseline.prof ファイルとしてアプリの APK に保存されます。そしてインストール時に、アプリとその静的にリンクされたライブラリ コードの一部を事前コンパイルするために使用されます。これによってアプリの読み込みが速くなり、ユーザーがアプリを初めて利用する際のフレーム ドロップを減らすことができます。
Google ではベースライン プロファイルをすでに活用しています。ベースライン プロファイルを採用することで、Google Play ストアアプリの検索結果ページの最初のレンダリング時間は 40% 短縮しました。ベースライン プロファイルは Fragment や Compose などの一般的なライブラリにも追加されており、エンドユーザーのエクスペリエンスが向上しています。独自のベースライン プロファイルを作成するには、Macrobenchmark ライブラリを使用する必要があります。
Macrobenchmark ライブラリは、Jetpack のベンチマーク対象をより複雑なユースケース(アプリの起動、RecyclerView のスクロールやアニメーションの実行といった組み込み UI 操作など)に拡大することで、デベロッパーがアプリのパフォーマンスを深く理解できるようにします。Macrobenchmark は、ベースライン プロファイルの生成に使うこともできます。
Macrobenchmark がアップデートされ、テストのスピードが向上し、新たな試験運用版機能が加わりました。また、TraceSectionMetric を使用したトレースベースのカスタム時間測定もサポートされ、デベロッパーが特定のコード セクションをベンチマーク測定できるようになりました。さらに、AudioUnderrunMetric によるオーディオ バッファ アンダーランの検出が可能になり、オーディオのジャンクを分析しやすくなりました。
BaselineProfileRule は、ランタイム最適化に役立つプロファイルを生成します。BaselineProfileRule は他のマクロ ベンチマークと同じように機能し、デベロッパーはユーザー アクションをラムダ式のコードで表します。以下は、コンパイラが事前に最適化すべき重要なユーザー アクションが、コールド スタート(ランチャーからアプリのランディング アクティビティを開く)である場合の例です。
@ExperimentalBaselineProfilesApi@RunWith(AndroidJUnit4::class)class BaselineProfileGenerator { @get:Rule val baselineProfileRule = BaselineProfileRule() @Test fun startup() = baselineProfileRule.collectBaselineProfile( packageName = "com.example.app" ) { pressHome() // This block defines the app's critical user journey. Here we are // interested in optimizing for app startup, but you can also navigate // and scroll through your most important UI. startActivityAndWait() }}
@ExperimentalBaselineProfilesApi
@RunWith(AndroidJUnit4::class)
class BaselineProfileGenerator {
@get:Rule
val baselineProfileRule = BaselineProfileRule()
@Test
fun startup() = baselineProfileRule.collectBaselineProfile(
packageName = "com.example.app"
) {
pressHome()
// This block defines the app's critical user journey. Here we are
// interested in optimizing for app startup, but you can also navigate
// and scroll through your most important UI.
startActivityAndWait()
Macrobenchmark でのベースライン プロファイルの生成と使用に関する詳細と完全なガイドについては、Android デベロッパー サイトのガイドをご覧ください。
新しい JankStats ライブラリを使うと、アプリの UI のパフォーマンス上の問題の追跡や分析をすることができます。これには、一般に「ジャンク」と呼ばれる、レンダリング フレームのドロップに関するレポートが含まれます。JankStats は、FrameMetrics などの既存の Android プラットフォームを利用していますが、API レベル 16 以降で使用できるようになっています。
このライブラリは、プラットフォームに組み込まれている機能以外に、新たな機能も提供しています。フレーム ドロップの原因の特定に役立つヒューリスティック、レポートに UI の状態を含めることによる追加コンテキストの提供、分析用データのアップロードに使用できるレポート コールバックなどです。
この 3 つの JankStats の主要機能について説明します。
Tracing ライブラリは、トレース イベントをシステム バッファに書き込み、アプリのパフォーマンス プロファイリングができるようにします。Tracing 1.1 は、API レベル 14 以降のデバッグ不可ビルドのプロファイリングをサポートしています。これは、API レベル 29 で追加された <profileable> マニフェスト タグに似ています。
UI ライブラリにいくつかの変更が加えられ、大画面の互換性、折りたたみ、絵文字のサポートが向上しました。
ネイティブ UI を作成するための Android の最新ツールキット、Jetpack Compose の 1.2 ベータ版がリリースされました。ダウンロード可能なフォント、lazy layout、ネストされたスクロールの相互運用性など、いくつかの機能が追加され、より高度なユースケースをサポートするようになります。詳しくは、ブログ投稿 Jetpack Compose の新機能をご覧ください。
新しい WindowManager ライブラリは、デベロッパーがアプリをマルチウィンドウ環境や新しいデバイスのフォーム ファクタに対応させる際に役立ちます。このライブラリは、API レベル 14 以降でサポートされる共通 API サーフェスを提供します。
最初のリリースは、折りたたみ式デバイスのユースケースが対象で、コンテンツの表示方法に影響する物理特性の照会などが含まれています。
Jetpack の SlidingPaneLayout コンポーネントがアップデートされ、WindowManager のスマート レイアウト API を使用できるようになりました。ヒンジをまたぐ場合など、オクルージョン領域にコンテンツが配置されないようにすることができます。
新しい DragAndDrop ライブラリも、新しいフォーム ファクタとウィンドウ モードの対応に役立ちます。デベロッパーは、アプリ内外からのデータのドラッグ&ドロップを受け入れることができます。DrapAndDrop には一貫したドロップ ターゲット アフォーダンスが含まれ、API レベル 24 以降がサポートされます。
AppCompat ライブラリを使うと、旧 API バージョンのプラットフォームで新しい API にアクセスできます。これにはダークモードなどの UI 機能のバックポートも含まれます。
AppCompat 1.4 には、Emoji2 ライブラリが統合されています。API レベル 14 以降の AppCompat でサポートされるすべてのテキストベース ビューで、新しい絵文字がデフォルトでサポートされます。
カスタム ロケール選択が API レベル 14 以降でサポートされるようになりました。アプリを再起動しても失われないロケール設定の手動永続化と、サービス メタデータ フラグによる自動永続化をサポートしています。この機能は、同期的にロケールを読み込み、必要に応じて実行中のアクティビティを再作成することをライブラリに指示します。API レベル 33 以降では、プラットフォームが永続化を管理します。これによってオーバーヘッドが増加することはありません。
Annotation ライブラリは、ツールや他のデベロッパーがアプリのコードを理解するために役立つメタデータを公開します。@NonNull のような一般的なアノテーションが提供されます。こういったアノテーションを lint チェックと組み合わせて使用することで、コードの正確性とユーザビリティを向上できます。
アノテーションは現在 Kotlin に移行中で、Kotlin を使用するデベロッパーには、より適切なアノテーション ターゲット(@file など)が表示されるようになります。
要望の多かったいくつかのアノテーションが、対応する lint チェックと共に追加されています。これには、メソッドや関数のオーバーライドに関するアノテーションや、@DeprecatedSinceApi アノテーションが含まれます。@DeprecatedSinceApi は、@RequiresApi を補うもので、特定の API レベル以上で使用を推奨しないことを示すアノテーションです。
現在、GitHub で 100 以上のプロジェクトを公開しています。以下のモジュールは、標準の GitHub ベースのワークフローを通じてデベロッパーの皆さんからのサポートを受け付けています。
Pull リクエストの処理方法と Jetpack ライブラリの開発について詳しくはウェブサイトをご覧ください。
以上は、過去数か月間に行われた Jetpack のすべての変更に関する概要です。各ライブラリの詳細については、AndroidX のリリースノートをご覧ください。API ピッカーを使用して簡単にライブラリを検索することもできます。また、その他のハイライトについては、Google I/O トーク (動画/英語) を視聴してください。
Java は Oracle および / またはその関連会社の商標または登録商標です。
この記事は Alex Musil による Android Developers Blog の記事 " What's new in Google Play " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
今年の Google I/O では、Google Play でビジネスを継続的に拡大していただくことを目的として、皆さんをサポートする 3 つの主な方法に注力しました。
I/O のセッションですべてのアップデートを確認できますが、この記事では、ビジネスの推進に役立つ新機能の概要を紹介します。
(日本語字幕は YouTube の右下の設定から選択してください)
私たちはここ数年、SDK プロバイダ、アプリ デベロッパー、そして最終的にはすべてのエンドユーザーにとって、安全で優れた SDK を実現するためのツールに取り組んできました。
アプリの品質は、ユーザーのエンゲージメントや維持率から、Google Play ストアでのアプリの見つけやすさや宣伝まで、あらゆることに影響します。
Android Vitals 以外にも、開発ライフサイクル全体で役立つ新機能があります。
以上のリリースについて詳しく知りたい方は、アプリの品質に関するセッション動画をご覧ください。
(日本語字幕は YouTube の自動翻訳機能で日本語を選択してください)
Google Play ストア上で、新規ユーザーの獲得、既存ユーザーのエンゲージメントの向上、収益の拡大などビジネスの拡大に役立つ新しい方法を提供します。
1 つの定期購入に対して、課金期間や更新タイプが異なる複数のベースプランを設定できます。たとえば、毎月自動更新されるプラン、毎年自動更新されるプラン、1 か月のプリペイド プランなどです。1 つのベースプランに対して、定期購入のライフサイクル全体に対する複数のスペシャル オファーを作成できます。たとえば、期間限定の無料トライアルを提供する獲得オファー、定期購入ユーザーにプリペイド プランから自動更新プランに移行してもらうためのアップグレード オファー、定期購入のメリットをフル活用していないユーザーを維持するためのダウングレード オファー、などがあります。オファーは、新しいユーザーにアプローチしたり、コンバージョン率を上げたり、アップグレードを推奨したり、既存の定期購入ユーザーを維持したりする際にとても役立ちます。
以上の機能は、すべて最新バージョンの Play Billing Library 5.0 で利用できます。ビジネスを拡大するために、こちらで紹介したツールやその他のツールについて詳しく知りたい方は、“Power your Success with new acquisition, engagement and monetization tools.” のセッション動画をご覧ください。 (日本語字幕は YouTube の自動翻訳機能で日本語を選択してください)
Google Play エコシステムの繁栄のためにご協力いただき、ありがとうございます。皆さんの次のアプリのリリースを楽しみにしています。
この記事は Maru Ahues Bouza による Android Developers Blog の記事 " 13 Things to know for Android developers at Google I/O!" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
何かを作ってすぐ、スマートフォンだけでなく、テレビ、自動車、タブレット、スマートウォッチを含め、世界の数十億の人々に届けることができるプラットフォームは多くはありません。今年の Google I/O では、このチャンスを最大限に活用していただけるように、Android がたくさんの方法で皆さんをサポートしていることを説明しました。また、最新の Android 開発が、可能な限り多くの共通性をもたせることで、日常生活で使用するあらゆる場面に適したエクスペリエンスを短時間で、かつ簡単に作成できるようになっていることにも触れました。
ここでは、Android デベロッパーが知っておくべきことの上位 13 をまとめています。Jetpack Compose やタブレット、Wear OS、そしてもちろん Android 13 も含まれています! Android の I/O プログラムには、26 のテクニカル セッションと 4 つのワークショップが含まれています。さらに、もう 1 つの #TheAndroidShow (動画/英語) のエピソードとして、Android ライブ Q&A も開催しました。#AskAndroid を使って質問されたツイートはエキスパート チームがライブ配信 (動画/英語) で回答しました。
Android の最新 UI ツールキットである Jetpack Compose は、ダウンロード可能フォント、LazyGrids、ウィンドウ インセット、ネストされたスクロールの相互運用性など、さらに高度なユースケースを実現する API を提供し続けています。また、Live Edit、再コンポーズのデバッグ、アニメーション プレビューといった機能を搭載したツールもサポートします。詳細はブログ投稿をご覧ください。
Android Studio Dolphin ベータ版と Electric Eel Canary を使うと、より多くのことを短時間で行うことができます。Android Studio Dolphin には、Jetpack Compose や Wear OS 開発向けの新機能や機能改善が搭載されています。また、Logcat の操作も新しくなっています。Android Studio Electric Eel には、新しい Google Play SDK Index や Firebase Crashlytics との連携機能が追加されます。さらに、大画面でアプリをテストするための新しいサイズ変更可能なエミュレータや、コンポーズ可能な関数内のコードの変更を即座にデプロイできる新機能 Live Edit も提供されます。Android 開発ツールの新機能 (動画/英語) に関するセッションを視聴し、こちらの Android Studio I/O ブログ投稿をお読みください。
インストール直後のアプリのスピードは、ユーザーの維持率に大きく影響します。そのスピードを高めるために、ベースライン プロファイルを作成しました。ベースライン プロファイルを使うと、アプリやライブラリが Android ランタイムにコードパスの使用方法に関するメタデータを提供できます。ランタイムは、それを使って Ahead-Of-Time コンパイルの優先順位を判断します。コードを一切変更せず、ベースライン プロファイルを追加するだけで、アプリの起動時間が最大 30% 短縮されます!ベースライン プロファイルは、すでに Jetpack の内部で使われています。私たちは、Fragments や Compose といった人気のライブラリにベースラインを追加して、エンドユーザーのエクスペリエンスを向上させています。アプリ フレームワークの新機能 (動画/英語) を視聴し、こちら (英語) の Jetpack ブログ投稿をお読みください。
Google は全力を挙げてタブレットに対応しています。前回の I/O 以降、大画面の最適化に注力した Android 12L をリリースしました。Android 13 にはその機能改善がすべて含まれているだけでなく、さらなる機能追加も行われています。また、来年登場する Pixel タブレットについてもお知らせしました。すばらしい新ハードウェア、アップデートされたオペレーティング システムと Google アプリ、改善されたガイドラインとライブラリ、そして刺激的な Google Play ストアの変更がそろった今こそ、アプリを見直して大画面と Android 13 に対応する絶好のタイミングです。今年の I/O で 4 つのセッションと 1 つのワークショップ (動画/英語) を開催し、大画面のデザイン (動画/英語) から実装 (動画/英語) まで、詳しく説明しているのはそのためです。
Wear OS の最新アップデートが行われた今、ウェアラブルの開発でできることを再考できます。Jetpack Compose for Wear OS は現在ベータ版です。これを使うと、これまでよりも少ないコードで、美しい Wear OS アプリを作成できます。健康とフィットネス関連のデベロッパー コミュニティに大きなイノベーションをもたらすヘルスサービスも、現在ベータ版になっています。そして今回は、Google Pixel Watch を発表しました。Fitbit と Wear OS の長所を合わせ持つもので、今秋発売予定です。ウェアラブルの期待のアップデートの詳細については、Wear OS テクニカル セッション (動画/英語) をご覧いただくか、Jetpack Compose for Wear OS のお知らせ (英語) をお読みください。
Health Connect は、Google と Samsung が密接に連携して作り上げた新しいプラットフォームです。これを使うと、簡単にアプリ同士を接続して、ユーザーの健康とフィットネスに関するデータに安全にアクセスしたり、それらのデータをすべてのアプリとデバイスで共有したりできるようになり、少ない作業で多くのユーザーに簡単にアプローチできます。5 月 11 日より、Jetpack Health から Health Connect にアクセスできるようになりました。詳しくは、お知らせ (英語) を確認するか、I/O のセッション (動画/英語) をご覧ください。
Android for Cars と Android TV OS が、米国やその他の国で拡大を続けています。ネットワークに接続しながら運転したりテレビを見たりするユーザーが増える中、今年は自動車やテレビ向けの開発がさらに簡単になる新機能を導入します。詳しくは、2 日目 (5 月 12 日) に開催された、Android for Cars の新機能 (動画/英語) や Google TV と Android TV の新機能 (動画/英語) に関するセッションをご覧ください。
Android for Cars の Shortcuts API にアクセスできるデベロッパーを拡大することにより、Google アシスタントを搭載したさまざまなデバイスで、音声を使って簡単にアプリにアクセスできるようにしています。この機能は、Wear OS (英語) アプリでも今年中にサポートされる予定です。また、Smarter Custom Intents (英語) を使ってこのようなエクスペリエンスを簡単に開発できるようにしています。具体的には、手間がかかる NLU トレーニングなしに、アシスタントが ML を通してさまざまな形態のユーザークエリを検出できるようにします。加えて、モバイルで音声を使ってアプリを見つけやすくする改善もしています。まずは、Brandless Queries によって、ユーザーが明示的にアプリの名前を話さなくてもアプリを使用できるようにします。また、まだアプリをインストールしていない場合には、App Install Suggestions が表示されてインストールを提案します。こちらの機能 (動画/英語) は、5 月 11 日より既存の App Actions で自動的に有効になりました。
Google Play を活用して皆さんのビジネスを拡大する新しい方法について、Google Play の最新情報をご覧ください。特に重要なのは、ディープリンクや最大 50 個のカスタム掲載情報を作成できる機能、Google Play ストアに掲載したいコンテンツを送信できるデベロッパーを拡大する LiveOps ベータ版、そして柔軟性が増したサブスクリプション販売などです。以上の最新情報の詳細は、ブログ投稿 (英語) をご覧ください。
新しい Google Play SDK Index で、SDK がアプリに適切かどうかを評価しましょう。この新しいパブリックポータルは、特によく使われている 100 以上の商用 SDK が登録されており、SDK がアプリのどんなパーミッションを要求するのか、SDK を使っているアプリの統計、どのバージョンの SDK が最もよく使われているのかといった情報が公開されています。ブログ (英語) 記事を確認し、Google Play の新機能 (動画/日本語字幕付き) や Android 開発ツールの新機能 (動画/英語) についてのセッションを視聴しましょう。
Android のプライバシー サンドボックス (英語) は、無料のコンテンツやサービスへのアクセスを危険にさらすことなく、ユーザーのプライバシーを強化した新しい広告ソリューションを実現する仕組みです。先日、Android のプライバシー サンドボックスの初めてのデベロッパー プレビュー版 (英語) を公開したので、SDK ランタイムと Topics API をいち早く確認できます。これら新技術を予備テストし、どのようにソリューションに採用できるかを評価し、フィードバックを提供してください。
新しい Google Wallet を使うと、Android や Wear OS から日常的に使用する機能に高速で安全にアクセスできます。私たちは、以前 Google Pay Passes API と呼ばれていた Google Wallet API を強化し、汎用パスやパスのグループ化とミックス(イベント チケットとバウチャーをまとめるなど)のサポート、そしてバックエンド統合なしにアプリからパスを直接保存できる新しい Android SDK のリリースしました。詳細については、詳細なブログ記事 (英語) を読むか、セッション (動画/英語) をご覧ください。また、developers.google.com/wallet のドキュメントを確認することもできます。
Android 13 の 2 回目のベータ版が 5 月 11 日にリリースされました。新しい通知パーミッション、プライバシーを保護する写真ピッカー、近くのデバイスとペア設定したり、メディア ファイルにアクセスしたりするパーミッションの改善など、アプリをプライバシーとセキュリティの最新機能に対応しましょう。また、アプリ別の言語設定やテーマ対応アプリ アイコンなどの機能で、アプリを強化しましょう。HDR 動画や Bluetooth LE オーディオなど、最新の標準を使って開発することもできます。こちらから Pixel デバイスを登録すると、すぐに試してみることができます。Android 13 ベータ版は、パートナー製の一部のスマートフォンやタブレット、折りたたみ式デバイスでも利用できます。詳細は、developer.android.com/13 をご覧ください。
ここで紹介した内容は、今年の Google I/O の Android デベロッパー向けハイライトの一部にすぎません。ぜひ Android の新機能 (動画/日本語字幕付き) セッションを視聴して、Google I/O での Android テクニカル トラックの全容を把握してください。全部で 26 のセッションと 4 つのワークショップがあります。ぜひご利用ください!
この記事は Jolanda Verhoef , Anna-Chiara Bellini による Android Developers Blog の記事 " What's new in Jetpack Compose " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Jetpack Compose 1.0 がリリースされてからほぼ 1 年が経過し、その間にコミュニティによる積極的な採用が進んでいます。簡潔な Kotlin の構文と、UI についてすばやく簡単に検討できる宣言型アプローチは高く評価されています。
多くの企業が Compose を大々的に採用し、アプリの新機能や目玉機能を開発しています。たとえば、私たちはかなり早い段階から Compose の実験を始めていた Google Play ストアチームと密接に連携し、Compose を使うと開発が楽しくなるだけでなく、デベロッパーの生産性も上がることを発見しました。チームのメンバーはこのように話しています。「Play ストアのすべての新機能は、このフレームワークを使って構築しています。Compose は、アプリの開発速度向上やスムーズな導入に役立っています」。また、Twitter のチームも、アプリのさまざまな部分で Jetpack Compose を使っており、その成果について、「Compose を使うと、独自のコンポーネントをとてもに簡単に定義でき、API コントラクトの明示性、柔軟性、直感性が向上します」と述べています。Airbnb (英語) チームも Compose を採用し、「Jetpack Compose は技術戦略上欠かすことのできない部分です。これによって向上する生産性は計り知れません」と語っています。
うれしいことに、こういったチームが大規模で複雑な本番環境で慎重に Compose を評価した結果、UI 開発が楽しくわかりやすいものになっただけでなく、さまざまなエンジニアリング上のメリットを得ることもできました。そして、それは一例に過ぎません。なぜなら、Play ストアのトップ 1,000 アプリのうち 100 以上がすでに Compose を使っているからです。
このような緊密な共同作業や、幅広い Android コミュニティからのフィードバックに慎重に耳を傾けることは、常に私たちの開発プロセスの中核であり、ロードマップの実現に向けた鍵でもあります。現在は、新しい API や機能の改善、Compose での開発を今まで以上に簡単にする新ツールを通して、さらに高度なユースケースをサポートする作業を重点的に進めています。Compose が UI の構築方法を根本的に変革するものであることはわかっています。すばらしい見栄えの高性能なアプリを作成するには、考え方の転換が必要です。そのためのサポートとして、ガイド、高度なトピックに関するセッションや Codelab、詳細な解説動画をさらに公開します。以下は、新機能の紹介です。
2022 年 5 月 11 日、たくさんの機能や改善が含まれている Compose 1.2 最初のベータ版をリリースしました。
includeFontPadding をカスタマイズ可能なパラメータにすることで、Issue Tracker で特に要望の多かったバグ (英語) に対応しました。この値は、false に設定することをお勧めします。それにより、レイアウト内のテキストの配置をより厳密に調整できるようになります。今後のリリースでは、これをデフォルト値にすることを検討しています。値を false に設定するとアプリで問題が起きる場合は、前述の Issue でぜひお知らせください。また、includeFontPadding を false に設定した場合、lineHeightStyle パラメータを設定して Text コンポーザブルの行の高さを適合させることができます。これを組み合わせると、次のようになります。
includeFontPadding
false
lineHeightStyle
Text( text = myText, style = TextStyle( lineHeight = 2.5.em, platformStyle = PlatformTextStyle( includeFontPadding = false ), lineHeightStyle = LineHeightStyle( alignment = Alignment.Center, trim = Trim.None ) ))
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = false
),
lineHeightStyle = LineHeightStyle(
alignment = Alignment.Center,
trim = Trim.None
Compose 1.2 では、Compose にダウンロード可能なフォントが導入されます。複雑な設定を行わずに、Compose の新しい API を使って Google Fonts に非同期的にアクセスしたり、フォールバック フォントを定義したりできます。ダウンロード可能なフォントを使うと、プロバイダを通して複数のアプリで同じフォントを共有できるので、APK のサイズを小さく保ち、ユーザーのシステムの健全性を向上させることができます。
Android のテキストは、テキストを選択しやすくする拡大鏡ウィジェットを提供しています。今回、Compose がテキスト拡大鏡をサポートします。
選択ハンドルをドラッグすると、拡大鏡が表示されて指の下にあるものが見やすくなります。Compose 1.1.0 では、テキスト フィールドで選択をする際の拡大鏡が導入されました。今回の Compose 1.2.0 では、テキスト フィールドと SelectionContainer (英語) の両方で拡大鏡がサポートされます。この拡大鏡は、ビューの Android 拡大鏡の動作とも完全に一致するように拡張されています。
SelectionContainer
Lazy レイアウトがさらに進化します。グリッド API の LazyVerticalGrid (英語) と LazyHorizontalGrid (英語) が試験運用版を終了して正式版になり、独自のカスタム Lazy レイアウトを実装できる LazyLayout (英語) という試験運用版 API が新たに追加されます。これらの API の詳細については、I/O セッション動画 Compose の Lazy レイアウト (英語) をご覧ください。
LazyVerticalGrid
LazyHorizontalGrid
ビューシステムからスクロール可能なコンポーザブルを CoordinatorLayout に埋め込む際に、スクロール動作の相互運用性を確保できるようになります。これにより、折りたたみ可能なツールバーをはるかに簡単に設定できるようになります。この動作は、試験運用版の新しい rememberNestedScrollInteropConnection メソッドを呼び出した結果を nestedScroll 修飾子に渡すことでオプトインできます。この新機能のデモは、こちらのサンプルでご確認ください。
CoordinatorLayout
rememberNestedScrollInteropConnection
nestedScroll
Accompanist の insets ライブラリ (英語) が正式版として Compose Foundation ライブラリに追加され、WindowInsets (英語) クラスから利用できるようになりました。詳しくは、既存の UI に Compose を組み込む方法を説明したドキュメントをご覧ください。
WindowInsets
サイズ変更可能なレイアウトの設計、開発、テストを容易にするため、綿密に検討されたビューポートの一連のブレークポイントであるウィンドウ サイズ クラスをリリースしました。これはマテリアル 3 ライブラリ セットの一部で、現在、新しいライブラリ material3-window-size-class でアルファ版を利用できます。サイズクラスの詳細については、異なる画面サイズをサポートするためのドキュメントで参照できるほか、Crane でサンプル実装を確認することもできます。
material3-window-size-class
アプリのパフォーマンスの理解と改善に役立てていただけるよう、新しいパフォーマンス関連のツールやガイドにいっそう注力しています。この対応により、アプリが遅くなっている理由や場所を、はるかに簡単に理解できるようになります。
Android Studio Dolphin より、Layout Inspector でコンポーザブルの再コンポーズ発生頻度を確認できるようになります。再コンポーズの回数が異常に多い場合は、そのコンポーザブルを最適化する余地があることを示している可能性があります。さらに、Android Studio Electric Eel には再コンポーズのハイライト表示機能が追加され、どのコンポーザブルでいつ再コンポーズが発生したかを視覚的に確認できるようになっています。これらの新ツールについては、Android Studio の新機能ブログをご覧ください。
Compose は、根本的なレベルで UI の記述方法を変革します。そのため、アプリのパフォーマンス向上に役立ついくつかのベスト プラクティスがあります。新たに公開されたドキュメント ページには、最高のパフォーマンスを実現するための Compose アプリの記述方法や設定方法を掲載しています。I/O セッション動画 Jetpack Compose の一般的なパフォーマンスの落とし穴 (英語) では、Compose チームがパフォーマンス関連のよくある失敗例とその修正方法について説明します。
パフォーマンスは、私たちが引き続き重点を置いている領域です。現在、ツールやガイドの改善や追加に懸命に取り組んでいます。それと合わせて、これまでの作業に対するフィードバックもお待ちしています。Issue Tracker (英語) でバグを報告するか、KotlinLang Slack グループ (英語) で質問してください。
これまでの改善をベースに、Compose の効率アップを図る新ツールの最新情報をお知らせします。現在ベータ版の Android Studio Dolphin (英語) では、Compose 開発にすばらしい機能が追加されます。再コンポーズの回数に加え、すべてのアニメーションを一度に確認できる Animation Coordination や、複数の画面サイズに対応する開発に役立つ MultiPreview アノテーションなどの新ツールが導入されます。また、反復処理を高速化できるように、Android Studio Electric Eel Canary に LiveEdit を追加します。
完全な情報は、Android 開発ツールの新機能 (英語) に掲載されています。また、Compose に必要なツールのサポートを実現するため、ぜひフィードバックを共有してください。
もし Compose よりも優れたものがあるとすれば、それはもう 1 つの Compose です。Compose for Wear OS がベータ版になりました。Compose for Wear OS は、他の Jetpack ライブラリと同じ考え方に従っており、ベータ版になったことは、機能が完成して API が安定版になったことを意味します。そのため、本番環境に対応できるアプリの開発を始めることができます。さっそくブログ記事 (英語) を読んで、開発にとりかかりましょう!
Compose に関するたくさんのガイドを追加、刷新しました。
これらの新機能を私たちと同じ用に皆さんにも気に入ってもらえることを願っています。まだ Jetpack Compose を使ったことがない方は、速度やデベロッパーの生産性向上によるあらゆるメリットを享受できるように、チームや開発プロセスでどのように利用できるかをこのタイミングで学びましょう。ぜひ Compose を使ってみてください!
この記事は Yafit Becher、Ray Brusca による Android Developers Blog の記事 "New Google Play SDK Index helps you choose the right SDKs for your app" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
アプリ デベロッパーは、アプリやゲームに重要な機能やサービスを組み込む際に SDK を利用します。SDK は構成要素として欠かせないものですが、信頼できて安全に使用できる SDK を判断するのは難しいという声がデベロッパーから寄せられています。そのため、皆さんのようなデベロッパーが十分な情報をもとに SDK を適切に決定できることは、数十億ものユーザーに利用される Google Play を安全で信頼できる場所にするための取り組みの一環だと言えます。
2020 年、Google は Google Play SDK Console をリリースしました。これにより、SDK プロバイダが障害レポートや使用統計情報を提供したり、Google Play Console や Android Studio を通してアプリ デベロッパーに重大な問題を公開したりできるようになりました。今回は、さらにコミュニケーションを強化し、透明性を高めるための新たな手段として、Google Play SDK Index をリリースしました。このパブリック ポータルでは、特に広く使われている 100 以上の商用 SDK と、それぞれの SDK に関する分析情報を確認できます。
Google Play SDK Index には各 SDK の信頼性と安全性シグナルが表示されるため、その SDK がビジネスとユーザーに適切であるかどうか、判断できます。
また、SDK を検索 (英語) したり、広告と収益化 (英語) やアナリティクス (英語) といったカテゴリ別に SDK を調べたりすることもできます。Google Play SDK Index では、ビジネスとユーザーに適した SDK を選択できるように、各 SDK について Google Play アプリの使用状況データと SDK コード検出を組み合わせた分析情報を提供しています。たとえば、次の情報を確認できます。
SDK プロバイダは、Google Play SDK Console に登録した SDK について、次のような重要な情報を共有することもできます。
開発ライフサイクルのどの段階であっても、情報に基づいて SDK を選択するために Google Play SDK Index をご活用ください。SDK のデータ ポイント、カテゴリ、ボリュームは今後も追加されていきますので、定期的に最新情報をご確認ください。
さらに詳しくは以下をご覧ください :
この記事は Purnima Kochikar による Android Developers Blog の記事 "Continuing to boost developer success on Google Play " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
今年 3 月にお知らせしたように、デベロッパーが持続可能なビジネスを構築できるよう支援することは、Google Play のミッションです。先月の Google I/O ではそのミッションに基づき、ユーザーにアプリやゲームを見つけてもらいやすくする措置や、新しい 15% のサービス手数料ティア適用への登録を Goolge Play Console 上で開始することなど、複数のアップデートを発表しました。
※日本語字幕に対応しています
私たちは引き続き、様々なタイプのデベロッパーの皆さまが Google Play で成功するための様々な支援策を模索しています。そして、本日は追加で共有したいお知らせがございます。
ユーザーは、使用するデバイスに関わらず、魅力的なコンテンツを求めています。そして、最近リリースしたタブレット向けの Entertainment Space (英語) 、サムスン製のスマートウォッチが Wear OS を搭載するという発表、Android Auto (英語)プラットフォームのアップグレード、Google TV (英語)での新しいディスカバリー エクスペリエンスなどを通じて、これまで以上にデベロッパーがデバイスを跨いでユーザーにアプリを提供し、アピールできる機会が増えています。
Google Play は、モバイル以外の様々な重要なフォーム ファクタにもサービスを拡張できるよう、デベロッパーの皆さまを積極的に支援してきました。実際に長年にわたり、革新性あふれるエクスペリエンスを構築するための支援プログラムを提供してきました。
そして、2021 年 6 月 24 日(現地時間 6 月 23 日)より、さらに多くのデベロッパーの皆さまがベストなメディア エクスペリエンスを様々なデバイス上で実現するための支援策として、Play メディア エクスペリエンス プログラムを全世界で開始しました。ここでのメディアとは、以下の 3 種を指します。
上記の統合を通して、Google Play は、デベロッパーの皆さまが開発・提供しているアプリがユーザーに新たに発見されたり、再エンゲージメントしたりすることで、Google Play での成長を加速できるようサポートします。さらに、プログラム期間中はサービス手数料を 15% に引き下げます。これらの対応はすべて、デベロッパーの皆さまが最高の体験を構築できるようサポートするためのものです。
このプログラムにご興味のあるデベロッパーの方は、プログラムのガイドラインを確認のうえ、関心がある旨をお知らせください(英語でのご登録が必要です)。 参加資格を満たした皆さまには、追って詳しい情報をお伝えします。
なお、Play メディア エクスペリエンス プログラムは、その他既に存在する多数のデベロッパー向け支援プログラムのひとつです。ニュース パブリッシャー向けの 「Google で購読」、エンタープライズ 向けの各種 プログラム、Play Points などと同様に、ユーザーに向けたサービス内容を継続的に改善しつつ、投資を続けるデベロッパーの皆さまのニーズを満たすことを目指しています。
7 月 13 日、14 日(現地時間 7 月 12 日、13 日)にオンラインで開催する Google for Games Developer Summit では、Google が提供するプロダクトの最新情報をお伝えします。Android、Google Play、Cloud、Firebase、Google 広告など、優れたゲームの開発や、ユーザーへの効果的なアプローチに役立つセッションを 20 以上ご用意しています。
私たちは引き続き、皆さまのフィードバックに耳を傾けています。Google Play のすべてのステージで、皆さまのビジネスをサポートする為のさらなる方法を模索することを楽しみにしています。
この記事は Paris Hsu による Android Developers Blog の記事 "Android Studio Arctic Fox (2020.3.1) Beta" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android Studio Arctic Fox のスプラッシュ画面
注:昨年末に発表した通り、Google では Android Studio のベースとなっている IntelliJ IDE の番号と整合性を持たせるために、バージョン番号体系を変更し、2020.3 となりました。その他にも独自のパッチ番号とわかりやすいコードネームを割り当てることで、覚えやすく簡単に参照できるようにしています。最初に Arctic Fox(現在ベータ版)、次に Bumblebee(現在カナリー版)のように、アルファベット順にコードネームを使用していきます。
デザイン、デバイス対応と管理、デベロッパーの生産性向上に重点を置いた Android アプリ開発用の公式 IDE 、Android Studio の最新リリース Arctic Fox (2020.3.1) Beta ❄️🦊を 2021 年 5 月 19 日(現地時間 5 月 18 日)に発表しました。現在 Beta チャンネルで公開していますのでダウンロードすると Google I/O 2021 で発表したすべての新機能を実際に使うことができます。
この 1 年間、さまざまな課題に対応しなければなかったにもかかわらず、革新的なすばらしいアプリを作り続けてきた世界中のデベロッパーコミュニティに触発されて、次の主に 3 つのテーマを強化する統合ツールの提供とアップデートに取り組んできました。
まとめると、今回のアップグレードは見逃せない内容になっています。✨ このベータ版には、これまでお伝えしてきた以外にも上記のテーマに関連した機能や改善が多数含まれていますので、以下の記事や動画をご覧ください。あるいは、記事のチェックを飛ばして、Android Studio Arctic Fox (2020.3.1) Beta を Beta チャンネルでダウンロードし、最新機能を今すぐ実際に使用してみてください。Android Studio の次期バージョンでも、引き続きデベロッパーの皆さんにとって最も重要なことに注力できるよう、フィードバックをお寄せください。
What's new in Android development tools (I/O 2021)
Android Studio Arctic Fox (2020.3.1) Beta の新機能を 3 つの主なテーマ別にすべてご紹介します。
Compose プレビュー
Layout Inspector の Compose 対応
プレビューとガターにある「デバイスへのデプロイ」アイコンを使用
これまでの内容をまとめると、Android Studio Arctic Fox (2020.3.1) Beta には、以下の新しい機能強化と新機能が搭載されています。
I/O では、上記の一覧に記載されていない他の新機能もご覧になったかもしれません。それらの機能については、Beta チャンネルでリリースする準備が整わなかったため、Android Studio (2021.1.1) Bumblebee Canary に搭載されます。
今回のリリースに合わせて、Android Studio チームは Android Studio に関して複数のセッションで発表を行いました。以下の動画をご覧いただくと、提供される最新機能や Android Studio の使用に関する役立つ情報を確認できます 📺。なお、すべての動画で日本語字幕に対応しています。ぜひ切り替えてご覧ください。
Android Studio Arctic Fox (2020.3.1) は重要なリリースとなっています。今が Beta リリースをダウンロードおよびチェックして、ワークフローに新しい機能を組み込む絶好の機会です。ベータ版リリースでは、ほぼ安定した機能を提供しますが、どのベータ版リリースにも言えるように、バグが残っている可能性があります。問題が見つかった場合は修正しますのでご連絡ください。Android Studio をすでにお使いの場合は、ナビゲーション メニューから Beta チャンネルでアップデートをチェックしてください([Help] > [Check for Update [Windows/Linux] , Android Studio] > [Check for Updates [OS X]])。ベータ版にアップデートすると、最新バージョンの Android Studio と Android Emulator にアクセスできます。
気に入った点、問題点、あったらいいなと思う機能に関するフィードバックをお寄せください。バグや問題が見つかった場合はご連絡ください。Android Studio 開発チームの Twitter と Medium もぜひフォローしてください。
Reviewed by Yuichi Araki - Developer Relations Team and Tamao Imura - Developer Marketing Manager, Google Play