ネイティブ アプリの開発にはトラブルがつきものです。移り変わりの激しいユーザーを考慮して 1 年以内といった短期間に開発するとなれば、なおさらです。私たちが eBay Motors アプリを開発した際にも、難しい課題に直面しました。ですが、Google の UI ツールキットである Flutter の力を借りることで、短期間で高品質なアプリを作成し、Android と iOS のユーザーに対して一貫した体験を提供することができました。

eBay Motors アプリの構想


eBay は自動車向けマーケットプレイスを 10 年以上にわたって提供しています。そして2年ほど前、経営陣は eBay で自動車を売買することに特化した専用のアプリを提供することで新たなビジネス機会を掘り起こせると判断しました。


車のオンライン購入は、他商品のオンライン ショッピングとは大きく異なります。特に車は購入額が高いので、その販売プロセスには考慮すべき点があります。eBay の特長は独自の品揃えです。クラシック モデルやレアモデル、改造車などがあり、販売者は自分たちと同じようにその車を気に入ってくれる人を探しています。eBay の購入者や販売者の多くは、他にはない自分だけの車を探しています。そして私たちは、そういったユーザーのために特別なアプリを作りたいと考えました。そこから eBay Motors アプリの構想が生まれたのです。

eBay Motors の対象ユーザー


eBay Motors の対象ユーザーは自動車愛好家です。ただし日常的な趣味といっても、車を買うのは数年に一度あるかどうかです。ですから、定期的に使ってもらえるアプリを作成するという点が課題でした。そこでまずチームとしては、対象ユーザーの購買動機と、他の自動車愛好家とどのように関わりたいのかを理解することを重視しました。


購入者は次の車を探しているのかもしれません。あるいは、単にウィンドウ ショッピングを楽しんだり、インスピレーションを求めていたりするだけかもしれません。車の購入を検討する場合、購入者は自信を持って購入したいものです。内装、外装、エンジン、駆動系など、あらゆる角度から車を確認し、車と販売者の両面を理解したいと考えています。現在の所有者はどのように車を使っているのでしょうか。毎日運転しているのでしょうか。ガレージに入れて磨いているのでしょうか。年に一度しか運転せず、自動車ショーのために買ったのでしょうか。私たちはそういった情報を求めるニーズを満たせるアプリを作りたいと考えました。


車の販売者側から話を聞くと、販売者が非常に気にしているのは売る相手のことであり、必ずしも価格とは限らないことがわかりました。一部の販売者は、自分が望むように車を扱ってくれるなら、価格が下がってもその人に売りたいと話していました。この姿勢は従来の自動車マーケットプレイスとはまったく異なります。従来のマーケットプレイスであれば、販売者は常に車を一番高く買ってもらうことを考えます。


調査を通して、車の売買は、購入者と販売者の関係の終わりと見なされていないことがわかりました。販売者は、車の状態を確認したり、購入者と話を続けたりしたいと考えていました。購入者側も連絡を取り続けたいと考えていました。「こういう変更を加えようと思ったのだけれど、他の変更が行われているようだ。そのことについて教えてもらえないか?」といったことを尋ねるためです。それを受けて、取引だけではなく、コミュニティを形成する機能も含めたいと考えました。

Flutter の選択


eBay Motors のリーダーは、アプリの作成に関して、チームにかなりの自主性を持たせました。ただし 1 つ、決まった要件がありました。それは、1 年以内にアプリをリリースしなければならないということです。調査したところ、車に関する詳しい情報、オークション、メッセージ、検索など、eBay ユーザーが期待するすべての機能をアプリに含めなければならないことは明らかでした。また、熱心なコミュニティを育むための機能もぜひ追加したかったのです。このため、アプリに対する要件が非常に広く、( Android と iOS の)2 つのプラットフォームを担当するチームが個別に作業を進めると、期限に間に合いません。


アプリの開発に新しいアプローチが必要なことは明らかでした。チームは以前にもいくつかのクロスプラットフォーム開発ツールを評価していましたが、その結果は芳しくありませんでした。


しかし、このプロジェクトが始まったころ、Flutter 1.0 がリリースされたのです。Flutter は Google の UI ツールキットで、1 つのコードベースから、モバイル、ウェブ、PC 向けにネイティブにコンパイルされた、魅力的なアプリを作成できます。とても有望に見えたので、チームは詳しい調査を始めました。


Flutter を徹底評価した結果はすばらしいものでした。数週間のうちに、我々のアプリにとって最善の選択は Flutter だと確信しました。


eBay Motors には 2 つの開発チームがあり、作業の進め方、調整の仕方、プログラミングのスタイルが異なっていました。Flutter を採用すると決めたとき、まずは 2 つのチームをまとめる方法を見つけることが重要でした。スケジュールが厳しく、2 つのチームがアプリの開発方法について合意することが不可欠でした。目標は全員同じでした。高品質な製品を作り、すばやく配信して、期待を上回ることです。


両方のチームで打ち合わせを行って相違点を洗い出し、双方が譲り合いながらも、成功に向けて合意できました。どちらのチームにも Flutter や Dart の経験はまったくありませんでしたが、あらかじめ対策を考えていたので、学習は簡単でした。

最初の開発


最初の製品要件を受け取ったのは 2019 年 3 月でした。それから 3 か月以内に購入と販売が行えるベータ版のアプリを制作し、CEO に見せる必要がありました。


この最初の期限にの存在により、スコープを大幅に縮小する必要がありました。Flutter を使ったとしても、すべての問題を同時に解決できないことはわかっていました。購入や販売に関するすべての機能を開発しながら、コミュニティ全体を構築してメッセージを刷新することはできません。すべての機能に同時にとりかかるのではなく、戦略的に優先順位をつけることが重要でした。その上で、どのスコープをカットするかという議論が大きな焦点になりました。それが調査の焦点になり、さらに開発の焦点になりました。細かな変更ごとに次の道が開かれ、最終的に CEO へ見せるマイルストーンに向かうことができました。ユーザーが解決を望んでいる固有の問題を解決することに集中し、全員で問題に対処しました。Flutter を使った開発によるスピードのおかげでこの困難で厄介なプロセスを乗り切ることができ、想定していなかったような形で期限に間に合わせることができました。そのたびに、チームに活力があふれました。


この最初のマイルストーンの後にもたくさんのマイルストーンがやってきましたが、Flutter のおかげで問題を解決し、先に進むことができました。CEO 向けのベータ版から eBay 全体の内部向けベータ版に進み、数千人の eBay 社員にアプリを使ってもらいました。その 1 か月後には、パブリック ベータ版に進みました。その後、2019 年 12 月に iOS 版と Android 版をマーケットプレイスに公開しました。


こういった瞬間の 1 つ 1 つが eBay Motors にとって大きなものでした。チームの自信につながりました。これを通して学んだのは、新たなユーザーに使ってもらい、フィードバックをもらって、修正や調整を行うことの大切さです。目標に向かってアプリを短い周期で繰り返し改善しながら提供することが、製品チームの成功につながりました。アプリのスコープと複雑さは拡大していったにもかかわらず、短期間で提供し続けることができたのは Flutter のおかげです。


最初にスコープを大きく削減していたため、チャットやコミュニティに関する機能は当初ありませんでした。そこで、2020 年 1 月より、あらためてコミュニティ機能の構築を始めました。そしてリリース後の数か月間で、アプリの機能を 50% 追加しました。

Flutter の効果


Flutter を採用した当初、私たちはそれをコードを共有して時間を節約できるエンジニアリング ツールだと考えていました。しかし Flutter は、チームが想定していなかった多くの問題を解決してくれました。場合によっては、その存在すら知らなかった問題を解決してくれたこともありました。


私たちは、プラットフォーム全体でユーザー インターフェースを確実に統一したいと考えました。特定のプラットフォームのデザイン言語に合わせるのではなく、eBay Motors ブランドを重視した体験を提供したかったのです。しかし、スクロール時の動作やナビゲーションの仕組みなど、一部のプラットフォームに依存した動作は維持する必要がありました。ありがたいことに、Flutter では何もしなくてもこういった問題が解決されます。つまり、デザイナーはプラットフォームによらないデザインを 1 つ作るだけでよいので、多くの作業を削減できます。


製品の要件についても、プラットフォーム間の差をなくしたいと考えました。それぞれの要件の実装を 1 つにすることで、オーバーヘッドが徐々に減っていきました。会議も少なくなり、はるかに少ない労力で同じ成果を実現できました。


Flutter の理解が深まるにつれて、コードの共有が大成功だったことが明らかになりました。私たちのコードベースでは、コードの 98.6% が Android と iOS で共有されています。プラットフォーム固有のネイティブ コードは約 0.5% です。残りは CI パイプライン、自動化ツール、デベロッパー サポートのコードです。


コードの共有によって開発の労力は大幅に節約できましたが、テストでも大きな節約を実現しました。Flutter のテスト ストーリーは、これまで扱ったあらゆるプラットフォームの中で、一番使い勝手が良かったのです。このテスト機能は、すばやく作業を進め、自信をもってリリースするために役立っています。当初から 100% コード カバレッジを必須とするポリシーを採用しており、Flutter によってこの目標の達成が容易になりました。


この節約の効果は、アプリを実際にリリースした今も現れています。iOS と Android で別々にバグに対処する必要がないので、サポートがはるかに予測可能になっています。新しいリリースは融通が利く Android ベータ版チャンネルにプッシュできるので、iOS リリースもスムーズに進むという確信が持てます。これほど多くのことを節約できるのは、実質的に 1 つのアプリを開発してサポートすればいいだけだからです。

Flutter を始めるためのヒント


Flutter を始める場合は、モバイルアプリの問題解決方法についての固定観念を捨て去ることが重要です。Flutter で使われているパラダイムは、従来の iOS や Android とはまったく異なるからです。アプリを開発する際に Flutter が求めることを一度理解してしまえば、すべてはスムーズに進みます。そのための最適な方法は、多少の時間をかけて Flutter のコードベースを学ぶことです。


Flutter のすばらしい点の 1 つは、オープンソースであることです。実際に開いてみれば、Flutter チームがすべてのコンポーネントをどのように構築しているかを見ることができます。そこからたくさんの知見を得ることができます。


Flutter コミュニティも非常に活発で好意的です。Flutter フレームワークが提供していないソリューションが必要な場合でも、誰かがそのパッケージを開発しているかもしれません。必要なものを探したり、貢献したり、オープンソース文化を取り入れたりすることを推奨します。

Flutter の今後


eBay Motors で Flutter を使い始めたとき、公然と Flutter を使っていた大企業はほとんどありませんでした。ニッチなツールキットであまり実績がないと考えられていたのかもしれません。今では、Flutter の勢いは大きく広がり、他の大企業にも採用されています。すばらしいのは、Flutter が最先端を行く最適なアプリ開発エクスペリエンスを提供していることです。特に優れているのは常に成長と改善を続けている点です。


Flutter の成長に合わせて、Dart にもたくさんの改善が行われています。null 安全性の追加など、Swift や Kotlin に欠かせない機能を導入するための多くの作業も進んでいます。Flutter が成長し続けており、それに伴って Flutter アプリ開発の可能性が広がっていることを、とても嬉しく思っています。企業の規模を問わず、Flutter が 1 つのコードベースで PC、ウェブ、モバイル向けのアプリを提供できるという認識が広まるにつれて、Flutter の採用もさらに増えていくでしょう。

おわりに


eBay Motors のチームは、全員がネイティブ iOS かネイティブ Android の開発経験者です。その全員が Flutter をとても気に入っているという意見で一致しています。デベロッパー エクスペリエンスが優れており、コーディングを行う上で、ホットリロードによってすぐにフィードバックを得られる価値は計り知れません。また、プロセスがはるかにスムーズに進むため、すばやく問題を解決できます。2 年経った今でも、そのスムーズさへの感動は続いています。チームのメンバーが「Flutter が大好き。新しい技術を見つけた」と話すことも珍しくありません。


私たちのような規模のチームでは、Flutter を選ばなければ eBay Motors アプリを開発できなかったでしょう。2 つのアプリを別々に開発する方式では実現できない形で、リソースを有効活用できています。Flutter はスピードアップを後押しする潤滑油なのです。

詳細はこちら

Apps, Games, & Insights ポッドキャストのエピソード 16(英語) では、Larry Mckenzie 氏と Corey Sprague 氏がさらに詳しく解説しています。ぜひお聴きください。



ご意見をお寄せください

Flutter でアプリを開発してみようと思った方は、#AskPlayDev を使って Twitter でお知らせください。ニュースや Google Play で成功するためのヒントを定期的に共有している @GooglePlayDev から英語でご返信します。


Reviewed by Hidenori Fujii - Google Play Developer Marketing APAC

この記事は 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


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 またはその関連会社の商標または登録商標です。






    アプリやゲームの公開は、アプリのライフサイクルの中でも特に重要な瞬間です。本番リリースを安定させ、テストリリースをすばやく公開し、マーケティングに関してのメッセージに適切に掲載するなど、すべてをスムーズに行う必要があります。そのためには、 アプリのステータスが見えることが重要です。Google Play でアプリの審査がいつ行われ、いつ承認され、いつ公開できる状況になるのかを把握できれば、リリース スケジュールを立てやすくなります。

    新しい Google Play Console の 2 つの新機能で、それを可能にしました。[公開の概要] ページでは、アプリの公開が完了するまでの流れを把握しやすくなりました。また、管理対象の公開を利用すると、Google Play でアプリのアップデートを公開するタイミングを細かく制御できます。11 月 2 日に新しい Play Console が全ユーザーに適用されると、これらの機能がリリースのタイミング管理の推奨方法になります。この記事では、アプリの公開管理機能を詳しくご説明します。

    公開の概要

    新しい [公開の概要] ページには、リリースやストアの掲載情報などに対する最近の変更がすべて表示されます。これには、現在審査中の変更や、Google Play が処理中の変更も含まれます。大規模なチームに所属している方は、すべての変更を 1 か所で管理して同時に公開できるようになります。

    公開の概要は、デベロッパーのアクティビティ ログとは異なり、Google Play での表示上の変更や、アプリの審査に関わる、国・地域やアプリのコンテンツ等の変更しか表示されません。

    [審査中の変更] セクションでは、まだ公開されていない変更をすばやく確認できる


    変更は、変更の種類やリリース トラック別に整理されているので、一目で簡単に把握できます。

    管理対象の公開


    旧 Play Console の時間指定公開機能をよくご存知の方も多いでしょう。新しい Play Console では、「時間指定公開」が「管理対象の公開」に変わりました。これにより、公開の操作がさらにわかりやすく、思いどおりに動作するようになります。


    管理対象の公開を有効にすると、審査で変更が承認されて処理が完了した後に自動的に公開されるのではなく、[確認して公開] 後にのみ公開されるようになります。公開を確定すると、数分以内にアップデートが Google Play に公開されます。これにより、リリース予定日よりもかなり早く変更を送信でき、公開日に対する制御を失わずに確認や変更の時間がとれるようになります。

    どの変更が審査、承認されたかを確認する


    管理対象の公開がオンになっている場合、[公開の概要] ページに 2 つのセクションが表示されます。1 つは承認されて公開の準備が整っている変更、もう1つはまだ審査中の変更です。
    加えて、多くの方から寄せられたいくつかの改善要望にも対応しています。

    •  一部の変更がまだ審査中であっても、承認済みの変更のみを公開できるようになっています。これまでの時間指定公開では、すべての変更が承認されるまで、どの変更も公開できませんでした。

    • 管理対象の公開は、審査中の変更や公開準備が整った変更がある場合も含め、いつでもオンまたはオフにできます。管理対象の公開を使うために審査が終わるのを待つ必要はなくなります。

    • 時間指定公開は [公開] をクリックするとオフになり、使用するたびに再度オンにする必要があります。管理対象の公開は、デベロッパーが手動でオフにするまでオンのままになります。


    管理対象の公開がオンになっているかどうかは、左側のナビゲーション メニューで確認できる


    近日中に、左側のナビゲーションの [公開の概要] の隣に管理対象の公開アイコンが表示されるようになります。これにより、Play Console のどこからでも管理対象の公開がオンかどうかを確認できます。

    新しい Play Console の公開機能について詳しく知りたい方は、Play Academyこちらのコース(英語)をご覧ください。まだ新しい Play Console を試していない方は、play.google.com/console にアクセスして、ぜひ管理対象の公開をお試しください。



    Reviewed by Naoki Oyama - Partner Development Associate, Mai Kato - Product Excellence Lead, Google Play and Hidenori Fujii - Google Play Developer Marketing, APAC


    そしていよいよ、Google Play Console がベータ版を卒業します。従来の Play Console は、2020 年 11 月 2 日以降は利用できなくなります。この日以降、お使いのPlay Console のアカウントにログインすると自動的に新しい Play Console が表示されます。
     
    まだ試していない方は、今すぐ新しいバージョンに切り替えることをお勧めします。play.google.com/console にアクセスしてみてください。
     
    新しい Play Console はレスポンシブ デザインになっているので、どんな端末でも利用できます。新しいナビゲーションが導入され、重要な機能を簡単に探して理解することができます。また、リリース ステータス、ユーザー獲得パフォーマンス、ポリシー変更に関するガイダンスについて深く理解できる機能も追加しています。
     

    • ナビゲーションのリリースに関するエリアを改善しました。本番環境を一番上に表示し、テストトラックはすべてまとめました。内部アプリ共有は設定に移動しました。

    • 各種ブラウザでのスピードやパフォーマンスを向上させました。

    • 受信トレイを新たに導入しました。役立つ情報やポリシーのアップデート、お勧めの機能など、一人一人に合わせたメッセージが表示される場所です。

    • 新しい公開の概要ページでは、レビューの変化を確認できます。管理対象の公開を使うと、承認済みの変更を実際にいつ公開するかを決め、リリースを管理できます。

    • ユーザー獲得レポートは完全に再構築され、実績の時間変化がわかりやすくなっています。それに伴い、いくつかのコホートベースの指標を廃止したため、新しいコンソールでは利用できなくなります。このデータの履歴を保持したい方は、11 月 2 日までに古い Play Console からダウンロードしてください。詳細はこちら

    • 検索を使って必要なページや機能を簡単に探せるようになっています。

    • 既にお知らせしたとおり、すべての Play Console ユーザーで 2 段階認証が必須になります。詳細はこちら
     

    新しい Play Console の詳細:



     
    いつもフィードバックにご協力いただきましてありがとうございます。新しい Play Console があなたのビジネスのお役に立つことを願っています。


    Reviewed by Hidenori Fujii- Google Play Developer Marketing, APAC




    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