この記事は Eric Bahna による Android Developers Blog の記事 "Expanding the reach of your Android Auto apps" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


昨年 12 月、Google Play ストアで新しい Android Auto アプリをクローズド テストに公開できる機能を開放しました。続いて 2021 年 1 月 28 日より、Google Play ストアで、ナビゲーション、駐車場、充電スポットのアプリをオープン テストトラックに公開し、アプリのユーザーを増やせるようになりました。

オープンテストでは、アプリをダウンロードできるユーザー数に制限はなく、メールアドレスの一覧を管理する必要もありません。このオープンテストは、正式にアプリをリリースするまでの重要なマイルストーンです。アプリを実際の車ですべてのユーザーに使ってもらうことに一歩近づきますので、ぜひ Android for Cars App Library を使い、Play Console でオープン テストトラックを選択してアプリを公開してください。  


Android Auto アプリに関する今後の予定についてお知らせします。

現在、このライブラリを Android Jetpack に追加する作業を進めています。これにより、他の Jetpack API との整合性が向上し、新機能が見つけやすくなります。Jetpack ライブラリが利用できるようになると、既存のライブラリからのアプリ移行が簡単になり、名前空間を変更していくつかの API 呼び出しを調整するだけの作業で完了します。Jetpack でライブラリを安定させた後は、その新しいアプリを Google Play ストアの本番環境トラックに公開できるように準備を進めればよいのです。

Jetpack ライブラリを待たずとも、オープン テストトラックに公開することはできるようになっています。以下の手順で公開してみましょう。

  1. デベロッパー ガイドアプリ品質ガイドラインを参考に、アプリのエクスペリエンスを設計する。

  2. 今からユーザーのフィードバックを受けられるように、現在のベータ版ライブラリを使って開発する。

  3. Desktop Head Unit を使ってテストする。

  4. Google Play ストアに公開する(現在はオープン テストトラックまで)。


多くのデベロッパーの皆さんが開発した自動車向けアプリを、実車でテストすることを楽しみにしています。


Reviewed by Hidenori Fujii - Google Play Developer Marketing APAC and Jake Hirakawa - Partner Development Manager, Android Auto

Reviewed by Khanh LeViet - Developer Advocate and  Hidenori Fujii - Google Play Developer Marketing APAC

2020 年 12 月 1 日(日本時間12 月 2 日 )、Android Studio 4.3 の初めての Canary 版がリリースされ、それとともに Android Gradle プラグイン(AGP)バージョン 7.0.0-alpha01 もリリースされました。Gradle プラグインのバージョン番号の付け方は、Android Studio のバージョン番号のスキームから切り離した上で改めて調整したので、番号を一気に 2 つも飛ばしています。このブログ投稿では、この変更の理由について説明するとともに、インキュベーション状態になっている新しい Android Gradle プラグインの API と DSL について、いくつかの重要な変更点を簡単にご紹介します。


新しいバージョン番号のスキーム 

AGP 7.0.0 では、セマンティック バージョニングの考え方を採用しています。つまり、API の互換性がない変更が発生するのは、メジャー バージョンが変更された場合のみです。メジャー バージョンは、Gradle で年に 1 回のメジャー リリースが行われるタイミングで、毎年 1 つずつ上げることを想定しています。

さらに、互換性のない変更が行われる場合は、1 年ほど前から削除される API に @Deprecated を付け、それと同時期に削除される機能に代わる方法を提供することを保証します。これによりデベロッパーには約 1 年の猶予が与えられ、古い API が削除される前に新しい API を使ってプラグインのテストと移行を行えるようになります。

バージョン 5 と 6 を飛ばして直接 AGP 7.0.0 に変わったのは、Gradle のバージョンに合わせるという理由もあります。つまり、AGP 7.x は Gradle 7.x の API で動作するということです。Gradle 8.x でも動作するかもしれませんが、それは保証されていません。AGP が利用する API が 8.x で削除されていないかどうか次第です。

この変更に伴い、AGP のバージョン番号は Android Studio のバージョン番号とは切り離されます。ただし、当面の間、Android Studio と Android Gradle プラグインは同じタイミングでリリースする予定です。

Android Studio と Android Gradle プラグインとの互換性には、変更はありません。一般的なルールとして、AGP の安定版を使うプロジェクトはそれより新しいバージョンの Android Studio で開くことができます。


Java 11 要件

AGP 7.0.0-alpha01 では依然として Java プログラミング言語バージョン 8 を使用できますが、現在、最低限必要な Java プログラミング言語のバージョンを Java 11 に変更する作業を行っています。これは AGP 7.0.0-alpha02 から適用される予定です。この変更については、デベロッパーの皆さんが余裕を持って準備できるように、Canary 版のスケジュールという早い段階で、安定版リリースの何か月も前にお知らせしています。


インキュベーション状態の API と重要な API の変更点

今回の AGP のリリースでは、いくつかの API が変更されます。なお、AGP 4.1 で導入されたたくさんの API はインキュベーション状態としてマークされ、変更の可能性がありました。そして実際、AGP 4.2 で一部の API が変更されました。現在インキュベーション状態になっている API は、先ほど説明したサポート終了サイクルには従いません。

いくつかの重要な API の変更について、概要をまとめました。

  • バージョン 4.2 ベータ版では、onVariantsonPropertiesonVariantProperties ブロックが削除されます。

  • これらの API は、新しい androidComponents ブロックの beforeVariants および onVariants で置き換えられます。beforeVariantsonVariants を利用すると、省略可能な VariantSelector を使って、コールバックを実行するバリアントの数を減らすことができます。これは、ビルドタイプ、名前、フレーバーのいずれかに基づいて行うことができ、それぞれ withBuildTypewithNamewithFlavor を使います。onVariants および beforeVariants が受け取るラムダは、AGP が afterEvaluate でバリアントの組み合わせを計算した後に実行されます。onVariants 内のプロパティのネストは削除されます。

  • 同様の API が androidComponents にも追加され、バリアント内にテストをネストする代わりに、UnitTests 用(beforeUnitTestunitTest)と AndroidTests 用(beforeAndroidTestandroidTest)に別々のブロックが許可されるようになります。

  • 古い方法と新しい方法の両方でバリアントのアクションの登録に使われていた 2 つのクラスは、名前が変更されました。VariantVariantBuilder になり、beforeVariants で使われます。VariantPropertiesVariant になり、新しい onVariants ブロックに渡されます。

いくつかの変更について確認してみましょう。以下のコードは、リリースビルドをターゲットとするサンプルの onVariants ブロックです。onVariants ブロックは beforeVariants に変更され、次の例のバリアント セレクタを使用します。


```

android {

//onVariants.withName("release") {

// ...

//}

}

androidComponents {

val release = selector().withBuildType(“release”)

beforeVariants(release) { variant ->

...

}

}

```


同様に、onVariantProperties ブロックも onVariants に変更されます。


```

android {

...

//onVariantProperties {

// ...

\

//}

}

androidComponents.onVariants { variant ->

...

}

```


なお、このカスタマイズは通常はプラグインで行うもので、build.gradle に配置すべき内容ではありません。レシーバのある関数の使用は避けています。これは DSL 構文には適していますが、プラグインのコードには必要ありません。

これらの API は、AGP 7.0.0 で安定版になる予定です。また、すべてのプラグイン作成者は、新しい androidComponents に移行する必要があります。このような変更に対処するのを避けたい方は、プラグインで安定版の API のみ使用し、インキュベーション状態の API は使わないでください。

今回のリリースに含まれるその他の変更点の詳細については、リリースノートをご覧ください。

Java は Oracle および/またはその関連会社の登録商標です。


Reviewed by Takeshi Hagikura - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing APAC

2020 年 12 月 1 日(日本時間 12 月 2 日)、Android Studio Arctic Fox(2020.3.1) の初めてのバージョンが Canary チャンネルでリリースされ、それとともに Android Gradle プラグイン(AGP)バージョン 7.0.0-alpha01 もリリースされました。今回のリリースでは、Android Studio と Gradle プラグインのバージョン番号の付け方を調整しています。この変更で、Android Studio のバージョン番号スキームから Gradle プラグインを切り離し、Android Studio のそれぞれのリリースがどの年に行われて、どの IntelliJ バージョンに一致しているかを明らかにします。


新しいバージョン番号スキーム - Android Studio

Android Studio Arctic Fox(2020.3.1)では、Android Studio のベースとなっている IDE である IntelliJ IDEA との整合性を高めるため、年に基づいた採番に移行します。バージョン番号スキームは、年、ベースとなった IntelliJ のバージョン、機能およびパッチレベルという重要な属性を組み込んだものに移行します。この名称変更により、Android Studio で使っている IntelliJ プラットフォームのバージョンがすぐにわかるようになります。さらに、メジャー バージョンごとに正規のコードネームを割り当てます。最初のコードネームは Arctic Fox で、以降はどのバージョンが新しいのかが簡単にわかるように、アルファベット順に進めます。

デベロッパーの皆さまには、最新の機能と品質改善を利用できるように、最新バージョンの Android Studio を使うことをおすすめします。バージョンを簡単に最新に保つことができるように、Android Studio のバージョンと Android Gradle プラグインのバージョンは明確に切り離します。覚えておくべき重要な点は、IDE をアップデートしても、ビルドシステムがアプリをコンパイルしたりパッケージングしたりする方法は何も変わらないことです。逆に、アプリのビルドプロセスの変更や APK / バンドルは、プロジェクトの AGP バージョンによって決まります。したがって、開発サイクルの後半であっても、Android Studio のバージョンは安全にアップデートできます。プロジェクトの AGP バージョンは、Android Studio のバージョンとは異なるタイミングでアップデートできるからです。また、新しいバージョンのシステムでは、安定版リリースの AGP バージョンを使っている限り、個人やチームのアプリ プロジェクトで安定版とプレビュー版の Android Studio を両方同時に実行することがこれまで以上に簡単になります。 

これまでのバージョン番号システムで言えば、今回のリリースは Android Studio 4.3 になります。新しい番号システムでは、Android Studio Arctic Fox(2020.3.1)Canary 1、または単に Arctic Fox となります。

今後、Android Studio のバージョン番号スキームは次のようになります。

<IntelliJ バージョンの年>.<IntelliJ メジャー バージョン>.<Studio メジャー バージョン>

  • 最初の 2 つの番号グループは、特定の Android Studio リリースが基づいている IntellIj プラットフォームのバージョンを表します。今回のリリースでは、2020.3 になります。

  • 3 つ目の番号グループは、Studio のメジャー バージョンを表します。これは 1 から始まり、メジャー リリースごとに 1 つずつ増えます。

  • 各バージョンを簡単に表せるように、メジャー リリースにコードネームも割り当てます。コードネームは動物の名前に基づくものとし、A から Z の順番に割り当てられます。最初のリリース名は Arctic Fox です。  


新しいバージョン番号スキーム - Android Gradle プラグイン

AGP 7.0.0 では、セマンティック バージョニングの考え方を採用し、AGP に必要な Gradle バージョンと一致させます。 Android Studio と Android Gradle プラグインとの互換性には、変更はありません。AGP の安定版を使うプロジェクトはそれより新しいバージョンの Android Studio で開くことができます。 

近日中には更に、AGP のバージョン番号の考え方と、今回の新しいメジャー リリースである AGP 7.0 の新機能について詳しく説明したブログ記事を公開する予定です。


Android Studio Arctic Fox の新機能

現在は Arctic Fox の機能開発フェーズの初期段階ですが、コードエディタ、アプリ インスペクション ツール、Layout Editor、組み込みエミュレータなど、IDE のさまざまな領域にわたる 200 以上の品質改善とバグの対応を行いました。具体的なバグの修正については、リリースノートをご覧ください。 

Jetpack Compose を使っている方のために、デバイスやエミュレータへの @Preview Composable のデプロイなど、多くの新しいアップデートを行っています。

Preview Composable のデプロイ


新しい Layout Validation ツールもお使いください。さまざまな画面サイズ、フォントサイズ、Android Color Correction / Color Blind Mode にレイアウトがどう反応するかを確認できます。この機能には、Layout Editor を使っているときに [Layout Validation] ツール ウィンドウからアクセスできます。 


最後に、MacOS(その他のプラットフォームも近日中に対応予定)で最新の Android プラットフォーム ツールと Android 11 デバイスを使っている方は、Run  ボタンのデバイス選択ダイアログ → [Pair Devices Using Wi-Fi] から、IDE に組み込まれた Wireless ADB 機能を使うことができます。   

Wireless ADB 機能にアクセスするためのメニュー


Wireless ADB セットアップ ウィンドウ 


Android Studio と Android Gradle プラグインの今回のリリースに含まれるその他の詳しい変更点については、リリースノートをご覧ください。

Reviewed by Takeshi Hagikura - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing APAC

Google Play のアプリ掲載情報にリンクしているアプリ コンテンツの例


アプリの説明に不要な内容が含まれている

よく見られるもう 1 つの誤りは、あるキーワードやフレーズのランクを上げてアプリを見つかりやすくしようと、アプリの説明にキーワードを詰め込むことです。キーワードの繰り返しや、関係のないキーワードや参照を含むテキスト ブロックやリストは、ストアの掲載情報とプロモーションのポリシーに違反します。この違反を避ける最善の方法の 1 つは、ユーザーにとって読みやすくわかりやすいアプリの説明を書くことです。


不適切なストアの掲載情報を避ける方法や、人工的にアプリの視認性を上げる方法については、こちらの動画をご覧ください。



メンテナンスされていないアプリや動作しないアプリ


デベロッパーがかなり以前に公開し、既にメンテナンスされなくなったアプリも存在します。メンテナンスされていないアプリは、機能が動作しないなど、ユーザー エクスペリエンスの問題を生み出します。このようなアプリは、少ない星の数や否定的なユーザー レビューで評価されるリスクがあるだけでなく、最小限の機能を提供するというポリシーに違反しているとも認識される可能性があります。デベロッパーやアプリの評判が下がるのを防ぐためにも、そのようなアプリは Play Store で非公開にすることを検討してください。なお、非公開にしても、既にアプリをインストールしている既存ユーザーには影響しません。また、デベロッパーはいつでも問題を修正してアプリを再公開することができます。

メンテナンスされず動作しないアプリの例


Play アカデミーの ‘Minimum and Broken Functionality Spam’ コースを受講する


アプリか Webview か

また、既存ウェブサイトを Webview で見せているだけに過ぎないアプリもよく見かけます。こういったアプリのほとんどは、Android ユーザーにエンゲージメントの高いアプリのエクスペリエンスを提供するというよりは、単にトラフィックを上げるという目的で登録されています。このようなアプリは、Webview スパムと見なされ、Play から削除されます。アプリではウェブ以上の機能を提供することを検討し、ユーザー エクスペリエンスを高める関連機能を実装してください。


アプリの機能がない Webview の例



Play アカデミーの ‘Webview Spam’ コースを受講




ここで説明したのはよくある誤りの一部だけですが、ポリシーの最新情報については、Google Play デベロッパー ポリシー センターをご確認ください。また、最新のポリシー アップデートの詳細については、Comply with Google Play's Spam and Minimum Functionality policiesなどの Google Play アカデミーのポリシー トレーニングコースや Play PolicyBytes 動画をご覧ください。


Reviewed by Konosuke Ogura -  Trust & Safety - Play & Android, Global Policy & Operations Lead and Hidenori Fujii - Google Play Developer Marketing, APAC


2020 年 10 月 12 日(日本時間 10 月 13 日)、Android Studio 4.1 の安定版がリリースされました。編集、デバッグ、最適化の一般的なユースケースに対応する一連の機能が追加されています。今回のリリースの主なテーマは、Android Jetpack ライブラリを使う際の生産性向上でした。Android Jetpack とは、デベロッパーがベスト プラクティスに従って速くコードを書けるようにするための Android ライブラリ スイートです。皆さんからのフィードバックに基づき、コード編集操作にたくさんの改善を行ったほか、よく使われる Android ライブラリを IDE に統合しています。

Android Studio 4.1 で注目すべき機能には、アプリのデータベースを照会できる新しい Database Inspector、依存性注入に Dagger または Hilt を使うプロジェクトのナビゲーションのサポート、オンデバイス機械学習のサポート向上(Android プロジェクトでの TensorFlow Lite モデルのサポートを含む)などがあります。さらに、変更の適用を更新してデプロイを高速化しました。皆さんからのフィードバックに基づき、ゲーム デベロッパーに役立つ変更も行いました。新しいネイティブ メモリ プロファイラとスタンドアロン プロファイリング ツールを導入しています。

私たちは、Android Studio の品質を向上するため、バグやパフォーマンスの問題に懸命に対応してきました。多くのデベロッパーの皆さんから、パフォーマンスと信頼性の向上に主眼を置いていることを評価する声が届いています。今回のリリース サイクルでは、2,370 個のバグを修正し、公開されていた 275 個の問題をクローズしたことをご報告します。デベロッパーの皆さんの生産性にとって鍵となるのは、高い品質です。私たちはこれからも高い品質を維持することをお約束します。


プレビュー リリースで早くからフィードバックを寄せてくださった皆さん、ありがとうございました。皆さんからのフィードバックは Android Studio 4.1 の開発にあたって反復作業や機能改善に役立ちました。最新の安定版リリースを使う準備が整い、新たな生産性機能を使ってみたい方は、Android Studio 4.1 をこちらからダウンロードしてください。


続いて、主なデベロッパー フローごとに分類された、Android Studio 4.1 のすべての新機能をご紹介します。



デザイン

マテリアル デザイン コンポーネントのアップデート

新しいプロジェクトを作成する際のダイアログに表示される Android Studio のテンプレートが、マテリアル デザイン コンポーネント(MDC)を使ったものになりました。デフォルトで、テーマとスタイルの最新ガイドに準拠しています。この変更により、推奨のマテリアル スタイル パターンや、ダークテーマなどの最新の UI 機能を簡単に使えるようになります。


プロジェクト テンプレートのマテリアル デザイン コンポーネントのアップデート


アップデートには、以下の内容が含まれています。

  • MDC: プロジェクトは、build.gradle の com.google.android.material:material を利用します。ベースとなるアプリのテーマの親が Theme.MaterialComponents.* になり、アップデートされた MDC の色と「on」属性をオーバーライドします。

  • カラーリソース: colors.xml のカラーリソースは色の名前を使います(たとえば、colorPrimary ではなく purple_500 となります)。

  • テーマリソース: テーマリソースが(styles.xml ではなく)themes.xml に格納され、Theme.<ApplicationName> 名を使います。

  • ダークテーマ: ベースとなるアプリのテーマの親が DayNight になり、res/values と res/values-night に分割されます。

  • テーマ属性: 色のハードコードを避けるため、レイアウトとスタイルのカラーリソースはテーマ属性(たとえば、?attr/colorPrimary)として参照されます。


開発

Database Inspector

新しい Database Inspector では、アプリのデータベースを簡単に調査、照会、変更できるようにしたいと考えました。この機能を使ってみるには、API レベル 26 以降を実行しているデバイスにアプリをデプロイし、メニューバーから [View] > [Tool Windows] > [Database Inspector] を選択します。アプリで Jetpack Room ライブラリを使っている場合でも、Android プラットフォーム バージョンの SQLite を直接使っている場合でも、実行中のアプリのデータベースやテーブルを簡単に調査したり、カスタムクエリを実行したりできます。


Android Studio は、アプリを調査しているときもライブ接続を維持しているので、Database Inspector を使って値を変更し、実行中のアプリで変更内容を確認することもできます。Room 永続化ライブラリを使っている場合は、コードエディタの各クエリの隣にも実行ボタンが表示されるので、@Query アノテーションで定義したクエリをすばやく実行できます。詳細はこちらをご覧ください


Database Inspector でアプリのデータベースを調査、照会、変更


Android Studio の中で直接 Android Emulator を実行

Android Studio の中で直接 Android Emulator を実行できるようになりました。この機能を使うと、画面スペースを節約したり、ホットキーでエミュレータとエディタのウィンドウ間をすばやく移動したり、1 つのアプリケーション ウィンドウの中で IDE とエミュレータのワークフローを整理したりできます。なお、スナップショットの管理や、回転やスクリーンショットなどの一般的なエミュレータ操作は Studio から行うことができますが、すべてのオプションにアクセスするには、安定版のエミュレータを実行する必要があります。この機能は、次の操作でオプトインできます。


[File] → [Settings] → [Tools] → [Emulator] → [Launch in Tool Window]


Android Studio の中で Android Emulator を実行


Dagger ナビゲーション サポート

Dagger は、Android で依存性注入を行う際によく使われるライブラリです。Android Studio は、新しいガター アクションを提供し、[Find Usages] ウィンドウのサポートを強化することで、Dagger 関連のコードを簡単に移動できるようにしています。たとえば、ある型を使うメソッドの隣にある ガターアクションをクリックすると、その型の提供元が開きます。逆に、ガター アクションをクリックすると、型が依存関係として使われている場所が開きます。Android Studio は、Jetpack Hilt ライブラリで定義された依存関係のナビゲーション操作もサポートします。詳細はこちらをご覧ください


ガター アクションで Dagger 関連のコード間を移動


TensorFlow Lite モデルの利用

Android デベロッパーは、機械学習を使って革新的で便利な体験を生み出しています。TensorFlow Lite は、モバイル機械学習モデルを記述する際によく使われるライブラリです。私たちは、こういったモデルを Android アプリに簡単にインポートできるようにしたいと考えました。Android Studio は、ビューのバインディングと同じような使いやすいクラスを生成してくれます。そのため、少量の型安全なコードでモデルを実行できます。ML モデル バインディングの現在の実装では、メタデータで拡張されたイメージ分類とスタイル変換のモデルがサポートされています。

インポートしたモデルの詳細やアプリでモデルを使う手順は、プロジェクトで .tflite モデルファイルをダブルクリックし、モデルビューアのページを開くと確認できます。詳細はこちらをご覧ください


Android Studio 4.1 で TensorFlow Lite モデルのメタデータを確認


ビルドとテスト

Android Emulator - 折りたたみ式デバイスのヒンジのサポート

Android Studio


Android エミュレータは、最近追加された 5G 携帯通信のテストに加え、折りたたみ式デバイスもサポートします。Android Emulator 30.0.26 以降では、さまざまなデザインや設定の折りたたみ式デバイスを設定できます。折りたたみ式デバイスを設定すると、エミュレータはヒンジ角度センサーのアップデートと姿勢の変化を報告するようになります。そのため、このフォーム ファクタに対してアプリがどのように応答するかをテストできます。詳しくは、ブログ投稿 Developing for Android 11 with the Android Emulatorをご覧ください。



変更の適用のアップデート

ビルドが速くなれば、デベロッパーは短時間で簡単にアプリを変更できるようになります。アプリに対する反復作業の生産性を上げるため、Android 11 以降を実行しているデバイス向けに、変更の適用機能を強化しました。


私たちは反復作業にかかる時間の短縮に本格的に取り組み、アプリをインストールすることなく変更をデバイスにデプロイして永続化する方法を開発しました。一度 Android 11 デバイスにデプロイすれば、それ以降、コードの変更の適用 [Apply Code Changes] または変更を適用してアクティビティを再起動 [Apply Changes and Restart Activity] する場合のデプロイが大幅に速くなります。さらに、変更の適用でコードの変更のサポートが強化されています。メソッドを追加した場合でも、コードの変更の適用 [Apply Code Changes] または変更を適用してアクティビティを再起動 [Apply Changes and Restart Activity] のどちらかをクリックすることで、実行中のアプリに変更をデプロイできるようになっています。


AAR から C/C++ の依存関係をエクスポート


Android Gradle プラグイン 4.0 には、AAR の依存関係の Prefab パッケージをインポートする機能が追加されています。この機能については、ネイティブ ライブラリの共有もサポートするように拡張したいと考えていました。AGP バージョン 4.1 を利用すると、Android ライブラリ プロジェクト用の AAR に格納されている外部ネイティブ ビルドからライブラリをエクスポートできます。ネイティブ ライブラリをエクスポートするには、ライブラリ プロジェクトの build.gradle ファイルの android ブロックに以下を追加します。

buildFeatures {
    prefabPublishing true
}

prefab {
    mylibrary {
      headers "src/main/cpp/mylibrary/include"
    }

    myotherlibrary {
        headers "src/main/cpp/myotherlibrary/include"
    }
}


ネイティブ クラッシュ レポートのシンボリケーション


ネイティブ コードでクラッシュや ANR が発生した場合、システムはスタック トレースを生成します。これは、クラッシュした瞬間までにプログラムがネストして呼び出した一連の関数のスナップショットです。このスナップショットは、ソースの問題を特定して修正する際に役立つ可能性がありますが、マシンのアドレスを人間が読むことができる関数名に戻すため、まずシンボリケーションを行う必要があります。


C++ などのネイティブ コードを使ってアプリやゲームを開発する場合、アプリのバージョンごとにデバッグ シンボル ファイルを Play Console にアップロードできるようになりました。Play Console は、このデバッグ シンボル ファイルを使ってアプリのスタック トレースのシンボリケーションを行い、クラッシュや ANR を解析しやすくします。App Bundle にデバッグ シンボルを含めるには、プロジェクトの build.gradle ファイルに次の行を追加します。


android.buildTypes.release.ndk.debugSymbolLevel = 'SYMBOL_TABLE'


最適化

システム トレース UI の改善

Android Studio 4.1 では、システム トレースを大幅に見直しました。システム トレースは、アプリがシステム リソースをどのくらい使っているかをリアルタイムで確認できる最適化ツールです。今回は、ボックス選択モードでトレースを簡単に選択できるようにし、新しい解析タブを追加し、アプリの UI のレンダリングに関する問題を調査できるように詳しいフレーム レンダリング データを追加しました。詳細はこちら(英語)をご覧ください


ボックス選択: [Threads] セクションで、マウスをドラッグすると、四角形の領域をボックス選択できるようになりました。右上の [Zoom to Selection] ボタンをクリックする(または M キーボード ショートカットを使う)と、ズームできます。また、隣り合っている似たようなスレッドをドラッグ&ドロップすると、複数のスレッドをまたいで選択し、同時に調査できます。


ボックス選択でトレースの選択がさらに簡単に


Summary タブ: [Analysis] パネルに新しく [Summary] タブを追加しました。このタブには、以下の内容が表示されます。


  • 発生回数、最短時間、最長時間など、特定のイベントのすべての発生に関する統計の集計

  • 選択したイベントの統計のトレース

  • スレッドの状態分布データ

  • 選択したトレース イベントの最長実行時間


[Summary] タブに集計した統計を表示


データの表示: [Display] セクションに SurfaceFlingerVSYNC の新しいタイムラインが追加されました。アプリの UI のレンダリング問題を調査する際に役立ちます。


スタンドアロン プロファイラ

Android Studio のメイン ウィンドウとは別のウィンドウで Android Studio のプロファイラにアクセスできるようになりました。この機能は、Unity や Visual Studio など、別のツールで構築した Android ゲームを最適化する場合に便利です。

スタンドアロン プロファイラを実行するには、以下の操作を行います。


  1. システムで Android Studio のプロファイラが起動していないことを確認します。

  2. インストール ディレクトリの中にある bin ディレクトリに移動します。

  • Windows/Linux: <studio-installation-folder>\bin
  • macOS: <studio-installation-folder>/Contents/bin

  • OS に応じて、profiler.exe または profiler.sh を実行します。

  • スタンドアロン プロファイラから Android Emulator や接続されているデバイスに接続できるようになります。

  • スタンドアロン Android Studio プロファイラでアプリを最適化

    Native Memory Profiler



    ゲーム デベロッパーや C++ を使っているデベロッパーにとって重要なのは、ネイティブ メモリの使用量をトラッキングし、アプリのメモリ消費を最適化する方法を理解することです。Android Studio の Memory Profiler に、Native Memory Profiler が含まれるようになりました。Android 10 以降を実行する実機にデプロイしたアプリが対象になります。Native Memory Profiler は、特定の時間帯におけるネイティブ コードのオブジェクトの割り当てや割り当て解除をトラッキングし、合計割り当て量やシステムヒープの残量についての情報を提供します。


    Memory Profiler ウィンドウの上部にある [Record native allocations] をクリックすると、記録を開始します。


    Native Memory Profiler でネイティブ メモリの割り当てを確認



    Android Studio 4.1 に含まれる主な機能拡張と新機能


    デザイン


    • マテリアル デザイン コンポーネントのアップデート


    開発


    • Database Inspector
    • Android Studio の中で直接 Android Emulator を実行
    • Dagger ナビゲーション サポート
    • TensorFlow Lite モデルの利用


    ビルドとテスト


    • Android Emulator - 折りたたみ式デバイスのヒンジのサポート
    • 変更の適用のアップデート
    • AAR から C/C++ の依存関係をエクスポート
    • ネイティブ クラッシュ レポートのシンボリケーション


    最適化


    • システム トレース UI の改善
    • スタンドアロン プロファイラ
    • Native Memory Profiler


    本資料は、Unity Technologies やその関連会社による提供または提携ではありません。“Unity” は、米国およびその他の場所における Unity Technologies またはその関連会社の商標または登録商標です。






    Android 11 が公開されました!日本時間 9 月 9 日に、ソースを Android オープンソース プロジェクト(AOSP)にプッシュし、Android の最新バージョンを正式にリリースしました。Android 11 は、3 つのテーマ、すなわち人、管理、安全性にフォーカスして開発されています。中心のコミュニケーションへのアプローチ、ユーザーがすべてのスマート デバイスにすばやくアクセスしてコントロールできる管理、端末のデータの共有方法をより細かく制御できる安全性の 3 つです。詳しくは、こちらのブログ記事をご覧ください。  

    デベロッパーにとって、Android 11 は新機能の宝庫です。会話通知、デバイスとメディアのコントロール、「今回のみ」のアクセス許可、強化された 5G サポート、IME の切り替えなどを確認しておきましょう。皆さんの開発作業を高速化するため、互換性の切り替え、ADB の増分インストール、アプリ終了理由 API、データアクセス監査 API、Kotlin NULL 可能性アノテーションなど、たくさんの新しいツールも追加しました。多くのデベロッパーの皆さんがAndroid 11 に対応したアプリを開発されることが楽しみです! 

    9 月 9 日より、正式版の Android 11 が Pixel 2、3、3a、4、4a 端末から順次配信が開始されていますので、ご期待ください。配信前にダウンロードする方は、Android 11 デベロッパー サイトをご覧ください。  

    人、管理、安全性

    「人」

    Android 11 は「人」を中心とした、高い表現力を持っています。スマートフォンで会話する方法を新たな発想で見直し、皆さんの生活に最も重要な「人」を認識して優先できる OS です。デベロッパーは、Android 11 を使ってさらに深い会話や個人間のやり取りを行うアプリを構築できます。

    • 会話通知がシェード上部の専用のセクションに表示されます。これは人を前面に出したデザインになっており、会話をバブルとして開く、ホーム画面に会話のショートカットを作成する、リマインダーを設定するなどの会話専用アクションも実行できます。


    • バブルを使って会話を表示したままにできるので、端末でマルチタスク作業を行っていても会話にアクセスできます。Android 11 のメッセージ アプリやチャットアプリでこの機能を有効化するには、通知で Bubbles API を使う必要があります。


    • 統合キーボード サジェスチョンを利用すると、自動入力アプリやインプット メソッド エディタ(IME)から、状況に特有なエンティティや文字列を IME のサジェスチョン ストリップ(このような内容を表示するには最も便利な場所です)に直接かつ安全に表示できます。


    バブルと会話通知


    管理

    Android 11 では、ユーザーが端末につながっているすべてのスマート デバイスにすばやくアクセスして、1 か所からコントロールできます。デベロッパーは新しい API を使い、ユーザーによるスマート デバイスの表示やメディアの制御を実現できます。

    • デバイス コントロールを使うと、ネットワークに接続されたスマート端末に今までになく迅速かつ簡単にアクセスして制御できます。電源ボタンを長押しするだけで、すべてのデバイスが即座にデバイス コントロールに表示されるようになりました。新しい API を使うと、アプリを「コントロール」に表示できます。詳しくはこちらをご覧ください。


    • メディア コントロールは、オーディオ コンテンツや動画コンテンツの出力先デバイス(ヘッドフォン、スピーカー、TV など)を即座に切り替えたいときに便利です。詳しくはこちらをご覧ください。

     

    デバイス コントロールとメディア コントロール


    安全性

    Android 11 では、機密性の高いアクセス許可をユーザーが細かく制御できるようにして透明性を向上させ、アップデートを高速化することで端末の安全を保てるようにしています。

     

    • 「今回のみ」のアクセス許可 - ユーザーはアプリに対して、端末のマイクやカメラ、位置情報に対する 1 回限りのアクセス許可を付与できるようになります。アプリは、次に使われたときに再度アクセス許可をリクエストできます。詳しくはこちらをご覧ください。
       


      Android 11 の「今回のみ」アクセス許可ダイアログ


    • バックグラウンド位置情報 - バックグラウンド位置情報を使うには、実行時アクセス許可に加えて、ユーザーから追加の承認を得る必要があります。バックグラウンド位置情報を必要とするアプリでは、システムはまずアプリがフォアグラウンド位置情報を要求することを確認します。その後、個別のアクセス許可リクエストによって、アクセス権をバックグラウンド位置情報に広げます。その際、ユーザーがアクセス許可を付与できるように、システムは [管理] を開きます。 

      なお、不正利用を防ぐため、アプリがバックグラウンドで位置情報にアクセスする場合は承認を得なければならなくなります。デベロッパーの皆さんの対応が間に合うよう、2021 年まで既存アプリへのポリシーの適用を行わないません。詳しくはこちらをご覧ください。

       
    • アクセス許可の自動リセット - ユーザーが長期間アプリを使わなかった場合、Android 11 はアプリに関連付けられたすべての 1 回だけのアクセス許可を「自動リセット」し、ユーザーに通知します。アプリは、次に使われたときに再度アクセス許可をリクエストできます。詳しくはこちらをご覧ください。
       

    • 対象範囲別ストレージ - 外部ストレージにあるアプリのデータとユーザーのデータの保護を強化し、さらにデベロッパーが簡単に移行できるように改善しています。詳しくはこちらをご覧ください。

       
    • Google Play システム アップデート - 昨年リリースされた Google Play システム アップデートは、Android エコシステムの端末に対するコア OS コンポーネントのアップデートを促進する仕組みです。Android 11 では、アップデート可能なモジュールの数が倍以上になっています。この 12 の新しいモジュールは、ユーザーやデベロッパーのプライバシーやセキュリティ、整合性の改善に役立ちます。

       
    • BiometricPrompt API - BiometricPrompt API を使うと、アプリがロック解除や機密部分へのアクセスを行う際に必要とするバイオメトリック認証強度を指定できます。下位互換性を確保するため、この機能は Jetpack Biometric ライブラリにも追加されています。この件については、作業の進捗に応じて最新情報をお知らせします。

       
    • Identity Credential API - これにより、モバイル運転免許証、国民識別番号、デジタル ID などの新しいユースケースが実現します。Android 11 でデジタルファーストな身分証明を提供できるように、さまざまな政府機関や業界パートナーと連携して作業を進めています。

    こちらから、Android 11 のすべてのプライバシー機能について確認いただけます。


    イノベーション

    • 5G サポートの強化 - Android 11 では、高速かつ低遅延な 5G ネットワークを活用できるように、デベロッパー サポートがアップデートされています。ユーザーが 5G ネットワークに接続したタイミングを検知したり、接続が従量課金かどうかを確認したり、接続の帯域幅を推定したりすることができます。5G 体験の構築に役立つよう、Android Emulator にも 5G サポートを追加しています。Android で 5G を使ってみたい方は、5G デベロッパー ページをご覧ください。


         
      5G は、自宅にとどまることなく、友人から家族、会社に至るまで、まわりの世界とシームレスな繋がりを実現し、「移動中」の体験も高める
       

    • 新しい画面タイプのサポート - Android 対応端末のメーカーは、ホールパンチ スクリーンやウォーターフォール スクリーンなど、新しく画期的な画面の端末を市場に送り出しています。Android 11 では、プラットフォームによるサポートを追加し、アプリを最適化できる API を提供しています。ホールパンチ スクリーンとウォーターフォール スクリーンは、どちらも既存のディスプレイ カットアウト API で扱うことができます。新しいウィンドウ レイアウト属性を設定してウォーターフォール スクリーン全体を使用したり、新しいウォーターフォール インセット API を使ってエッジ付近のインタラクションを制御したりすることができます。 

       
    • 通話スクリーニングのサポート - Android 11 では、通話スクリーニング アプリによるロボコール対策が強化されています。アプリは、通話詳細の一部として着信通話の STIR/SHAKEN ステータス(発信者番号のなりすましに対抗するための標準)を検証できるようになり、通話拒否の理由の報告も可能になります。さらに、システムが提供する通話終了画面をカスタマイズし、通話を迷惑通話としてマークする、連絡先に追加するなどの操作が可能になります。 


    品質の向上


    • OS の耐障害性 - Android 11 では、RSS HWM しきい値に基づいてユーザーが気づかないようにプロセスの再起動を強制するなど、メモリ再利用プロセスを微調整することで、OS 全体のダイナミックさと耐障害性を向上させています。 さらに、パフォーマンスとメモリを改善するために、Android 11 に Binder のキャッシュを追加しています。これにより、静的に近いデータを取得する際にキャッシュが活用されるようになり、利用頻度の高いシステム サービス IPC コールが最適化されます。Binder のキャッシュは、電池寿命の向上や CPU 時間の削減にも効果があります。


    • 同期的な IME の切り替え - 新しい API を使うと、アプリのコンテンツと、アニメーションしながら画面に出入りする IME(インプット メソッド エディタ、すなわち画面キーボード)やシステムバーを同期させることができます。これにより、自然で直感的でスムーズな IME の切り替えを簡単に実現できるようになります。新しいWindowInsetsAnimation.Callback API を使うと、フレーム単位の完璧な切り替えが行えます。この API を使うとシステムバーや IME がアニメーションしている間、アプリはインセットに対するフレーム単位の変化について通知を受けることができます。さらに、新しい WindowInsetsAnimationController API を使うと、システムバー、IME、没入モードなどのシステム UI タイプを制御することもできます。詳しくはこちらをご覧ください。 


     

    • HEIF アニメーション ドローアブル - ImageDecoder API を使うと、HEIF ファイルに格納されたイメージ シーケンス アニメーションのデコードとレンダリングを行うことができます。そのため、ネットワーク データや APK サイズへの影響を最低限にとどめつつ、高品質アセットを利用することができます。HEIF イメージ シーケンスを使うと、アニメーション GIF に比べてイメージ シーケンスのファイルサイズを大幅に削減できます。 


    • ネイティブ イメージ デコーダー - 新しい NDK API を使うと、グラフィックや後処理用にネイティブ コードからイメージ(JPEG、PNG、WebP など)のデコードとエンコードを行うことができ、しかも外部ライブラリをバンドルする必要がなくなるため、APK サイズを小さく保つことができます。ネイティブ デコーダーには、継続的にプラットフォームのセキュリティがアップデートがされる Android の処理を活用できるというメリットもあります。この API の使い方の例については、NDK サンプルコードをご覧ください。

       
    • MediaCodec の低遅延動画デコード - Stadia など、リアルタイムに動画ストリーミングを行うアプリやサービスには、低遅延動画が不可欠です。低遅延再生をサポートする動画コーデックは、デコードの開始後、できるだけ早くストリームの最初のフレームを返します。アプリで新しい API を使うと、特定のコーデックの低遅延再生について確認と設定を行えます。

       
    • 可変リフレッシュ レート - アプリやゲームで新しい API を使うと、ウィンドウに好みのフレームレートを設定できるようになります。ほとんどの Android 端末は、60Hz のリフレッシュ レートで画面を更新します。しかし、60Hz に加えて 90Hz をサポートしているなど、複数のリフレッシュ レートに対応し、実行時に切り替えることができるものもあります。このような端末では、システムがアプリに最適なリフレッシュ レートを選択する際に、アプリが設定したフレームレートを使用します。この API は、SDK と NDK の両方で利用できます。詳細については、こちらをご覧ください。

       
    • ダイナミック リソース ローダー - Android 11 には、アプリが実行時に動的にリソースやアセットを読み込む新しいパブリック API が含まれています。リソース ローダー フレームワークを使うと、アプリやゲームにリソースの基本セットを含めておき、実行時に必要に応じて追加リソースを読み込んだり、読み込んだリソースを変更したりすることができます。 

       
    • Neural Networks API(NNAPI)1.3 - Android 端末で機械学習をサポートするため、命令や制御の追加を続けています。一般的なユースケースを最適化するため、NNAPI 1.3 には優先順位とタイムアウト、メモリドメイン、非同期コマンドキューに関する API が追加されています。高度なモデル用の新しい命令には、符号付き整数の非対称量子化、分岐とループ、MobileNetV3 などの次世代オンデバイス ビジョンモデルの高速化に役立つ hard-swish 命令などが含まれています。 


    デベロッパーに優しく

    • アプリ互換性ツール - Android 11 の大半の動作の変更点をオプトインできるようにし、アプリの targetSdkVersion を 30 にするまで反映されないようにすることで、アプリに対する互換性の影響を最低限にとどめています。また、Google Play を通して配信している場合は、これらの変更をオプトインするまでに 1 年以上の期間があります。ただし、早めにテストを始めることを推奨します。Android 11 では、テストに役立ててもらうため、多くのオプトイン可能な変更点の有効、無効を切り替えることができるようにしています。詳しくはこちらをご覧ください。


    • アプリの終了理由 - アプリが実行される端末の種類、メモリ構成、ユーザーが行った動作は多岐にわたり、アプリが終了した場合、その理由とその状況を分析することが何より重要となります。Android 11 では、その分析が簡単にできます。搭載された終了理由 API を使うと、アプリの直近の終了について詳細をリクエストできます。

       
    • データアクセス監査 - データアクセス監査はアプリの診断を行う機能で、アプリがユーザーデータにどのようにアクセスするか、どのユーザーフローからアクセスするかについて知ることができます。たとえば、皆さんのコードや使用する SDK で、機密データへの意図しないアクセスを見つける際に役立ちます。詳しくはこちらをご覧ください。 

       
    • ADB Incremental - 開発時に ADB(Android Debug Bridge)で巨大な APK をインストールすると、非常に時間がかかって生産性に影響が出る可能性があります。特に、Android ゲーム関連のデベロッパーではそれが顕著です。Android 11 の ADB Incremental を利用すると、開発用の PC から大きな APK(2GB 以上)を Android 11 端末にインストールする時間が最大で 10 分の 1 になります。詳しくはこちらをご覧ください。

       
    • Kotlin NULL 可能性アノテーション - Android 11 では、パブリック API のさらに多くのメソッドに NULL 可能性アノテーションが追加されています。また、たくさんの既存のアノテーションが警告からエラーにアップグレードされています。これにより、NULL 可能性の問題を実行時ではなくビルド時に発見できるようになります。詳しくはこちらをご覧ください。 


    Android 11 リリースに向けたアプリの準備

    Android 11 はまもなくユーザーに公開されます。ぜひ、互換性テストを終えてアップデートを早めに公開していただくようお願いします。 


    注意すべき大きな動作の変更点のいくつかを紹介します(これらは、アプリの targetSdkVersion によらず適用されます)。

     

    • 「今回のみ」のアクセス許可 - 位置情報と端末のマイクやカメラに対する 1 回限りのアクセス許可を付与できるようになります。詳しくはこちらをご覧ください。


    • 外部ストレージ アクセス - 外部ストレージにある他のアプリのファイルにアクセスできなくなりました。詳しくはこちらをご覧ください。


    • Scudo 強化アロケータ - Scudo がアプリのネイティブ コード用ヒープメモリ アロケータになりました。詳しくはこちらをご覧ください。


    • ファイル記述子サニタイザー - Fdsan がデフォルトで有効化されるようになりました。アプリのネイティブ コードでファイル ディスクリプタ処理の問題を検出します。詳しくはこちらをご覧ください。


    Android 11 には、オプトイン可能な動作の変更点も含まれています。これらは、アプリのターゲットを新しいプラットフォームにした時点で反映されます。互換性のあるバージョンのアプリを公開した後、これらの変更点をできる限り早く評価することをお勧めします。互換性テストやツールの詳細については、Android 11 の互換性の週にお伝えしたドキュメントをご覧ください。詳しい技術解説は Android 11 デベロッパー サイトをご覧ください。 


    新機能や新 API でアプリを強化する

    準備ができたら、Android 11 に移行し、使用できる新しい機能や API について各種ドキュメントでご確認ください。こちらでは最初に着手すべき重要な機能をまとめています。以下の機能はすべてのアプリで対応することをお勧めします。 

    • ダークテーマ(Android 10 以降)- ダークテーマを追加するか Force Dark を有効にして、システム全体でダークテーマを有効にしているユーザーに一貫性のある体験を提供します。

    • ジェスチャー ナビゲーション(Android 10 以降)- アプリを全画面に対応させてジェスチャー ナビゲーションをサポートし、カスタム ジェスチャーがうまく動作するようにしましょう。詳しくはこちらをご覧ください。

    • ショートカットの共有(Android 10 以降)- 共有データを受け取りたいアプリは、ショートカット共有 API を使って共有ターゲットを作成する必要があります。共有データを送りたいアプリは、システム共有シートを使う必要があります。


    • 同期的な IME の切り替え - 新しい WindowInsets API やその関連 API を使うと、ユーザーにシームレスな画面遷移を提供できます。詳しくはこちらをご覧ください。 


    • 新しい画面タイプ - 必要に応じて、ホールパンチ スクリーンやウォーターフォール スクリーンを搭載した端末用にコンテンツをテストし、調整してください。詳しくはこちらをご覧ください。  


    該当するアプリでは、以下の項目にも対応することをお勧めします。

    • 会話 - メッセージングやコミュニケーションを行うアプリは、長期ショートカット共有を作成して通知に会話を表示することで、会話エクスペリエンスに参加できます。詳しくはこちらをご覧ください。 


    • バブル - バブルは、会話を表示したままにしてマルチタスク作業中に会話にアクセスできるようにする方法です。これを実現するには、通知で Bubbles API を利用します。 


    • 5G  - アプリやコンテンツで高速かつ低遅延な 5G を活用できる場合は、何ができるかを確認するため、デベロッパー リソースをご覧ください。 


    • デバイス コントロール - アプリで外部スマート デバイスをサポートする場合は、Android 11 の新しいデバイス コントロール エリアからアクセスできるようにしましょう。詳しくはこちらをご覧ください。 


    • メディア コントロール - メディアアプリは、Android 11 メディア コントロールをサポートすることが推奨されます。ユーザーがクイック設定シェードから再生や再開を制御できるようになります。詳しくはこちらをご覧ください。 


    Android 11 のすべての機能については、developer.android.com/11 をご覧ください。 


    Android 11 をインストールする

    Android 11 は、9 月 9 日より、一部の Pixel、OnePlus、Xiaomi、OPPO、realme スマートフォンにロールアウトされます。今後数か月で、さらに多くのパートナーが端末のリリースやアップグレードを行う予定です。今年のベータ版プログラムに登録されている端末も含め、Pixel 2、3、3a、4、4a スマートフォンをお持ちの方には、まもなく OTA(無線)アップデートが届きますので、ご期待ください。  

    Pixel 端末向けの Android 11 のファクトリー システム イメージも Android Flash Tool から利用できます。または、こちらからダウンロードできます。いつものように、最新の Android Emulator システム イメージは Android Studio の SDK Manager から取得できます。Treble 対応の端末で幅広くテストしたい場合は、こちらから Generic System Image(GSI)を入手できます。 

    Android 11 のソースコードは、Android オープンソース プロジェクト リポジトリの Android 11 ブランチの下にあります。こちらをご覧ください


    今後の予定について

    プレビュー版の Issue Tracker はまもなくクローズし、Developer Preview やベータ版ビルドに対して記録されたオープン状態のバグの管理も終了します。しかし、フィードバックは引き続きお待ちしています。Preview の Issue Tracker に記録した問題がまだ解消されていないという方は、AOSP Issue Tracker で Android 11 に対してフィードバックをお寄せください

     今年のプレビュー プログラムに参加してくださった、たくさんのデベロッパーと先行ユーザーの皆さん、本当にどうもありがとうございました。お寄せくださったフィードバックのおかげで、Android 11 はあらゆる人にとってよりよいプラットフォームになっています。

     Android 11 に対応した皆さんのアプリを拝見できることを楽しみにしています。


    Reviewed by Yuichi Araki - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing, APAC


    ユーザーやデベロッパーは ID の複雑さに悩まされており、それがデベロッパーの課題になっています。この課題に対処するため、新しい Google Identity Services Library の一部として、One Tap と Block Store に取り組んでいます。

    ID についてもっと知りたい方のために、「Identity on Android: What’s new in sign-in」という動画を公開しています。この動画では、Vishal が Google Identity System の新しいライブラリについて説明します。

    Facebook Messenger チームと Twitter のダイレクト メッセージング チームの 2 チームは、かなり早い段階から私たちと一緒に作業してきました。Twitter のストーリーはこちらから、どのように Facebook と協力して実装にあたったのかはこちらからお読みください。
    人と ID の詳細は、Pathway動画のプレイリスト、この週のまとめのブログ記事をご覧ください。

    第 2 週 - 機械学習


    この週は、#AndroidDevChallenge の入賞者の発表から始まりました。すべての入賞アプリと、アプリがどのように ML Kit や TensorFlow Lite を使っているのかを確認しましょう。どのアプリも、機械学習がいかに強力な方法でユーザーの目的達成をサポートできるのかを示すことに重点を置いています。たとえば、視覚障がいを持つユーザーが混雑した場所を移動することをサポートするアプリや、学生の手話学習をサポートするアプリなどがあります。
    先日、ML Kit を独立した SDK にして、Firebase アカウントがなくても利用できるようにしました。build.gradle ファイルに 1 行追加するだけで、アプリに ML 機能を組み込むことができます。
    要望が多く寄せられていた機能がもう 1 つ追加され、画像のラベル付けと物体検知および物体トラッキングにおいて、Google モデルを独自のモデルと交換できるようになりました。
    ユーザーの問題と ML の長所が交差する独自の場所を見つけることの重要性を確認し、ML プロダクトに関する意思決定に役立つ 「人にうれしいAIのための UXデザインガイド People + AI Guidebook(日本語・コミュニティによる翻訳版)」や、Read Along チームへのインタビューをご覧ください。

    また、第 2 週はAndroid アプリにカスタムモデルを追加する作業が今までになく簡単になったことにも注目しました。以下の Codelab をご確認ください。


    詳しくは、機械学習の Pathway動画のプレイリストまとめのブログ記事をご覧ください。


    第 3 週 - プライバシーとセキュリティ



    プライバシーとセキュリティ」ブログ記事でお知らせしたように、ユーザーデータへのアクセスに対する制御と透過性を強化しました。Android 11 にはさまざまなプライバシーの改善が導入されています。その 1 つである1 回だけの アクセス許可では、アプリが端末のマイクやカメラ、位置情報に 1 回だけアクセスすることを許可できるようになります。これらの新しい変更点を組み込み、プライバシーを尊重するアプリを構築する方法について確認しましょう。この動画では、さまざまな Android セキュリティ アップデートについて学ぶこともできます。

    その他の特筆すべきアップデートは、次のとおりです。

    • アクセス許可の自動リセット: Android 11 をターゲットにしたアプリでは、ユーザーが長期間アプリを使わなかった場合、システムがアプリに関連付けられたすべての付与済みのランタイム アクセス許可を「自動リセット」し、ユーザーに通知します。

    • データアクセス監査 API: Android 11 のデベロッパーは、保護された個人データをアプリがどのように利用しているかを透過的に把握できる新しい API にアクセスできます。アプリのプライバシーと安定性を向上させる Android 11 の新ツールもご覧ください。

    • 対象範囲別ストレージ: Android 11 では、API レベル 30 をターゲットとするすべてのアプリで、対象範囲別ストレージが必須となります。詳細を確認し、ストレージに関するよくある質問 をご覧ください。

    • Google Play システム アップデート: Google Play システム アップデートは、Project Mainline の一環として Android 10 で導入されました。これにより、ユーザーによるコア OS コンポーネントのアップデートが簡単になります。

    • Jetpack Biometric ライブラリ: このライブラリは、下位互換性を確保するため、Android 11 の新しい BiometricPrompt 機能を含むようにアップデートされています。

    「プライバシー、信頼性、セキュリティ」の Pathway動画のプレイリストプライバシーとセキュリティのベスト プラクティスについてのドキュメントをご覧ください。

    第 4 週 - Android 11 の互換性


    Android 11 Beta 2 を公開し、Platform Stability と呼ばれる新しいリリース マイルストーンに到達しました。これは、デベロッパーに対して、すべての API とシステム動作が確定したことを明確に示すためのものです。デベロッパーにとってのこのマイルストーンの意味や Android 11 のスケジュールなど、Android 11 Beta 2 と Platform Stability の詳細をご覧ください。また、第 4 週のあと、最終となる Android 11 Beta 3 を公開しました。

    Android 11 は 9 月 9 日に公式版をリリースしています。アプリを Android 11 に対応させるために、以下のドキュメントをご覧ください。


    Accelerating Android Updates」というブログ記事では、Android のアップデート可能アーキテクチャを拡大することで最新 OS の普及率を高める継続的な取り組みについて考察しています。また、LeBian SDK を開発している Excelliance Tech も取り上げました。同社は最近、Android OS との互換性を向上させるため、非 SDK インターフェースから安定した公式 API に移行しました。Excelliance Tech のストーリーをご覧ください。

    詳しくは、Android 11 の互換性 Pathway動画のプレイリスト、この週のまとめのブログ記事をご覧ください。

    第 5 週 - 言語


    Android 11 ベータ版では、非同期作業に Kotlin の使用が公式に推奨されるようになりました。Kotlin をまだ使ったことがない方は、以下をご覧ください。


    また、Kotlin ケーススタディのページで最新のケーススタディやデータをご確認ください。Google Home ケーススタディAndroid での Kotlin の現状についての動画も掲載されています。さらに、初心者の方向けに、Android Basics in Kotlin コースを新設しました。

    Java 言語のデベロッパーの方は、Support for newer Java language APIs の動画をご覧ください。さまざまな Android のバージョンでいかに新しい OpenJDK ライブラリを利用できるようにしたかご説明しています。Android 11 では、I/O プリフェッチによってアプリの起動時間をさらに高速化するため、Android ランタイムのアップデートも行っています。
    Android 11 には、プロファイルに基づいた最適化(PGO)を行うツールの改善や Android Studio 4.0 でのネイティブ依存性管理の向上など、ネイティブ ツールチェーン全般のアップデートが含まれています。

    また、Android Studio の D8 および R8 コンパイラに対する集中的な改善も続けており、R8 shrinker の Kotlin サポートを強化しています。詳細はこちらをご覧ください
    詳しくは、言語の Pathway動画のプレイリスト、この週のまとめのブログ記事をご覧ください。

    第 6 週 - Android Jetpack


    Android Jetpack の新機能に興味がある方は、What's new in Android Jetpack の動画をご覧ください。多数のライブラリのアップデートについての概要と、 Jetpack の導入を行うためのヒントをご説明しています。

    • Hilt などのメジャーリリースについて深く掘り下げて説明しています。使い始める際に参考になるチートシートや、実際に私たちのサンプルで依存性注入に Hilt を使うように移行した手順も紹介します。ボイラープレートが減るということは、楽しみが増えるということです。

    • Paging 3.0 の詳細をご覧ください。このライブラリは、Kotlin コルーチンを使って完全に書き直されており、エラー ハンドリングの改善、変換機能の向上などの機能強化が行われています。

    • CameraX ベータ版について学びましょう。皆さんに代わってさまざまな端末や OS バージョンのエッジケースを管理してくれます。

    今年は、Navigation 2.3 のリリースでいくつかの大きな改善も行いました。これにより、Android の UI 原則を維持しつつ、アプリの異なる画面間を簡単にナビゲートできるようになりました。

    Android 11 では、ユーザーが機密性の高いアクセス許可をさらに細かく制御できるようにする作業を続けています。新しい ActivityResult API には、共通インテントなどのための型安全なコントラクトが含まれています。こういった変更により、アクセス許可のリクエストが簡単になります。今後さらに、アクセス許可を簡単に扱えるようにする予定です。
    AppStartup ライブラリの最新リリースや、WorkManager の新機能についても知っておきましょう。

    詳しくは、Jetpack Pathway動画のプレイリスト、この週のまとめのブログ記事をご覧ください。

    第 7 週 - Android デベロッパーツール


    こちらの動画で Android デベロッパー ツールの新機能の概要をまとめています。また、こちらの動画ではデザインツールの最新アップデートをご説明しています。

    Layout Inspector がアップデートされたレイアウトのデバッグについてもご確認ください。 さらに、 Jetpack Compose Design ツールの最新動向や、Android Studio の新しい Database Inspector の使い方もご覧いただけます。Android Studio で Jetpack Hilt を利用するための最新開発ツールも紹介します。
    Android デベロッパー ツールのビルドシステムについては、以下を参考にしてください。


    仮想テストに関する最新情報は、Android Emulator に関するこちらのブログをお読みください。最後に、パフォーマンス ツールの最新の変更点について、System Trace に関するパフォーマンス プロファイラ コンテンツをご覧ください。Android Studio 4.1 による C++ メモリ プロファイリングについても詳しく紹介しています。
    詳しくは、Android デベロッパー ツール Pathway動画のプレイリスト、この週のまとめのブログ記事をご覧ください。


    第 8 週 - アプリの配布と収益化


    新しい Google Play Console ベータ版についてのウェビナーを実施したり、最近の Android App Bundle の改善と新規アプリのスケジュールについてお知らせしました。2021 年の下半期には、Google Play で新しいアプリやゲームを公開する際に Android App Bundle の使用が必須になる予定です。同じタイミングで、以前の APK 拡張ファイル(OBB)のサポートを終了し、Play Asset Delivery が、150 MB 以上のゲームを公開する際の標準オプションになります。また、インスタント対応にはインスタント対応 App Bundle による公開を必須とし、以前の Instant App の ZIP フォーマットのサポートを終了する予定です。デベロッパーが新しいアプリ内レビュー API を使うと、アプリの中で評価やレビューの登録を依頼できます。

    Google Play Billing でユーザーの信頼を高めるため、忘れずに定期購入の透明性向上に関するポリシーを遵守してください。さらに、定期購入者を獲得して維持するために役立てていただくよう、機能セットを拡張した Play Billing Library 3 をリリースしました。2021 年半ばには、これが必須となる予定です。

    先月、9 つの新しいマーケットで Google Play Pass がリリースされました。Google Play Pass と Google Play の直接課金の両方を使っているデベロッパーは、米国での平均で Google Play Pass から 2.5 倍の収入を得ています。さらに、Google Play ストアの収益が減ることはありません。こちらから詳細を確認し、お申し込みください。

    詳しくは、アプリの配布と収益化の Pathway動画プレイリスト、この週のまとめのブログ記事をご覧ください。

    第 9 週 - スマートフォン以外の Android


    この週のハイライトをチェックしましょう。


    詳しくは、Android TV 大きな画面についての Pathway、スマートフォン以外の端末に関する動画プレイリスト、この週のまとめのブログ記事をご覧ください。

    第 10 週 - ゲームとメディア


    いくつかのゲームデベロッパー向けの最新情報を公開し、「11 Weeks of Android」のスペシャル エピソード The Android Game Developer Show を公開しました。


    アプリで MediaStyle と有効な MediaSession トークンを利用すると、Android 11 の新しいメディア コントロールを活用することもできます。メディアの再開をサポートする方法を確認しましょう。再開するには、MediaBrowserServiceCompat を使ってアプリを検出可能にして、EXTRA_RECENT ヒントを使ってコンテンツの再開をサポートし、onPlay および onGetRoot コールバックを処理します。また、MediaRouter Jetpack ライブラリの使い方や、アップデートされた UAMP サンプルもご覧ください。

    さらに、アプリで 5G を活用する主な方法もいくつか紹介しました。Android 11 には、新しい API や既存の API のアップデートが追加され、5G の機能を活用するために必要なすべてのツールがそろいました。たとえば、強化された帯域幅の推定 API5G の検出機能、携帯通信会社の新しい従量制の確認フラグなどです。5G 端末やネットワーク接続がなくても、Android エミュレータでこれらの API の開発やテストができるようになっています。Android 5G の Web ページに、上記のすべてと関連情報が掲載されています。
    詳しくは、「ゲームとメディア」の Pathway、動画プレイリスト、まとめのブログ投稿をご覧ください。ゲーム デベロッパー向けのすべてのツールやリソースの最新情報は、d.android.com/games からアクセスできます。

    第 11 週 - UI


    最後の週には、4 つの新しい Codelab9 つの新しいサンプル新しいドキュメント、Compose チームからのポッドキャストをリリースしました。関連動画は以下からご覧ください。


    Android 11 の新機能として、オンスクリーン キーボードの開閉時にアプリでシームレスな画面遷移ができるようになりました。この機能をアプリに追加する方法は、 動画やブログ記事サンプルアプリをご覧ください。

    私達はマテリアル デザイン ガイドラインに従ってアプリに一貫性を持たせ、あるアプリで学んだパターンを別のアプリでも使えるよう推奨しています。マテリアル テーマ(種類形状)、ダークテーマ、マテリアル デザイン コンポーネント(MDC)ライブラリを使ったマテリアルのモーション システムの詳細をご覧ください。まだ MDC に移行していない方は、移行ガイドを確認してください。

    新しい MDC-Android Compose Theme Adapter などのライブラリを使うと、移行が楽になります。このライブラリは、MDC XML テーマを Compose の `MaterialTheme` に変換します。
    詳しくは、Compose の Pathway、モダン UI Pathway動画プレイリスト、この週のまとめのブログ記事をご覧ください。

    その他の関連ドキュメント


    #11WeeksOfAndroid 動画コンテンツの全プレイリストはこちらからご覧いただけます。Twitter YouTube をフォローし、メーリングリストをサブスクライブすると最新のニュースをメールで受け取れます。ご覧いただき、ありがとうございました!



    Reviewed by Yuichi Araki - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing, APAC