この記事は Chet Haase による Android Developers - Medium の記事 "Now in Android #31" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android 開発の最新ニュースやトピックをご紹介する Now in Android。今回は連載シリーズ MAD Skills のコンテンツ、最近公開されたブログ記事・動画・関連ドキュメント、ポッドキャスト エピソードなどをご紹介します。
MAD Skills シリーズに少しインタラクティブ性をもたせ、あなたのアプリがどのくらい MAD か、スコアで可視化できるようになりました。あなたの MAD スコアを確認するには、Android Studio に MAD Scorecard プラグインをインストールして実行します。すると、カードが作成され、最先端の Android 開発の大事な 4 つのトピックにおいて、皆さんのアプリを評価したスコアが表示されます。この結果は、 #MADscore ハッシュタグを付けて Twitter で共有できます。
詳しくは、MAD Score サイトをご覧ください。Christopher Katsaro のブログ記事(英語)でも詳しく説明しています。
最先端の Android 開発に関する技術コンテンツを扱う連載シリーズ MAD Skills が続いています。先週は、マテリアル デザイン コンポーネント (MDC) のシリーズが完結しました。前回の Now in Android 以降、さらに 3 つのエピソードが投稿されています。
#4: マテリアル モーション
MDC 4 つ目のエピソードでは、Nick Rout がマテリアルに動きをつける 4 つのパターンと、アプリでそれを実装する方法についてお話ししています。実際の活用例を紹介するため、Reply サンプルアプリとそのアプリに基づいた Codelab を題材に解説します。
#5: Zarah Dominguez さんからのコミュニティ ヒント
5 つ目の MDC エピソードは、Google Developer Expert の Zarah Dominguez さんが、チームでマテリアル カタログアプリを使って、各コンポーネントが実際にどのような外観になるか、またその実装例としてどのようなソースコードになるかの両方を確認している方法について説明しています。
#6: リアルタイム Q&A
最後の MDC エピソードは、これまでの App Bundle やナビゲーションのシリーズと同じく、MDC のエキスパートであるデベロッパー リレーションズ チームとマテリアル エンジニアリング チームが登場して、リアルタイム Q&A を行いました。Twitter からだけでなく、Q&A の最中も YouTube からリアルタイムで質問が寄せられました。すべてに答える時間はありませんでしたが、マテリアルについて理解を深めていただけたのではないかと思います。
MDC シリーズのコンテンツを見逃してしまった方のために、Nick Rout がシリーズのまとめのブログ記事を投稿しました。対応する動画や記事に加え、関連するサンプルやドキュメント、Codelab などへのリンクも含まれています。
12 月 第 3 週から、Kotlin と Jetpack について取り上げる新しい MAD Skills のミニシリーズが始まりました。具体的には、Kotlin と多くの Jetpack API を組み合わせて使う方法について、Florina Muntenescu が紹介しています。
#1: Using KTX
ミニシリーズ最初のエピソードで取り上げるのは、KTX の使い方です。KTX は、さまざまなプラットフォームや Jetpack ライブラリに対するアプローチを改善して簡単に使えるようにした Kotlin エクステンションです。Florina が、プラットフォームと Jetpack API の両方の例を挙げて、LiveData と ViewModel を利用する場合の使い方を示しながら、KTX の概要について説明します。
このコンテンツはブログ記事(英語)でもご覧いただけます。
#2: コルーチンで API をシンプルに
この 2 つ目のエピソードでは、Manuel Vivo が、Kotlin コルーチンを使って既存の API を簡単に利用できるようにする方法について説明します。たとえば、コルーチンを使ってアダプタを作成すれば、複雑にネストしたコールバックをシンプルに整理できます。Fused Location Provider を使うための API をシンプルにする例を挙げ、実際にこれを行う方法を解説します。
ブログ記事形式(英語)でもご覧いただけます。
これからの数週間で公開される Kotlin/Jetpack エピソードにご期待ください。YouTube プレイリストと Android Developers のブログ記事(英語)のどちらでもご覧いただけます。
連載中のコンテンツは、YouTube の MAD Skills プレイリスト、Medium の記事、またはすべてのリンクが掲載されている 便利なランディング ページ からご確認ください。
最近数回実施している Android のリリースでは、ユーザーによる制御やユーザーデータの透過性を重視することを続けているため、権限に関するいくつかの変更が行われています。場合によっては、最新のアップデートや動作の変更に追従するというデベロッパーの作業も伴います。そのため、そのプロセスをサポートするドキュメントの整備に取り組んでいます。
この作業の一環として、 Android の権限ガイドにいくつかの重要な改善を行いました。権限の仕組みに関するわかりやすいガイドのほか、アプリで権限を使う際のベスト プラクティスを確認できるようになりました。特に重要なのは、実際に権限の宣言が 必要かどうかを評価することです。多くの一般的なユースケースでは、権限は必要ではありません。
いくつかの Room ライブラリ ガイドを全面的に改訂し、一部の API の使い方をわかりやすく説明するようにしました。
Room DAO を使用してデータにアクセスするでは、組み込みのクエリーを使う方法や、@Query アノテーションを使うカスタムの方法など、DAO インターフェースの使い方の概要を説明しています。
Write asynchronous DAO queries では、UI スレッド以外で実行するクエリーの書き方についてさらに詳しく説明しています。データベースを操作する場合、この方法が求められることが非常に多くあります。このガイドでは、好みの言語や非同期 API に応じて利用できるいくつかの代替手段についても解説しています。
最近たくさんのアルファ版、ベータ版、RC 版の AndroidX ライブラリがリリースされましたが、安定版のリリース内容は次のとおりです。
Exifinterface 1.3.2、Media 1.2.1、Navigation 2.3.2 など、いくつかの安定版でもバグ修正リリースが行われています。
Jamal Eason が Android Studio の次期リリースについてのブログ記事(日本語)を投稿しました。現在、Canary チャンネルに Arctic Fox がリリースされ、試せるようになっています。このリリースについてまず注目すべき点は、新しい命名スキームとバージョニング スキームです。この記事では、その内容について詳しく説明しています。さらに、このリリースには、デバイスとペア設定して Wi-Fi デバッグを行うための UI(現在のところ MacOS のみ)、レイアウト検証ツール、継続的に行われている Jetpack Compose 開発のサポートなどが含まれています。なお、現段階のバージョンはかなり初期の状態です。Compose を利用する場合は常に Canary 版の Studio を使う必要がありますのでご注意ください。
Murat Yener も、新しい Android Studio に関するブログ記事(日本語)を投稿しました。この記事では、Android Gradle プラグインの新しいアルファ版リリースであるバージョン 7.0.0-alpha01 について説明しています。なお、AGP もバージョン名が変更されました。今後、AGP は Android Studio のバージョンと連動するのではなく、Gradle のリリース バージョンに追従する形になります。現在の 4.2 リリースからいくつかバージョン番号が飛んでいるように見えるのは、そのためです。この記事では、AGP 4.2 における最新 API のいくつかの変更点についても説明しています。
Meghan Mehta が、RecyclerView についてのシリーズにブログ記事を投稿(英語)しました。RecyclerView は新しいものではありませんが、おそらく、ほとんどの Android デベロッパーはすでにアプリで使っているはずです。一部の基本的なドキュメントやサンプルがドキュメントや記事の中で見つけにくいことがわかったので、基本から使い方を説明しています。さらに、実例を示すためのサンプルコードも提供します。
この最新記事では、ListAdapter の使い方を重点的に説明します。ListAdapter を使うと、パフォーマンスの向上や項目の自動アニメーションなどのすばらしい機能を RecyclerView で簡単に実現できます。ListAdapter は DiffUtil を使って発生した具体的な変更を確認します。RecyclerView は、それを使ってパフォーマンスやアニメーションを最適化します。
私は引き続き、最近 1.0 に到達した AndroidX ライブラリである App Startup についての 2 回シリーズの記事(英語)で、起動時のパフォーマンスについて説明しています。パート 1 では、ライブラリのインスタンス化に Content Provider が使われることが多く、それによってアプリの起動時間に見えない影響が生じている点について説明しました。
パート 2 では、App Startup ライブラリを使って見えない Content Provider を取り除き、代わりにライブラリの遅延初期化リクエストをプーリングする方法について検討します。
Android Developers ブログには、位置情報のシステムと API に加えた改善について詳しく説明した記事(日本語)が投稿されています。この改善により、都市部で正確な位置情報を得られるようになります。この記事では、都市部で GPS 位置情報を取得する際の問題点について説明しています。GPS テクノロジーは、デフォルトで対象が見通し線上にあることを前提としているので、信号が高層ビルで反射する都市部ではうまく機能しない場合があります。Tor と私は、2014 年の ADB ポッドキャストで、位置情報チームの Marc Stogaitis から、「アーバン キャニオン」と呼ばれるこの現象について話を聞きました。
このチームは、精度の高い位置情報を得るために、主要都市の 3D 建造物モデルを統合しました。現在、一部の Pixel デバイスでこの技術のバージョン 2 を利用できます。初期バージョンはすでにエコシステムで広く使われており、来年の早いうちにこの最新バージョンも利用できるようになる予定です。
もちろん、この機能はユーザー機能で、Now in Android はデベロッパーが対象です。しかし、ここでこの機能を紹介したのは、(a)この記事と技術は興味深く、(b)デベロッパーは Fused Location Provider(FLP)を使って高度な位置情報データにアクセスすることが求められる場合があるからです。
さらに、FLP に新しい API が追加され、現在の位置情報をはるかに簡単に取得できるようになっています。具体的には、位置情報の変化をサブスクライブして最初の結果が得られたときにサブスクライブを解除するのではなく、現在の位置情報をリクエストして結果を得ることができます。詳しくは、FLP の getCurrentLocation() API のドキュメント、新しい CurrentLocationKotlin のサンプル、そしてブログ記事をご覧ください。
Chris Banes は、Tivi アプリを現在の UI Toolkit を使うアプリから、Jetpack Compose を使うアプリに移行しています。すべての UI を Compose 化し、移行作業の大部分を終えたところで、APK サイズ(大幅に減少)、メソッド数(減少)、ビルド時間(少し減少)について興味深い結果をブログ記事(日本語)で報告してくれました。
CameraX の CameraView API は、UI の制御から制御ロジックまで、あまりに多くのことを行い過ぎていました。そこで、ロジックをリファクタリングし、PreviewView と新しい CameraController クラスに分割しました。このブログ記事(英語)では、CameraController の使い方を説明するとともに、これまでの CameraView を使った機能との比較を行っています。
前回の Now in Android 以降、Android Developers Backstage に新しいエピソードが投稿されています。以下のリンクまたはお気に入りのポッドキャスト クライアントでご確認ください。
Romain Guy、Tor Norbye と私は、Square の Jesse Wilson 氏から、OkHttp、Okio、[Ok]Moshi など、同氏が手がけたいくつかの有名なオープンソース ライブラリについて話を聞きました。これらのライブラリのほかにも、Android、ライブラリ、フレームワーク、Kotlin 開発について語り合っています。また、機能リクエストや細かな問題を新しいオープンソース ライブラリを作るプロジェクトにしてしまう一部のエンジニアの厄介な癖に関する話題も登場しました。
今回は以上です。次回も Android デベロッパーの世界の最新アップデートをお届けします。お楽しみに。
Reviewed by Takeshi Hagikura - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing APAC