エピソード 2 では、コルーチンと Flow を使って API をシンプルにする方法と、suspendCancellableCoroutine API と callbackFlow API を使って独自のアダプタを作る方法について説明します。このトピックを実際に試してみたい方は、Kotlin 拡張機能ライブラリの作成 Codelab をご覧ください。
PlayfulDoggo.play にデフォルト値を設定しようとしても、次のように表示され、許可されません。An overriding function is not allowed to specify default values for its parameters(オーバーライド関数では、パラメータへのデフォルト値の指定は許可されていません)
委譲は、特定のクラスを継承できない場合に特に便利です。クラス委譲を使うと、クラスが他のクラスの階層に含まれることはなくなります。その代わり、同じインターフェースを共有し、元の型の内部オブジェクトをデコレートします。つまり、パブリック API を維持したまま、実装を簡単に入れ替えることができます。
プロパティ委譲
by キーワードを使うと、クラス委譲だけでなく、プロパティを委譲することもできます。プロパティ委譲では、デリゲートはプロパティの get 関数と set 関数の呼び出しを担当します。他のオブジェクトで getter/setter ロジックを再利用しなければならない場合、対応するフィールドだけでなく機能を簡単に拡張することができるので、この機能が非常に便利です。
次のような定義の Person クラスがあったとしましょう。
class Person(var name:String, var lastname:String)
このクラスの name プロパティには、いくつかのフォーマット要件があります。name を設定するとき、先頭の文字が大文字、他の文字が小文字になるようにします。さらに、 name を更新する場合、updateCount プロパティを自動的にインクリメントします。
この機能は、次のように実装してもいいかもしれません 。
<!-- Copyright 2019 Google LLC.
SPDX-License-Identifier: Apache-2.0 -->
class Person(name: String, var lastname: String) {
Sara N-Marandi が Android 11 のいくつかの新しい API について解説する記事を公開しました。これらの API は、デベロッパーが自分のアプリの動作とその原因について理解を深めるために役立ちます。データアクセス監査を使うと、ユーザーのアクセス許可が必要なデータをアプリが要求したタイミングと理由を簡単に知ることができます。また、アプリプロセス終了の理由は、デベロッパー(や障害レポート サービス)が実際のユーザーの端末でアプリがクラッシュした理由を判断し、問題を修正する方法を探す際に役立ちます。
Play Billing で課金する
私たちがコードを書くのは、それが本当に楽しいからですよね?しかし、書いたアプリから収益を得なければならないこともあります。そんなときに活躍するのが Google Play Billing です。アプリを収益につなげる主要な方法の 1 つに、アプリ内購入があります。Play Billing のツールやサービス、API を使ってアプリ内購入を実現できます。
Android Studio チームの David Herman が、チームから集めたデバッグのヒントに関する記事を投稿しています。この記事では、今すぐ使えるテクニックがたくさん紹介されています。なお、この記事は、2019 年 10 月に開催された Android Developer Summit のプレゼンテーションに基づいています。こちらの動画でも同じ内容をご説明しています。
ほしい情報のみを確認できるように、logcat のフィルタを設定する
(再起動してデバッガを使うのではなく)既に実行されているアプリにデバッガをアタッチする
ブレークポイントに関するいくつかのヒント
コードのどの部分かを突き止める際に役立つスタックトレース分析
その他多数!(本当です。たくさんのヒントが詰まったとても長ーい記事です)
System Trace
Yi Yang が、Android Studio の System Trace ツールの最新の改善点についての記事を投稿しています。System Trace は、systrace ツールの Android Studio 版です。これは、難しいパフォーマンスの問題を分析する際に、私たちが何年もの間内部的に使ってきたツールです。systrace を使うと、アプリ内のすべてのスレッドによる処理の詳細や、システム全体で他に起きていることについての情報を確認できます。System Trace では、この情報を IDE から直接確認できます。
Modern Android Development とは、最高の Android アプリを作るためにすべての Android デベロッパーが採用すべきだと私たちが考える一連の技術です。API、ツール、言語、配布メカニズムなどが含まれています。これについては、過去数年間にわたり何度かお話ししてきましたが、私たちがこのフレーズで意図することをさらに具体的に定義する時期が来たようです。新しいランディング ページは、さらに詳しい説明に加えて、機能を使い始めたり、(多くの方が多くの機能を既に使っているので)開発ライフの中で活用の幅を広げたりする際に役立つ便利なリンクが含まれています。
ADB (Android Developers Backstage) ポッドキャスト 新エピソード
前回の Now in Android 以降、Android Developers Backstage に新しいエピソードが投稿されています。以下のリンクまたはお気に入りのポッドキャスト クライアントでご確認ください。
ADB 142: 機械学習の学習
Tor Norbye と私が、Android の機械学習について Hoi Lam と Matej Pfajfar に話を聞きました。ML Kit、TensorFlow Lite、転移学習、フェデレーション ラーニング、ML モデル バインディング、Android Neural Networks API などについて学ぶことができます。
Tor Norbye、Romain Guy と私が、Android 11 の人中心の新機能である会話について、System UI チームの Julia Reynolds と Stefan Franks と議論しました。通知シェードの上の専用スペースに会話通知が表示されます。この機能は、バブル機能と連携して動作することに注意してください。バブル機能については、最近 Episode 140: Bubbles! でお話ししています。