2021 年 10 月 18 日に開催された、『DroidKaigi 前夜祭』に Google 関係者がパネリストとして登壇しました。
このイベントでは、2021 年に発表した Android/Google Play 関連の製品のお話や、I/O 以降に発表された製品・技術関連の最新情報についての内容を中心に Google 関係者が解説をしました。
この記事では、イベント内で解説した内容をまとめます。
Jetpack Compose は、ネイティブ UI をビルドするための Android の最新ツールキットで、Kotlin API を使用して、少ないコードで Android の UI 開発を簡素化し、加速することができます。Google I/O では、株式会社メルカリ様のケーススタディもリリースされ、UI 開発の生産性が 56 % 向上したという実例もございます。今回のイベントでは、その Jetpack Compose の最新アップデートである、1.1.0 についてお話をさせていただきました。
このセッションでは、Android IDE Android Studio (英語) の Android Gradle Plugin API (AGP) (英語) や Test framework についてについてお話をさせていただきました。公式の強力な Android IDE Android Studio Arctic Fox (2020.3.1) ベータ版 を I/O で発表したあと、7 月に安定版をリリースしました。UI 設計期間の短縮、新しいデバイスへのアプリ拡張、デベロッパーの生産性向上を目的としており、Compose と合わせて使うことで、最新の UI をすばやくデザインすることができます。
このセッションでは、Google Play と Multi Form Factor についてお話をさせていただきました。
Wear OS や大画面対応から、セキュリティ ツールなどのトピックまで幅広くカバーしました。
ご参加いただきました皆さん、ありがとうございました!Android Developer Summit の動画も、ぜひご視聴ください。
この記事は Dave Burke による Android Developers Blog の記事 " Android 12 is live in AOSP! " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
2021 年 10 月 4 日 (日本時間 10 月 5 日) 、ソースを Android オープンソース プロジェクト(AOSP)にプッシュし、Android の最新バージョンを正式にリリースしました。お手元のデバイスに配信される Android 12 にご注目ください。今後数週間で Pixel に、その後今年中に Samsung Galaxy、OnePlus、Oppo、realme、TECNO、Vivo、Xiaomi の各デバイスに配信されます。
いつものことですが、Android 12 ベータ版期間中のフィードバックをありがとうございました。225,000 人以上の方が Pixel やパートナー デバイスで早期リリースをテストし、リリースの品質を改善するために 50,000 件近くの問題を報告してくれました。また、多くの記事やディスカッション、アンケート、そして直接顔を合わせて意見を述べてくださった皆さんや、リリースに間に合うようにアプリの互換性対応を行ってくださった皆さんにも感謝いたします。Android があらゆる人のための偉大なプラットフォームであるのは、皆さんのサポートや貢献があってこそです。
また、10 月 27 日から28 日に開催される今年の Android Dev Summit (英語)では、Android 12 についてさらに詳しくお伝えする予定です。各セッションの動画は、後日日本語字幕もご用意いたしますので、YouTube の「設定」から日本語字幕をオンにしてご覧ください。Android テクニカル セッションの概要など、イベントについての詳細情報も公開されています。この記事でも、後ほど改めてお知らせします。
ここでは、デベロッパーのための Android 12 の新機能をいくつか紹介します。Android 12 デベロッパー サイトでは、すべての新機能について詳しく説明しているので、そちらもご覧ください。
Material You - Android 12 には、Material You (英語) と呼ばれる新しいデザイン言語が導入され、今まで以上にパーソナライズされた美しいアプリを構築できるようになっています。最新のマテリアル デザイン 3 アップデートのすべてをアプリに組み込むには、アルファ版の Material Design Components をお試しください。また、近日中に公開される Jetpack Compose のサポートにも注目です。
通知 UI のアップデート - 通知のデザインも更新し、モダンで使いやすく、便利になりました。Android 12 をターゲットとしたアプリ では、カスタム通知も標準のアフォーダンスで装飾されるようになり、その他すべての通知との一貫性が向上します。詳しくはこちらをご覧ください。
ストレッチ オーバースクロール - アプリのコンテンツをスクロールするときのスムーズさを向上させるため、Android 12 をターゲットとしたアプリでは、すべてのスクロール コンテナに新しい「ストレッチ」オーバースクロール効果が追加されています。この効果は、システムとアプリ全体に共通する自然なスクロール終了インジケーターになります。詳しくはこちらをご覧ください。
アプリ起動時のスプラッシュ画面 - Android 12 をターゲットとしたアプリ では、すべてのアプリにスプラッシュ画面が導入されます。アプリのスプラッシュ画面はさまざまな方法でカスタマイズできるので、アプリ独自のブランディングのニーズを反映できます。詳しくはこちらをご覧ください (英語) 。
システム パフォーマンスの高速化と効率化 - コア システム サービスが利用する CPU 時間を 22%、ビッグコアの利用を 15% 削減しました。また、アプリの起動時間を短縮し、アプリを速く読み込めるように I/O を最適化しました。さらに、データベース クエリでは、大きなウィンドウの CursorWindow を 49 倍近く高速化しました。
フォアグラウンド サービスの最適化 - ユーザー エクスペリエンスを向上させるため、Android 12 ではバックグラウンドのアプリがフォアグラウンド サービスを開始できないようになっています。それに代わる新機能として、アプリは JobScheduler で優先ジョブ (英語) を利用できます。詳しくはこちらをご覧ください。
通知のレスポンシブ性の向上 - Android 12 では、通知トランポリンが制限されるので、通知からアプリを起動する際の時間が短縮されます。たとえば、通知トランポリン削除後の Google フォト アプリは、34% 高速に起動するようになっています。詳しくはこちらをご覧ください。
パフォーマンス クラス - パフォーマンス クラス は一連のデバイス機能で、Android 12 デバイスで要求の厳しいユースケースや高品質なコンテンツをサポートします。アプリは、実行時にデバイスのパフォーマンス クラスを確認することで、デバイスのパフォーマンスを最大限に活用できます。詳しくはこちらをご覧ください。
機械学習の高速化 - Android 12 では、Neural Networks API を通して ML アクセラレータを限界まで活用し、常に最大限のパフォーマンスを発揮できるようになっています。また、ML アクセラレータ ドライバは、プラットフォーム リリースとは独立して Google Play 開発者サービスでアップデートできるようになるので、互換性のあるすべてのデバイスで最新ドライバのメリットを活用できます。
おおよその位置情報 - ユーザーは位置情報データをさらに細かくコントロールできるようになり、アプリが厳密な位置情報をリクエストした場合でも、おおよその位置情報のみを許可できるようになります。詳しくはこちらをご覧ください。
マイクとカメラのインジケーター - アプリがデバイスのカメラやマイクを使っているタイミングを、ステータスバーのインジケーターでユーザーに知らせます。詳しくはこちらをご覧ください。
マイクとカメラの切り替え - サポート対象のデバイスで、クイック設定の新しい切り替え機能から、アプリからのマイクやカメラに対するアクセスをすぐに簡単に無効化できるようにします。詳しくはこちらをご覧ください。
周辺デバイス権限 - アプリで新しい権限を使うと、位置情報の権限がなくても、周辺デバイスのスキャンやペア設定を行えます。詳しくはこちらをご覧ください。
リッチ コンテンツの挿入 - 新しい統合 API を使うと、UI で任意のソース(クリップボード、キーボード、ドラッグ アンド ドロップ)からリッチ コンテンツを受信できます。下位互換性を確保するため、この統合 API は AndroidX にも追加しています。詳しくはこちらをご覧ください。
角の丸い画面のサポート - 多くの最新デバイスで、角の丸い画面が使われています。こういったデバイスで優れた UX を提供するため、新しい API を使って角に関する詳細な情報を問い合わせ、必要に応じて UI 要素を管理できます。詳しくはこちらをご覧ください。
互換メディア コード変換 - HEVC 形式の動画は画質と圧縮率が大幅に向上しており、すべてのアプリでこの形式のサポートが推奨されています。それができないアプリでは、互換メディア コード変換機能を使って AVC ファイルをリクエストすると、システムがコード変換を行ってくれます。詳しくはこちらをご覧ください。
ぼかしや色フィルタなど、エフェクトの使い勝手の向上 - 新しい API では、ビューやレンダリング階層でよく使われるグラフィック エフェクトを適用しやすくなっています。RenderEffect (英語) を使うと、RenderNode (英語) やビューにぼかしや色フィルタなどを適用できます。新しい Window.setBackgroundBlurRadius() (英語) API を使うと、ウィンドウの背景にすりガラス エフェクトをかけることもできます。また、blurBehindRadius (英語) を使うと、ウィンドウの後ろにあるすべてのコンテンツをぼかすことができます。
触覚フィードバックの拡張 - Android 12 では、UI イベントに対する効果的な触覚フィードバック、ゲーム向けの迫力ある楽しい効果、生産性を高めるために注意を促す触覚フィードバックを作成するツールを拡張しています。詳しくはこちらをご覧ください。
新しいカメラ効果とセンサー機能 - アプリで新しいベンダー拡張機能 (英語) を使うと、ぼけ、HDR、ナイトモードなど、デバイス メーカーが組み込んだカスタムのカメラ効果を活用できます。新しい API では、Quad / Nona Bayer パターンを利用する超高解像度カメラセンサーをフル活用することもできます。詳しくはこちらをご覧ください。
ネイティブ コードでのクラッシュのデバッグの改善 - Android 12 では、今までよりも実用的な診断情報が提供されるので、NDK 関連のクラッシュのデバッグが簡単になります。App Exit Reasons API (英語) を使うと、アプリから Tombstone と呼ばれる詳細なクラッシュ ダンプファイルにアクセスできます。
Android 12 でのゲーム - Game Mode API (英語) を使うと、プレーヤーがゲームのパフォーマンス プロファイル(長時間通勤用にバッテリー寿命を延ばす、パフォーマンス モードで最高のフレームレートを実現するなど)を選択する操作に応答できます。インストール時にバックグラウンドでゲームアセットをフェッチできるようにする Play as you download を使うと、プレーヤーをすばやくゲームプレイに導くことができます。
Android 12 が一般公開リリースされたので、ユーザーがスムーズに Android 12 に移行できるよう、すべての Android デベロッパーの皆さんに互換性テストを終えてできる限り早くアップデートを公開することをお願いします。
アプリの互換性をテストするには、Android 12 が動作するデバイスにインストールし、アプリのフローを確認して機能や UI の問題を探します。Android 12 でのすべてのアプリが対象となる動作の変更点を確認し、影響を受ける可能性がある領域を集中的にテストしてください。特にテストしておくべき変更点は、以下のとおりです。
アプリのライブラリや SDK の互換性テストも忘れずに行ってください。SDK の問題を見つけた場合は、最新バージョンの SDK にアップデートするか、デベロッパーに連絡してサポートを求めます。
現在のアプリの互換性のあるバージョンを公開したら、アプリの targetSdkVersion をアップデートするプロセスを開始できます。Android 12 アプリの動作の変更点を確認し、互換性フレームワークを使って問題をすばやく検知します。
#AndroidDevSummit (英語) が帰ってきます。10 月 27 日から28 日(日本時間 10 月 28 日 - 29 日) に開催される、イベントでは、Android 12 を含む Android 開発の最新情報をご紹介します。今年のテーマは、Excellent apps, across devices(デバイスを超える優れたアプリ体験)です。開発ツールや API、タブレットやウェアラブルを含む数十億台のデバイス間で使用できる優れたアプリの開発や、生産性向上を支援する技術についてお話しする予定です。
30 以上の Android テクニカル セッションの概要など、イベントについての詳細情報も公開されました。セッションの情報はこちら(英語) から確認できます。どのセッションに参加するか、計画を立て始めましょう。今後数週間のうちに、皆さんの質問を #AskAndroid に共有することをお願いする予定です。寄せられた質問には、Android チームがイベントの中でライブで回答します。
イベントは、太平洋時間の 10 月 27 日午前 10 時(日本時間 28 日午前 2 時)に開催される 50 分の技術関連の基調講演「The Android Show」でキックオフします。ここでは、Android デベロッパー向けのあらゆる最新ニュースや最新情報を共有しますこちら (英語) のニュースレターに登録して最新情報を受け取りましょう。
Reviewed by Tamao Imura - Developer Marketing Manager, Google Play
この記事は Sameer Samat による Android Developers Blog の記事 " Evolving our business model to address developer needs" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
「Google とのパートナーシップは、私たちのビジネスにとってパワフルなものであり、世界中の女性に力を与えるという私たちの使命を推進する上で、私たちが規模を拡大し、最終的に重要な役割を果たすことを支援してくれています。Google が発表した価格変更は、製品に対するより良い投資やユーザーが自信を持ってオンラインでつながることを可能にします。」– Whitney Wolfe Herd, Founder and CEO, Bumble Inc.
「人によって学び方が違うように、それぞれのデベロッパーにも違いがあります。私たちは、 Google がデベロッパーとプラットフォームの双方に通用するモデルを見つけるために、継続的にエコシステムとコラボレーションを行っていることをワクワクしながら見ています。この定期購入手数料の減額は、『すべての人に言語学習のチャンスを』という私たちのミッションを加速させることに役立ちます。」
- Luis von Ahn, Co-Founder and CEO of Duolingo.
「今回の Google Play のアップデートは、我々 BOOK☆WALKER にとってはもちろんのこと、電子書籍業界全体、そして出版業界にとって、ビジネスを更に大きく成長させるために意義あるものと捉えております。長らく直面していた決済周りの様々な課題を解決するものと信じており、今後も Android のアプリを通じて、より良いユーザー体験を提供していきたいと考えています。」株式会社KADOKAWA 執行役員 Chief Digital Officer株式会社ブックウォーカー 代表取締役社長 橋場 一郎 氏 「Google Play はローンチ当初より AWA をパートナーとして扱い、成長を継続的にサポートしてくださってます。今回のアップデートは、音楽業界が直面する課題を親身に考えてくださり、今後の成長のためにプラットフォーマーとしてできることをアクションに移してくだ さった新たな一例です。今回の変更を足がかりに、AWA は今後も時代に沿った新たな音楽体験とクリエイターの創造サイクルを作るために、これまで以上により良いユーザー体験を Play にて届けていきたいと思います。」AWA株式会社 代表取締役 CEO 冨樫 晃己 氏
この記事は Mike Yerou による Android Developers Blog の記事 " Improved Google Play Console user management: access requests, permission groups, and more " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
ユーザー管理は、あらゆる規模の企業にとって重要な業務です。難しいのは、業務を行うために必要な一連の権限を必要なチームメンバーに確実に付与する一方、不要な業務データを見せないように管理することです。
Google Play Console のユーザーと権限の管理ツールを強化し、効率的かつ確実に拡大に対応できるようにしてほしいという要望は、何年も前から寄せられていました。そこでこのたび Google Play Console を再設計することで、それを実現しました。インターフェースを整理して必要なものがすぐ見つかるようにし、さらにチームを簡単に管理できる新機能を追加しています。
権限の名前と説明を刷新し、ユーザーに何を許可するのか、何を許可しないのかがわかりやすくなっています。また、アカウント レベルとアプリレベルの権限を明確に区別して表示するようになっています。
新しく追加された検索、フィルタ、一括編集の機能を使うと、一部のユーザーをすばやく表示したり操作したりできます。
さらに、簡単に確認できるように、デベロッパー アカウントのユーザーリストを CSV 形式でエクスポートする機能も追加しました。
通常、ユーザーの権限を設定するのは管理者です。しかし、ワークフローに権限が必要であることがわかったときに、ユーザーが権限をリクエストできれば便利だという要望もありました。そして今回、それが可能になりました。管理者はリクエストを承認する必要がありますが、ユーザーが必要な権限を厳密に指定して依頼できるようになるので、管理者の作業時間を大幅に短縮できます。
Google Play Console では、サポートされているにもかかわらず権限がなくて実行できないアクションの隣に、[アクセス リクエスト] ボタンが表示されるようになります。ユーザーは、それが必要な理由を管理者に向けて記述するだけで、権限をリクエストできます。管理者には [受信トレイ] 経由で通知され、特定のユーザーやアプリに権限を付与したり、一度だけ拒否したり、ユーザーが機能を使用できないように永久的に拒否したりできます。現在のところ、この機能はアプリの権限でのみサポートされます。
ある程度の規模に達した企業では、複数の人が同じ役割(プロジェクト マネージャー、デザイナーなど)を担うことが珍しくありません。その場合、管理者が同じ一連の権限を何度も何度も割り当てなければならないこともあるでしょう。
その時間を節約できるように、権限グループを導入しました。管理者は一連の権限を持つグループを作成でき、ユーザーをそのグループに追加すると、権限が自動的に引き継がれます。グループの権限が一定期間後に失効するような設定も可能です。ユーザーを複数のグループに含めたり、グループ間で権限を重複させたりしても構いません。権限グループを活用すれば、日常業務を改善し、積極的に権限を委譲して、ユーザー管理の手間を減らせるはずです。
今回の変更によって管理者の生産性が向上し、チームが Google Play Console を最大限に活用できるようになることを期待しています。権限管理の詳細については、ヘルプセンターをご覧ください。
Reviewed by Sakura Teramae - Google Play Android Developer Support
この記事は Wayne Lu による Android Developers Blog の記事 " Answering your top questions on Android Game Development Kit " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
2021 年 7 月に Android Game Development Kit(AGDK) (英語) をリリースしてから、デベロッパーの皆さんよりお寄せいただいた主な質問をまとめました。その内容は、AGDK のライブラリやツールから、Android のメモリ最適化、グラフィックスの実装に関することまで、さまざまです。
まず、新進気鋭のゲーム デベロッパーから寄せられた、AGDK の一連のライブラリやツールの使い方に関する質問です。セットアップに応じて、以下の事項を推奨しています。
ご自身の環境に合致したゲームエンジンとワークフローに沿って、ゲーム内で利用する CPU、メモリ、ネットワーク、バッテリーなどの状況を詳細に調査する Android Studio Profiler、グラフィックスに特化してプロファイリングを行う Android GPU Inspector(英語)、フレームレートや読み込み時間を端末毎に最適化する Android Performance Tuner (英語) などの各種ツールを確認しましょう。
続いて、Android 12 での開発に関する質問も寄せられています。Android 12 でゲームを実行するにあたって、特別なことは何も必要ありません。しかし、プレイヤーがゲーム体験をカスタマイズできるように、Game Mode API と Interventions (英語) を導入していきましょう。
2 つ目は、Android と Windows のゲーム開発におけるメモリアクセスの動作の違いについての質問です。以下に、いくつかのヒントをまとめます。
3 つ目は、Android でのグラフィックスの実装に関する質問です。選択肢には、OpenGL ES と Vulkan グラフィックス API があります。
AGDK に関する主な質問は、Q&A 動画でも確認できます。また、Android ゲーム開発の最新リソースには、g.co/android/AGDK (英語) からアクセスできます。
Reviewed by Maru Maruyama - Developer Relations Engineer
この記事は Android Team による Android Developers Blog の記事 " Android Dev Summit returns on October 27-28, 2021! " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android Dev Summit が帰ってきます!数週間後となる10 月 27-28 日(日本時間 10 月 28 日 - 29 日)のイベントでは Android 開発の最新情報をご紹介します。今年のテーマは、Excellent apps, across devices(優れたアプリを、複数のデバイス間で)です。開発ツールや API、タブレットやウェアラブルを含む数十億台のデバイス間で使用できる優れたアプリの開発や、生産性向上を支援する技術についてお話しする予定です。
Android Dev Summit は、「The Android Show」からキックオフします。イベントは、10 月 27 日午前 10 時(太平洋標準時)、日本時間の 28 日午前 2 時に開始します。技術関連の基調講演では、Android 開発者向けの最新ニュースやアップデートをご紹介します。また、Android 開発の技術的な トピックに関しての 30 以上のセッションをご用意しました。さらに、Android 開発チームが結集し、皆さんからの熱意ある質問にライブで答える #AskAndroid も開催します。今年の Android Dev Summit は、世界中の Android デベロッパーとデジタルでつながる機会ですので、ぜひご参加ください。さらに詳しく知りたい方は、こちらのニュースレターに登録して最新情報をお受け取りください。
この記事は Peter Visontay, Bessie Jiang による Android Developers Blog の記事 " Making permissions auto-reset available to billions more devices " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。寄稿者: Inara Ramji, Rodrigo Farell, James Kelly, Henry Chin
ほとんどのユーザーは、スマートフォンで多くの時間を過ごしています。仕事をする、ゲームをする、友人とつながるなど、アプリは人々にとってデジタルライフの主要な出入り口です。多くの場合、アプリが動作するためには、何らかの許可が必要になります。しかし、特定のデバイスに何十個ものアプリが存在することを考えれば、ユーザーが以前に何を許可したかを覚えておくのは至難の業です。長期間使うことがなかったアプリであればなおさらです。
Android 11 では、アプリの権限を自動リセットする機能を導入しました。この機能は、アプリが数か月にわたって使われなかった場合にランタイム権限を自動的にリセットするので、ユーザーのプライバシー保護に役立ちます。ランタイム権限とは、アプリが許可をリクエストした際に、プロンプトがユーザーに表示されるものです。2021 年 12 月より、この機能を数十億台のデバイスに展開します。この機能は、Google Play 開発者サービス (英語) を搭載し、かつ Android 6.0(API レベル 23)以降を実行しているデバイスで自動的に有効化されます。
この機能は、デフォルトで Android 11(API レベル 30)以降をターゲットとするアプリで有効になりますが、API レベル 23 から 29 をターゲットとするアプリでは、ユーザーが手動で許可の自動リセットを有効化できます。
では、デベロッパーの皆さまにはどのような影響があるのか説明します。
一部のアプリや権限は、自動的にリセットの対象外となります。たとえば、企業が利用中のデバイス管理者のアプリや、エンタープライズ ポリシーで固定された権限などです。
必要に応じて、デベロッパーはユーザーにリクエストを行い、システムがアプリの権限をリセットしないようにすることができます。これは、主にバックグラウンドで動作し、インタラクションを必要としないアプリで便利です。主なユースケースは、こちらに記載されています。
現在の動作
新しい動作
Android 11(API レベル 30)以降のデバイスで、権限が自動的にリセットされます。
以下のデバイスで、権限が自動的にリセットされます。
Google Play 開発者サービスを搭載し、Android 6.0(API レベル 23)から Android 10(API レベル 29)までのバージョン(両端値を含む)を実行しているデバイス
Android 11(API レベル 30)以降を実行しているすべてのデバイス
Android 11 以降をターゲットとするアプリで、デフォルトで権限がリセットされます。Android 6.0(API レベル 23)以降をターゲットとするアプリでは、ユーザーが手動で自動リセットを有効化できます。
現在の動作からの変更はありません。
アプリは、ユーザーに自動リセットの無効化をリクエストできます。
アクション
Android 11 API
(Android 11 以降のデバイスでのみ動作)
新しいクロスプラットフォーム API
(Android 11 以降のデバイスを含む Android 6.0 以降のデバイスで動作)
デバイスで権限の自動リセットが有効化されているかどうかのチェック
Build.VERSION.SDK_INT >= Build.VERSION_CODES.R を確認
androidx.core.content.PackageManagerCompat.getUnusedAppRestrictionsStatus() を呼び出す
アプリで自動リセットが無効化されているかどうかのチェック
PackageManager.
isAutoRevokeWhitelisted() を呼び出す
androidx.core.content.
PackageManagerCompat.
getUnusedAppRestrictionsStatus() を呼び出す
アプリで自動リセットの無効化をユーザーにリクエスト
次のアクションのインテントを送信:
Intent.ACTION_AUTO_REVOKE_PERMISSIONS
次で作成したインテントを送信: androidx.core.content.
IntentCompat.
createManageUnusedAppRestrictionsIntent()
val future: ListenableFuture<Int> = PackageManagerCompat.getUnusedAppRestrictionsStatus(context)future.addListener( { onResult(future.get()) }, ContextCompat.getMainExecutor(context)) fun onResult(appRestrictionsStatus: Int) { when (appRestrictionsStatus) { // Status could not be fetched. Check logs for details. ERROR -> { } // Restrictions do not apply to your app on this device. FEATURE_NOT_AVAILABLE -> { } // Restrictions have been disabled by the user for your app. DISABLED -> { } // If the user doesn't start your app for months, its permissions // will be revoked and/or it will be hibernated. // See the API_* constants for details. API_30_BACKPORT, API_30, API_31 -> handleRestrictions(appRestrictionsStatus) }} fun handleRestrictions(appRestrictionsStatus: Int) { // If your app works primarily in the background, you can ask the user // to disable these restrictions. Check if you have already asked the // user to disable these restrictions. If not, you can show a message to // the user explaining why permission auto-reset and Hibernation should be // disabled. Tell them that they will now be redirected to a page where // they can disable these features. Intent intent = IntentCompat.createManageUnusedAppRestrictionsIntent (context, packageName) // Must use startActivityForResult(), not startActivity(), even if // you don't use the result code returned in onActivityResult(). startActivityForResult(intent, REQUEST_CODE)}
getUnusedAppRestrictionsStatus()
この記事は Dave Burke による Android Developers Blog の記事 " Android 12 Beta 5 update, official release is next! " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
まもなく Android 12 が公式リリースを迎えます。現在、新バージョンの Android で最終調整を行っているところですが、皆さんのテストや開発に役立てていただくため、ベータ版の最終アップデートをお届けします。公式リリースに間に合うように、互換性のあるアプリやゲームへのアップデート準備をお願いいたします。
Beta 5 は 2021 年 9 月 8 日(日本時間 9 月 9 日) より、5G 対応の Pixel 5a を含む Pixel デバイスで利用できます。こちらから登録 (英語) すると、OTA(無線)アップデートを受け取ることができます。以前登録している方は、自動的に今回のアップデートを受け取ります。シャープなど、いくつかの主要メーカーの一部のデバイスでも Android 12 Beta 5 を試すことができます。使用を開始する方法についての詳細は、Android 12 デベロッパー サイトにアクセスしてください。
以下では、リリースが近づいてきた Android 12 公式版に関する情報をお伝えします。
2021 年 9 月 8 日(日本時間 9 月 9 日) のアップデートには、Pixel などのデバイスと Android Emulator 向けの Android 12 のリリース候補ビルドが含まれています。Beta 4 でプラットフォームの安定版に到達しているので、SDK や NDK API、アプリに面するシステムの動作、非 SDK インターフェースの制限など、アプリに面する部分はすべて完了しています。Beta 5 には、これらの機能と最新の修正および最適化が含まれており、テストを終えるために必要なものがすべてそろっています。
次に予定されているのは、Android 12 の公式リリースです。そのため、すべてのアプリやゲームのデベロッパーの皆さんに、最終リリース前に最終の互換性テストを終え、互換性アップデートを公開することをお願いします。SDK、ライブラリ、ツール、ゲームエンジン デベロッパーの皆さんは、できる限り早く互換性アップデートをリリースすることが重要です。下流のアプリやゲームのデベロッパーは、皆さんのアップデートを受け取るまで作業できないかもしれません。
アプリの互換性をテストするには、Android 12 Beta 5 が動作するデバイスにインストールし、アプリのフローを確認して機能や UI の問題を探します。Android 12 でのすべてのアプリが対象となる動作の変更点を確認し、影響を受ける可能性がある領域を集中的にテストしてください。特にテストしておくべき変更点は、以下のとおりです。
アプリのライブラリや SDK の互換性テストも忘れずに行ってください。SDK の問題を見つけた場合は、最新バージョンの SDK にアップデートするか、デベロッパーに連絡してサポートを受けるようお願いします。
現在のアプリの互換性のあるバージョンを公開したら、アプリの targetSdkVersion をアップデートするプロセスを開始できます。Android 12 をターゲットとするアプリの動作の変更点を確認し、互換性フレームワークを使って問題をすばやく検知します。
Android 12 には、優れたユーザー エクスペリエンスを構築する際に役立つたくさんの新機能が含まれています。Google I/O での Android 12 関連のセッションに関するまとめとリンクについては、Android 12 Beta 2 の投稿をご覧ください。すべての新しい機能と API の詳しい説明は、Android 12 デベロッパー サイトをご覧ください。
Android 12 の開発やテストには、ぜひ Android Studio Arctic Fox もお試しください。Android 12 の変更点によって影響を受ける可能性があるコードを特定しやすいように、lint チェックも追加しています。たとえば、スプラッシュ画面のカスタム宣言、高精度の位置情報の使用がリクエストされた際の大まかな位置情報の権限、メディア フォーマット、高センサー サンプリング レートの権限などです。ダウンロード (英語) と設定を行うと、最新版の Android Studio を試すことができます。
今回の Beta 5 のリリースには、Android 12 の機能を試し、アプリをテストしてフィードバックを提供するために必要なすべてのものが含まれています。サポート対象となっている Pixel デバイスを登録するだけで、OTA(無線)でアップデートを入手できます。また、Android 12 に対応したアプリの開発を行うために、Android 12 SDK をセットアップしてください。
シャープなど、いくつかの主要メーカーのデバイスでも、Beta 5 を試すことができます。さらに幅広くテストしたい場合は、Android GSI イメージで Beta 5 をお試しください。デバイスをお持ちでない場合は、Android Emulator でテストできます。今回のアップデートは Android TV でも利用できる (英語) ので、最新の TV 機能を確認したり、新しくなった Google TV エクスペリエンスでアプリをテストしたりできます。
もうすぐ予定されているAndroid 12 公式版リリースにご期待ください!それまでの間は、引き続きフィードバックをお寄せください。プラットフォームの問題、アプリの互換性の問題、サードパーティ SDK の問題の送信には、各ホットリストを使うことができます。
Android 12 リリースを形作ることに貢献してくださっているデベロッパー コミュニティの皆さんに深い感謝を捧げます。皆さんから寄せられたたくさんのバグレポートや、皆さんが共有してくれた知見は、API の調整や機能の改善、重大なバグの修正、そしてユーザーやデベロッパーにとってよりよいプラットフォームの実現に役立っています。ありがとうございます。
Android 12 に対応した皆さんのアプリを楽しみにしています。
この記事は Ting-Yuan Huang による Android Developers Blog の記事 " Accelerated Kotlin build times with Kotlin Symbol Processing 1.0 " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Kotlin で軽量コンパイラ プラグインを作成する新ツール、Kotlin Symbol Processing(KSP)が安定版になりました。KSP は、Kotlin Annotation Processing Tool(KAPT)(英語) と同様の機能を提供しますが、最大 2 倍高速であるうえ、Kotlin 言語の構造に直接アクセスでき、マルチプラットフォーム ターゲットもサポートしています。
ここ数か月間で、KSP は 32 回のリリースを経て、コミュニティから報告された 162 以上のバグを修正しました。導入を見合わせていた方も、ぜひこのタイミングでご確認ください。
Android チームは、いつもデベロッパーの皆さんに「アプリを書くときに一番困っていることは何か」と問いかけています。特によく上がってくる問題が、ビルド速度です。Android のビルド ツールチェーンには長年にわたって着実に改良を重ねてきましたが、今回はその改善に KSP を加えています。KSP は、次世代の Kotlin アノテーション処理を行い、Kotlin デベロッパーのためにビルド速度を劇的に向上させます。また、KAPT とは違い、Kotlin/Native と Kotlin/JS のサポートを提供します。
Kotlin Annotation Processing Tool(KAPT)(英語) は、Java のアノテーション処理インフラストラクチャと連携し、Kotlin でほとんどの Java 言語アノテーション プロセッサがそのまま動作するようにしています。これを行うために、KAPT は Kotlin コードをコンパイルし、Java アノテーション プロセッサに必要な情報を保持した Java スタブに変換しています。しかし、このスタブを作成する処理にはコストがかかります。また、コンパイラは、プログラム内にあるすべてのシンボルを複数回解決しなければならないことになります(1 回はスタブ生成のため、もう 1 回は実際のコンパイルのため)。
KSP は Kotlin コンパイラ プラグインとして動作することで、スタブ生成モデルから脱却します。アノテーション プロセッサは、Java アノテーション処理インフラストラクチャに頼ることなく、Kotlin のソース プログラムやリソースを直接読み取って分析します。そのため、ビルド速度が劇的に短縮される(Room の Kotlin テストアプリでは最大 2 倍高速)だけでなく、Kotlin/Native や Kotlin/JS といった Android 以外の環境や JVM 以外の環境でも KSP を利用できるようになります。
KSP を使ってみるには、GitHub から KSP Playground プロジェクト (ZIP ファイル 3.1MB)をダウンロードします。このプロジェクトでは、アノテーション プロセッサとして KSP を使う方法と、利用者向けのアプリやライブラリとして使う方法の両方を示しています。
test-processor
workload
アプリ デベロッパーの方は、サポートされているライブラリの一覧と、モジュールを KAPT から KSP に移行するためのクイックスタート ガイドをご覧ください。
プロジェクトで Moshi や Room を使っている方は、モジュールのビルドファイルを少し変更するだけで、すぐに KSP を試すことができます。たとえば、Gradle モジュールで KAPT プラグインを KSP プラグインに置き換えて KSP の依存関係を入れ替えるだけで、KSP 版の Room を使うことができます。
apply plugin: 'com.google.devtools.ksp'dependencies { ... implementation "androidx.room:room-runtime:$room_version" kapt "androidx.room:room-compiler:$room_version" ksp "androidx.room:room-compiler:$room_version"}
dependencies {
...
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
ksp "androidx.room:room-compiler:$room_version"
}
詳細は、Room のリリースノートをご覧ください。
KSP が 1.0 リリースを迎えたので、KAPT ベースのライブラリから移行すれば、皆さんの Kotlin プロジェクトでもビルド時間を短縮できます。また、たくさんの Android 固有のライブラリもアップデートしています。パフォーマンスが大幅に改善されており、本日から試すことができます。
この記事は Jeremy Walker による Android Developers Blog の記事 " Sharing Tiles with your smartwatch users: " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
タイル (英語) は、ウォッチフェイスのホーム画面をスワイプするだけで情報やアクションにすばやくアクセスする機能を提供いたします。これにより、スマートウォッチ ユーザーはどんな情報やアクションを表示するかを細かく制御できます。Wear OS を実行するスマートウォッチで、タイルが特に便利で役立つ機能の 1 つとなっていることも不思議ではないでしょう。
2021 年 8 月 11 日(日本時間 8 月 12 日)に、スマートウォッチ ユーザーとタイルを共有できることを発表いたしました。Jetpack Tiles API の最新のアルファ リリースをダウンロードすると、カスタムタイルを作成できます。作成したタイルを含むアプリを Google Play にアップロードすると、ユーザーはタイルをダウンロードして使い始めることができます。新しい体験を試せるようになったことをユーザーにもお知らせしましょう。Google Play Console で、Google Play ストアのプレビュー 用アセットにタイルのスクリーンショットをアップロードすることもできます。
Calm や 睡眠サイクル などのアプリは、既にカスタムタイルの作成を始めています。
「API はわかりやすく、ドキュメントもとても明確でした。そのため、わずか数時間で、実データを使って最初のタイルを動作させることができました。気軽に使ってみることができる最新の API だと感じています」 - 睡眠サイクル のTechnical Lead、Viktor Åkerskog
ディベロッパーの皆さんからのアルファ版ライブラリへのフィードバックには大変感謝しています。皆さんから頂いた多くのリクエストやパフォーマンスの改善を今回の API に含めました。追加のフィードバックはこちら (英語)からお送りください。今後のリリースに向けて、API の改善の優先順位を決めるうえで役立ちますので、ご協力をお願いいたします。
まだ API を試していない方はこちらのガイドをチェックしてください。チュートリアルを体験してみたい方はタイルの Codelab をお試しください。
それでは、コーディングをお楽しみください。
Reviewed by Saryong Kang - Partner Developer Advocate, Developer Relations Team
このイベントでは、Android/Google Play のゲーム向け製品開発の責任者である Greg Hartrell の基調講演の内容を中心に日本の Google 関係者が解説を行いました。
この記事では、イベント内で解説した内容とご紹介した関連動画やリソースをまとめます。
その他にも、イベント内では、海外デベロッパーの事例が聞けるセッションのご紹介も行いました。
なお、イベントのアーカイブ配信は、こちらのウェブサイトから登録後、いつでもご視聴いただけます。イベントを見逃した方は、ぜひアーカイブ配信もご活用ください。ウェブサイト上では、イベント内でご紹介した URL も多数公開していますので、こちらのリンク集からご確認ください。
この記事は Jacob Lehrbaum による Android Developers Blog の記事 " Working Towards Android App Excellence " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
すばらしいアプリ体験は、ビジネスにもすばらしい成果をもたらします。実際、Google Play に5 つ星の評価を残した Android アプリユーザーの約 3 分の 1 が、アプリ体験の質*1つまり、スピードやデザイン、ユーザビリティに触れています。Google では、すべてのデベロッパーが優れたアプリの開発を実現し、ユーザーの獲得、維持、収益化を果たせるようなサポートを提供したいと考えています。
では、「優れたアプリ」とは何でしょうか。これは遠い目標のように聞こえるかもしれませんが、多くのアプリでも手が届くところにあります。その第一歩となるのは、ユーザーにフォーカスし続けることです。具体的には、直感的なユーザー エクスペリエンスでアプリの主要機能にできる限り早く到達できるようにすることです。しかし、これはまだ始まりに過ぎません。優れたアプリにはすべての画面や操作に一貫性があり、使うデバイスによらず快適に動作します。アプリ開発に携わっているあらゆるメンバーがアプリ体験に集中すれば、優れたアプリの開発が実現できます。
優れたアプリの開発を阻むものの 1 つが、曖昧で不明確な責任分担です。クラッシュや読み込み時間など、アプリの質を測る主な指標の中には、エンジニアリング チームなどの社内の 1 グループの責任であると見なされるものがあります。しかし、業界のトップクラスの組織の方々にどのようにして優れたアプリの開発を実現しているか聞いたところ、*2エンジニアリング、デザイン、プロダクト、ビジネスの各チームが共通の目的に向かって連携する、部門間の協力的なアプローチが重要であることが明確になりました。
では、優れたアプリ開発のための裏側にある内部的なベスト プラクティスはどのようなものでしょうか。
ビジネス側の立場に立って「競合他社のアプリは私たちのアプリよりも速いので、読み込み時間を 5 秒から 4 秒に短縮する必要がある」と私から言えるので会話がよりスムーズです。クロス プラットフォーム アプリのソフトウェア エンジニア
ビジネス側の立場に立って「競合他社のアプリは私たちのアプリよりも速いので、読み込み時間を 5 秒から 4 秒に短縮する必要がある」と私から言えるので会話がよりスムーズです。
クロス プラットフォーム アプリのソフトウェア エンジニア
優れたアプリは、ビジネスの成果につながります。新機能の追加はすばらしいことですが、それでアプリの起動時間が遅くなったり、デバイスの容量を使いすぎたりすると、アプリの使用頻度が減り、やがて削除される結果をうみます。多くの場合、エンジニアは品質問題がビジネスの成果に与える影響を定量化することで、全社的に品質を重視する体制を構築しています。具体的には、次の方法で定量化しています。
機能(ユーザー ジャーニーの各ステージ)を担当するチームを編成している企業は、サポートするそれぞれのオペレーティング システム全体で一貫した操作を提供し、新しいアプリや機能を市場に投入するまでの時間が短くなり、すべてのお客様に優れたアプリ体験を提供できる可能性が高くなります。多くの場合、このようなチームは、エンジニア、マーケティング、UX、プロダクトなどの機能を横断するグループです。そして、あらゆるデバイスやプラットフォームで、機能やユーザー ジャーニーのステージ*3を成功させる責任を担います。この構造により、優れた体験や機能レベルが実現できるだけでなく、機能領域を超えた統一目標ができます。また、縦割りを減らして、特定の目標に集中的に対処することにもつながります。
ビジネス目標を重視するチーム構成により、ユーザーに対するフォーカスが高まる
ユーザーの大半が特定の種類のデバイスを使っている場合、主なデバイスとして同じスマートフォンやタブレット、スマートウォッチを使えば、ユーザーがどのような体験をしているか理解が深まるでしょう。特にこれが当てはまるのは、多くユーザーの日々の体験に影響を与える意思決定が求められる組織の経営幹部です。たとえば、Duolingo はこれを自社の DNA に組み込んでいます。ユーザー ベースの大部分と同様の環境を作り出すために、CEO も含む、すべての Duolingo の社員は、エントリーレベルの Android デバイスのみを使っているか、あるいは使える状態にあります。
ビジネスを成長させるうえで、品質および優れたアプリの開発に対するユーザー中心のアプローチは欠かせません。優れたアプリの開発を実現する方法を詳しく学びたい方は、実用的なヒントを含むケーススタディをご覧ください。また、Android App Excellence (英語) のページにアクセスし、ぜひ App Excellence Summit に参加してください。(事前登録制です)
今後のブログ投稿では、優れたアプリの開発を実現する 2 つの要素について詳しく取り上げる予定です。具体的には、アプリ パフォーマンスとそれによるユーザー行動への影響、そして複数のデバイス間のシームレスなユーザー エクスペリエンスの開発です。こちらのページから Android デベロッパー向け ニュースレターに登録すると、次号の発行時に通知が届き、Android チームからの最新ニュースや知見を得られますので、ぜひご登録ください。
注
1. 2021 年の Google Play 内部データ
2. 2021 年の Google App Quality Research
3. アプリを使ううえで、それぞれのユーザーが体験する一連の手順を「ユーザー ジャーニー」と呼びます。ユーザー ジャーニーのステージの例として、インストール、オンボーディング、エンゲージメント、リテンションなどがあります