この記事は Chet Haase による Android Developers - Medium の記事 "Now in Android #32" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android 開発の最新ニュースやトピックをご紹介する Now in Android。今回はKotlin と Jetpack の API、Navigation についての新コース、最近公開されたブログ記事・動画・関連ドキュメント、ポッドキャスト エピソードなどをご紹介します。
最先端の Android 開発に関する技術コンテンツを扱う連載シリーズ MAD Skills の新しいミニシリーズ Kotlin で Jetpack API を使用する が順調に進んでいます。最初のエピソードを紹介した前回以降、3 つのエピソードが追加されました。この 3 つのエピソードでは、大まかに言えば Room ライブラリと WorkManager ライブラリの使い方に関する情報をお届けしていますが、コルーチンなどの Kotlin 機能を使ってコードをシンプルにする具体的な方法にも触れています。
このエピソードでは、Florina Muntenescu が、Room Kotlin API を使ってローカル データベース ストレージ要件を実現し、それをテストする方法について説明します。
ブログ記事(英語)でもご覧いただけます。
このエピソードでは、Florina が WorkManager を使って非同期作業をスケジュールする方法を説明します。これは、すぐに実行することも、遅延実行することもできます。
Android の Google Developer Expert の Magda Miu さんとチームメンバーは、Kotlin を使ってわかりやすく、メンテナンスしやすい CameraX のベンダー拡張機能を記述しています。その方法について動画で説明してくれました。
Kotlin と Jetpack シリーズの締めくくりとして、1 月 15 日にからもう一度リアルタイム Q&A を開催しました。
1 月 18 日の週から、新しい MAD Skills シリーズが始まっています。連載中のコンテンツは、YouTube の MAD Skills プレイリスト、Medium の記事、またはすべてのリンクが掲載されているランディング ページからご覧いただけます。
Android Basics in Kotlin コースに新しいユニット「Unit 3: Navigation」が追加されました。
このユニットでは、Navigation コンポーネントや Android アーキテクチャ コンポーネント ライブラリのその他の API に関するチュートリアルとサンプルを確認できます。
Isai Damier が暗号と認証、セキュリティについての新しい記事(英語)を公開しました。暗号に関するさまざまな興味深い背景を取り上げながら、暗号を利用した安全なソリューションで生体認証が用いられることが多い理由について説明しています。
Florina Muntenescu が、Kotlin を使えば生産性が上がるという記事を公開しました。既にたくさんの Kotlin コードを書いている方なら、おそらくご存知のことでしょう。しかし、仕事で Kotlin を使うべきか迷っている方や、プロジェクトの他のメンバーを説得する方法を探している方なら、この記事に書かれている具体的な内容が役立つかもしれません。
Meghan Mehta が RecyclerView に関する連載シリーズの第 3 回目のブログ記事(英語)を公開しました。RecyclerView でよくある要件の 1 つが、ユーザーのクリックへの対応です。リストの項目をクリックすれば、通常は何かが起こります。記事では、この機能を扱うおすすめの方法を紹介します。
前回の Now in Android 以降、Android Developers Backstage に新しいエピソードが投稿されています。以下のリンクまたはお気に入りのポッドキャスト クライアントでご確認ください。
2020 年末、Tor Norbye と Romain Guy、そして私がこのエピソードを収録しました。昨年、それまでとは違う働き方を模索する中で起きたことや、Android のツールやプラットフォームの最新機能について解説しています。
今回は以上です。次回も Android デベロッパーの世界の最新アップデートをお届けします。お楽しみに。
Reviewed by Yuichi Araki - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing APAC
この記事は 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 を使った機能との比較を行っています。
Romain Guy、Tor Norbye と私は、Square の Jesse Wilson 氏から、OkHttp、Okio、[Ok]Moshi など、同氏が手がけたいくつかの有名なオープンソース ライブラリについて話を聞きました。これらのライブラリのほかにも、Android、ライブラリ、フレームワーク、Kotlin 開発について語り合っています。また、機能リクエストや細かな問題を新しいオープンソース ライブラリを作るプロジェクトにしてしまう一部のエンジニアの厄介な癖に関する話題も登場しました。
Reviewed by Takeshi Hagikura - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing APAC
この記事は Chet Haase による Android Developers - Medium の記事 "Now in Android #30" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android 開発の最新ニュースやトピックをご紹介する Now in Android。今回は App Bundle、マテリアル デザイン コンポーネント、新しいターゲット API 要件、新しい Fragment とフローのドキュメント、最近公開されたブログ記事・動画・関連ドキュメント、ポッドキャスト エピソードなどをご紹介します。
最先端の Android 開発に関する新しい技術コンテンツを扱う連載 MAD Skills シリーズが続いています。
App Bundle のミニシリーズは、Google Developer Expert の Angelica Oliveira からのヒント、続いて私(質問役)と Ben Weiss、Wojtek Kaliciński、 Iurii Makhno(回答役)によるリアルタイム Q&A とアーカイブで終了しました。App Bundle の全エピソード(動画と記事)は、まとめのブログ記事(英語)からリンクしています。
続いて MAD Skills は、マテリアル デザイン コンポーネント(MDC)についての新しいミニシリーズに入りました。マテリアル デザイン コンポーネントは、マテリアル デザイン ガイドラインを使ってアプリの構築を簡単にするライブラリです。
初回は Nick Butcher が、Android デベロッパーにマテリアル デザイン コンポーネントの使用を推奨する理由を説明しています。この動画には、テーマのサポート、組み込みの画面遷移、デフォルトのマテリアル スタイルのコンポーネントなど、MDC が提供するさまざまな機能の概要が含まれています。このコンテンツは、以前にブログ記事(英語)も掲載しています。
次に、Nick Rout がマテリアル テーマについてのエピソードを投稿しました。MaterialThemeBuilder サンプル プロジェクトについて説明しつつ、マテリアル テーマの使い方とカスタマイズの方法を紹介しています。
この動画に加えて、色、書体、形状について取り上げた記事(英語)もそれぞれご覧ください。
12 月第一週にかけて、Chris Banes が 3 つ目のエピソードを投稿しました。Android 10 の Force Dark 機能と MDC の DayNight テーマの両方を使い、MDC でダークテーマを作成する方法について説明しています。また、Chris はこのコンテンツをブログ記事形式(英語)でも公開しました。
引き続き、ほかにも MDC 関連のコンテンツを公開する予定です。さらに、日本時間 12 月 11 日午前 3 時から、もう一度リアルタイム Q&A (英語)を行います。詳細は MDC プレイリストをご覧ください。
連載中の MAD コンテンツは、YouTube の MAD Skills プレイリスト、Medium のブログ記事(英語)、またはすべてのリンクが掲載されているランディング ページからご覧ください。
2021 年後半には、ターゲット API(新規アプリとアプリのアップデート)と App Bundle の両方の要件が追加されます。Hoi Lam が、これについて詳しく説明したブログ記事を投稿しました。簡潔にまとめると、次のようになります。
2021 年 8 月:
2021 年 11 月:
Fragment は、UI デベロッパーに重要なアーキテクチャ要素を提供し、アプリの UI の小さな塊を自己完結的な形で管理できるようにします。Fragment と Navigation を組み合わせている方も、単独で Fragment を使っている方も、アプリで最も効果的に Fragment を使う方法を確認することをおすすめします。ツールや API の使い方を理解するために、最新の綿密なドキュメントを公開することが重要であると考えています。サポートが終了した API の利用は避けるべきですが、関連ドキュメントでは、正しい方向性を示したり、ベスト プラクティスを説明しています。
そこで、Fragment のドキュメントを大きく改訂し、ライフサイクル、状態、テストなど、Fragment のさまざまな側面について説明している最新のガイドを公開しました。こちらから、最新のドキュメントをご確認ください。
AndroidX で Fragment の修正や拡張を行っている Ian Lake が、Twitter のフィードで今回のドキュメントの変更に触れています。
Kotlin のフローについての新しいドキュメントも公開しました。ここには、フローの基本的な使用方法から、新しい StateFlow および SharedFlow API のテスト方法まで、あらゆる情報が掲載されています。また、フローの使用についての動画も忘れずにご覧ください。
StateFlow
SharedFlow
先週私は、アプリの起動時のパフォーマンスに関するいくつかの処理を自動化する方法について、ブログ記事(英語)を投稿しました。私は、起動時のパフォーマンス全般に注目しており、何度も繰り返して連続実行する際に、起動時間を求める処理を自動化する妥当な方法を見つけたいと考えてきました。同じように起動時のパフォーマンス テストに興味がある方のために、私が利用したアプローチを公開しています。
Manuel Vivo は、Dagger から Hilt への移行というブログ記事(英語)で、「その価値はあるのか?」という疑問を投げかけています。このブログ記事では、移行を検討すべきいくつかの重要な理由に触れています。たとえば、API のテスト、整合性、AndroidX 拡張機能との統合などです。
Hilt を使い始めるデベロッパーの皆さんに役立ててもらうため、Filip Stanis がKotlin による Hilt 実践ガイド(英語)を投稿しました。依存性注入や Dagger を使ったことがない方でも大丈夫です。まったく初めてという方も、ぜひお読みください。
タイトルからは、この記事が Kotlin デベロッパー向けのように思えるかもしれませんが、これは記事のコード スニペットに Kotlin を使っているからです。記事で紹介している一般的なアプローチやテクニックは、Java プログラミング言語を使っているデベロッパーにも当てはまります。
Manuel Vivo が Kotlin Vocabulary シリーズに新しい動画を投稿しました。Kotlin フローを使ってデータのストリームを発行する方法について説明しています。これは、以前公開した動画、コルーチンの ABC が元になっているので、先にそちらを見てからフローを学ぶのもよいでしょう。
David Winer が Kotlin Synthetics と View Binding についてのブログ記事を投稿しました。この 2 つはどちらも、厄介な findViewById() 呼び出しをコードから無くすためのメカニズムです。このブログ記事では、Kotlin プラグインの今後のバージョンで Synthetics のサポートが終了することをお伝えしています。また、今後も推奨とサポートが継続される @Parcelize エクステンションについても触れています。
findViewById()
@Parcelize
最近の Android リリースでは、ユーザーデータの保護、データアクセスへのコントロール、透過性向上に関して、多くの変更が行われています。特に重視されている領域が位置情報です。ユーザーは、アプリの位置情報へのアクセスを望まない場合や、そのアクセスを非常に注意深く制御したい場合があるからです。
そのため、Google Play ポリシーにより、バックグラウンドでの実行中に位置情報にアクセスするアプリでは、(Play Store から)アクセス許可をリクエストする操作が必須になります。このブログ記事では、そのリクエスト方法について詳しく説明しています。
この記事は Chet Haase による Android Developers - Medium の記事 "Now in Android #29" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android 開発の最新ニュースやトピックをご紹介する Now in Android。今回は連載シリーズ MAD Skills の「App Bundle」、App Bundle、AndroidX 安定版リリース、連載シリーズ Kotlin Vocabulary に関する新しい記事と動画、最近公開されたブログ記事・動画・関連ドキュメント、ポッドキャスト エピソードなどをご紹介します。
最先端の Android 開発に関する技術コンテンツをミニシリーズごとにテーマを決めて扱う連載シリーズ MAD Skills。前回のミニシリーズ「ナビゲーション」につづいて、App Bundle を取り上げます。Wojtek Kaliciński と Ben Weiss が Google Play のアプリ署名、初めての App Bundle のビルド、Play Feature Delivery についてのコンテンツを公開しました。詳しくは、以下の動画と記事をご覧ください。
Android App Bundle を取り上げるミニシリーズですから、アプリの署名についてお話しするのは当然です。Google Play はユーザーのデバイスにダウンロードする APK を生成しますが、その APK をインストールするには署名が必要だからです。この動画では、Google で鍵を生成するオプションや自分の鍵をアップロードするオプションなど、Google Play Console でアプリの署名を有効化する方法について順を追って説明しています。
こちらの関連記事も忘れずにご確認ください。Play のアプリ署名についてのよくある質問を取り上げています。
こちらの動画では、Ben が App Bundle の作成手順をご説明しています。App Bundle は Android Studio またはコマンドラインで作成し、Play Console にアップロードします。さらに、Play Console でツールを使い、アップロードしたバンドルの情報を確認する方法もお話しています。
このエピソードでは、Android Studio を使ってアプリをモジュール化する方法のほか、インストール時(インストールするかどうかを決定するオプションの条件も指定可能)や、オンデマンドでダウンロードするモジュールを選択する方法をお話しています。さらに Ben は、API を使ってオンデマンドでモジュールのインストールをリクエストする方法も詳しく説明しています。
本エピソードは、ブログ記事(英語)でもご覧いただけます。
App Bundle を取り上げるミニシリーズ最後のエピソードでは、Wojtek がローカルでテストを行う bundletool や、Play Console を使ってアップロードしたものをテストする方法など、利用可能なツールを使ってバンドルと生成された APK をテストする方法を説明しています。
この動画でお話している内容は、いくつかの記事やドキュメントとも関連しています。ぜひ、詳しい情報をご確認ください。
App Bundle を取り上げるミニシーズ最後のコンテンツとして、2020 年 11 月 19 日(日本時間 11 月 20 日)に YouTube でリアルタイム Q&A を開催します。こちらのプレイリストに YouTube ライブへのリンクが表示されますのでご確認ください。さらに、質問を募集するツイートも行います(編集部注:セッションはすべて英語で、この日本語記事投稿時には実施済み)。
本シリーズのコンテンツアーカイブは、YouTube の MAD Skills プレイリスト、Medium の記事、またはすべてのリンクが掲載されているランディング ページからご覧いただけます。来週は次のミニシリーズが始まります。お楽しみに!
多くのアルファ版、ベータ版、RC 版の AndroidX ライブラリがリリースされました。その中には、いくつかの重要な安定版リリースもありました。最近リリースされた以下のライブラリにご注目ください。
前回の Now in Android #28 以降、Kotlin についていくつかの新しい記事と動画が公開されています。
Florina Muntenescu が、連載シリーズ Kotlin Vocabulary に新しいエピソードを追加しました。今回のテーマは、Kotlin のデータクラスです。データクラスを使うと、ボイラープレート コードをほとんど使わずに、データを保持する構造を簡単に作成できます。しかも、equals() 関数と hashCode() 関数は、Kotlin が自動的に適切なものを生成してくれます。また、何もしなくてもクラスのプロパティの分割代入や copy() を利用できます。いつもの Kotlin Vocabulary エピソードのように、Florina がデータクラスを逆コンパイルしたバイトコードを確認し、内部の仕組みを細かくご説明しています。
Murat Yener が、以前に掲載した Kotlin の委譲機能についての記事の続編を投稿しました(英語)。今回は、Kotlin 標準ライブラリが提供するデリゲートである lazy、observable、vetoable、notNull についてご説明しています。
Florina がこちらの記事を投稿(英語)し、Kotlin の教育や開発に力を入れることに関して、デベロッパーの皆さんからよく寄せられるいくつかの質問にご回答しています。さらに、重要な学習関連情報へのリンクも掲載しています。
この記事では、Kotlin アプリのほうが Kotlin 以外で書かれたアプリよりもエラーが起こりにくい理由について、Florina がご説明しています。その証拠となる具体的なアプリやユースケースを取り上げますが、それだけでなく、null 可能性や hashCode() != equals() など、この言語を使ったコードが安定して動作する理由についても解説しています。詳しくは、こちらのブログ記事(日本語)をご覧ください。
Romain Guy と Tor Norbye、そして私が、Instacart の Colin White 氏から、オープンソースのイメージ読み込みライブラリである Coil について話を聞きました。イメージの読み込み、パフォーマンス、オープンソース、そしてこの Kotlin ファーストなライブラリを Kotlin やコルーチンを使ってどう作るのかについて語り合います。
この記事は Chet Haase による Android Developers - Medium の記事 "Now in Android #28" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android 開発の最新ニュースやトピックをご紹介する Now in Android。今回は新連載シリーズ MAD Skills の「ナビゲーション」、Android X ライブラリ、連載シリーズ Kotlin Vocabulary、最近公開されたブログ記事・動画・関連ドキュメント、ポッドキャスト エピソードなどをご紹介します。
新連載シリーズ MAD Skills は、Modern Android Development(最先端の Android 開発)テクノロジーの使い方をデベロッパーの皆さんにお伝えするコンテンツです。このテクノロジーを使えば、優れたアプリを簡単に作ることができます。このシリーズは、前回の Now in Android を投稿した時期に始まりました。それから数週間が経ち、Navigation コンポーネントを扱った最初のミニシリーズが完結し、リアルタイム Q&A もご用意しました。
MAD Skills の目的の 1 つは、最先端の Android 開発のさまざまな機能の使い方をお伝えするだけでなく、皆さんの問題や質問に耳を傾けて解決のお手伝いをすることでした。そのため、各ミニシリーズの終わりには、YouTube でリアルタイム Q&A を開催する予定です(編集部注:セッションはすべて英語で実施されます)。
それに向けて、Twitter で質問を募集しました。また、Twitter と YouTube でもライブで質問に回答し、さらに、プロダクトに関わっている何名かのエキスパートに、おすすめする内容について話を聞きました。
ナビゲーションについては、10 月 29 日木曜日の午前 10 時(日本時間 10 月 30 日午前 3 時)に私と Ian Lake がリアルタイム Q&A を開催し、現在はアーカイブを公開しています。寄せられたご質問は、こちらの Twitter スレッドと、#AskAndroid がついた投稿から確認できます。
ナビゲーションのエピソードを見逃してしまった方は、動画や記事で確認できます。
続きのコンテンツは、YouTube の MAD Skills プレイリスト、Medium の記事、またはすべてのリンクが掲載されているランディング ページからご覧いただけます。今後の MAD コンテンツにもご期待ください。11 月 1 日 からは次のシリーズが始まっています!
まず、AndroidX は、 GitHub を通して多くのライブラリを提供しています。
多くのデベロッパーの皆さんは、Android でずっと使われている AOSP+Gerrit システムよりも、使い慣れた GitHub を好まれていることは認識しています。
これはすばらしいアイデアです。ただししかし、私たちが利用しているインフラストラクチャを考慮すると、そのアイデアの実現はそう簡単ではありません。それでも、皆さんの意見を踏まえて模索し始め、数か月前から Paging、Room、WorkManager という積極的に開発が行われている一部のライブラリを GitHub で利用できるようにしました。先日、Activity、Fragment、Navigation の各ライブラリも追加しましたので、ぜひご確認ください。またご自分でも貢献したいという方は、CONTRIBUTING ドキュメントに記載されている詳細をご覧ください。
いつものように、たくさんのアルファ版、ベータ版、RC 版とマイナー安定版リリースがありました。主な安定版リリースについて紹介します。
MediaRouter 1.2.0: これは注目に値するバージョンです。というのも、Android 11 の新しいメディア機能のいくつかと同期する機能が追加されているからです。
Android 11 には、メディア プレーヤー用のたくさんの細かな UI が追加され、メディア コントロールが通知パネルの新しい専用の領域にまとまっているため、他の通知に紛れることなく 1 か所から簡単にメディアを制御できます。これは、新しいデベロッパー機能というより、皆さんが既に作っているかもしれない通知を別の形で表現したものです。Lollipop リリース以降で利用できる MediaSession や MediaStyle API はそのまま使うことができます。
ただし、Android 11 には、「シームレスなメディア移行」を目的としていくつかの新機能が追加されています。これにより、ユーザーは出力スイッチャー(下記)で再生デバイスを変更できます。今回の MediaRouter の新リリースを使うと、この新しいプラットフォーム機能を操作できます。
この MediaRouter の新リリースを使うと、出力スイッチャーにどの再生デバイスを表示するかを制御できるので、ユーザーはシームレスにオーディオを移動できます。
Android 11 のメディアに関する変更点を確認したい方は、Don Turner の動画 What's new in Media(メディアの新機能)をご覧ください。
いくつかのアルファ版リリースも紹介したいと思います。アルファ版はアルファ版であり、チームの開発が進むとともに変更が繰り返されるので、通常はアルファ版に注目することはありません。しかし、Paging と Navigation のアルファ版のリリースは、近未来のアプリ開発という点で注目に値するでしょう。
Jetpack Compose のアルファ版の開発が進んでいますが、「Jetpack Compose の世界で、[ここにお気に入りの Jetpack ライブラリを挿入] は今後どうなりますか?」と、質問を受けることがあります。
お答えします。アーキテクチャ コンポーネントの多くは、個々のビューや既存の UI ツールキットを扱うものではありません。そのため、それぞれのライブラリは、Jetpack Compose の新しい世界でどれも等しく必要かつ有用です。それだけでなく、現在私たちは、異なるコンポーネントを簡単に連携させることができるように、統合機能の開発を進めています。Compose は既に ViewModels および LiveData と組み合わせて使うことができますが、本日からは Paging と Navigation の両方も Jetpack Compose のサポート対象になりました。
先日、Kotlin の言語機能に関するシリーズで 記事を 3 件公開しました。(英語記事一覧・日本語記事一覧)
Florina Muntenescu が Kotlin の分割代入機能についての新しい記事(英語)と動画を投稿しました。分割代入は、オブジェクトの異なるフィールドの値を複数の変数に割り当てる際に便利です。たとえば、次のデータクラスがあったとします。
data class Donut( dough: String, topping: String)
すると、変数を Donut インスタンスのフィールドにすばやく割り当てることができます。
val (dough, topping) = someDonut
データクラスでは何もしなくても分割代入が動作しますが、他のクラスの関数に分割代入機能を持たせることもできます。
Meghan Mehta が Kotlin 言語機能のエクステンションについて説明した新しい記事(英語)を公開しました。エクステンションとは、既存のクラスに新しいメソッドやプロパティを追加できるような機能です。実際には、エクステンションが既存のクラスに何かを挿入することはありません。しかし、メソッドの呼び出し元からはそのように見えます。なお、
内部的には、クラスのインスタンスを受け取る静的メソッドとして実装されています。
この Kotlin の機能は、私もよく使うことになりそうです。API デベロッパーとして、後から API を改善できるという考え方が気に入っています。プラットフォームやライブラリのコアの外側に API を追加するにもかかわらず、コードから使うときは、まるでそこにあるように見えるのです。たとえば、String クラスに String.isAGoodDonutName() というエクステンション メソッドを作ったとしましょう。すると、呼び出し元はこのエクステンション メソッドを使い、“Sprinkle”.isAGoodDonutName() というように String からこのメソッドを直接呼び出すことができます。他の言語のアプローチのように、他のパッケージやクラスを使って Utils.StringMethods.isAGoodDonutName(“Sprinkle”) などと記述する必要はありません。
String.isAGoodDonutName()
“Sprinkle”.isAGoodDonutName()
Utils.StringMethods.isAGoodDonutName(“Sprinkle”)
最後に、Manuel Vivo が新しい動画「コルーチンの ABC」を公開し、CoroutineScope、CoroutineContext、Dispatcher、Job などのトピックについて説明しています。コルーチンの ABC というより、CDJ のように見えるかもしれません。
CoroutineScope
CoroutineContext
Dispatcher
Job
アプリを公開する際に厄介なことの 1 つは、そのアプリを確実にストアのガイドラインに準拠させることです。このガイドラインは、ユーザーにとって優れたアプリのエコシステムを実現するために存在しています。しかし、正しい対処方法を厳密に伝えるのは難しい場合もあります。そこで、問題につながる可能性があるいくつかのよくある違反と、それを避ける方法についてより理解を深めていただくため、この記事を公開しました。
よくあるポリシー違反の中には、アプリの UI から Play Store へのリンク、アプリの明確な概要よりも検索キーワードを意識した説明、ウェブサイトのコンテンツを WebView で見せるだけのアプリなどがあります。
多くのカンファレンスがオンラインでの開催を強いられているこの時期に、Droidcon は興味深いアプローチをとりました。たくさんのイベントを組み合わせて、広いタイムゾーンをカバーする大きなイベントを実施したのです。10 月に行われたこのカンファレンスのヨーロッパ、中東、アフリカ バージョンと、そのすべての動画がオンラインで公開されています(私たちのチームが作ったものもあれば、広大なコミュニティのとてもたくさんのデベロッパーの皆さんが作ったものもあります)。
スクリーンキャストの MotionTags シリーズには、前回から 2 つのエピソードが投稿されました。
MotionTags プレイリストの他のシリーズと合わせてご覧ください。
先日、Udacity Android Kotlin Developer Nanodegree が新しくリリースされました。このコースは、ベスト プラクティスに従って Kotlin で Android アプリを構築する方法を学びたい方が対象です。前提条件や詳しい内容は、プログラムの概要をご覧ください。
なお、この Nanodegree は有償プログラムで、フィードバック付きのプロジェクト、テクニカル メンター サポート、キャリア サービスが Udacity から提供されます。ただし、ベースとなるコースのコンテンツは Google が Udacity と共同で作成したもので、誰でも無料でアクセスできます。このコンテンツは、Kotlin による Android アプリ開発や Kotlin による高度な Android で確認できます。
Romain Guy と私が、新しい 3.0 バージョンの Paging ライブラリ(「Paging 3」)について、Android ツールキット チームの Dustin Lam と Chris Craik に話を聞きました。
このバージョン(現在アルファ版)は、コルーチンと Flow を使って Kotlin で完全に書き直されています。それにはさまざまな理由がありますが、このポッドキャストではその点に迫っています。ぜひお聴きください。