特に驚いたところを赤く表示しています。(ちょっと風邪引いてまとめるのがいつもより遅くなっています。 )
Keynote
(いつも通り夜ふかししながら書いているのでクオリティ低めです。)
- Gemini
AI Overview
Photos
ナンバープレートの番号を聞ける。
Geminiはcontextが長いのがいいらしい。
コードのコメントについてGeminiが返してくれるなどの開発者の話など。
1.5 Pro
1Mコンテキストで 35言語で使えるように。
2Mトークン。 private previewが始まった。
NotebookLM
pdfとかドキュメントとかを入れられる。
靴の写真を撮ってそれで、購入したメールを探したりできる
AlphaFold 3
1.5 Flash
速いっぽい?
Project Astra
universal AI Agent
会話可能な速さに。
動画を撮りながらそれを解説させたりするデモがあった。
新しいフォームファクターの話が一瞬写った?Vision Proみたいな視点の動画が流れた
Imagin3
画像生成。
文章を理解する能力が高い。
文字のレンダリングもうまくできる。
labs.google.com
AI Music sandbox
YouTubeと AI Music sandboxというのを作った。
Veo
動画生成。
生成された動画の時間をexpand(延長)できる
クリエイターとのコラボで試しているデモ。
path to AGIという発言。
TPU
AIの電気消費が深刻
trilliumを作った
Axion ProsessorというCPUも作っている。
NVIDIA BlackwallというGPUも利用可能に。
検索
Google検索がたくさんGoogle検索して、AI Overviewを提供している。
検索で、プランニングしてくれる。3日のご飯っていれると3日間のご飯を提案してくれる。
AI organized search result page。色々検索でページだけでなくマップとか出す。
動画で検索できるように。
現実で起きていることのトラブルシューティングなどができる。動画で、これ回らないみたいなんだけど。。みたいな感じで質問できる。
GeminiのSide panel
来月利用可能に
Google Meetなどで利用可能っぽい?
今月に以下が利用可能に
ボタンがでてきて、Gmailの引用で長いスレッドを要約できる。
GeminiによるGmailのreplyの自動生成。
Gmailからスプレッドシートででexpenceのサマリとかを作れる。
AI teammate
roleとobjectiveをもったteammateを作れる。(やばそう)
サマリ作ってくれたりする。メモリも持ってくれる。
いろいろなものに即レスしてくれたりするかもしれない。
Gemini Live
AstraをGemini Appに 今年。
Gems
GPTsっぽいやつ?
今年
Gemini Advanced
動画とpdfとかをたくさん載せてもContext Lengthが長いので処理できたりする。
AdvancedもContext Lengthが2Mに。
35+ language
Android
AI at the core
- 囲って検索
- AIアシスタント
囲って検索が数学とかもできるうように、年末までに
Android experience
GeminiをContext Aware。
YouTubeで見ているものに関してGeminiで質問できたりできる。
AndroidアプリのGoogle DriveでみているpdfをGeminiに渡せたり。なにかアプリから渡せるAPIできるのかな?
Gemini NanoがMulti modalに。
Talkbackが画像を解説してくれたりとか。
オンデバイスモデルで電話で詐欺っぽいのがかかってきたときに詐欺だよって出したりできる。
Developer news
GeminiのAPIで以下が利用可能。
Video frame extraction。
Parallel function calling。
Content caching。
Gemini 1.5 Pro complexタスクに使う
Gemini 1.5 Flash 速いコスパが良い
両方今日使える。
Gemma
OSSのModel。自由に使える。
RecurrentGemma
CodeGemma
画像を読み込めるPaliGemmaができた。
Gemma2ができる 27B
SynthID
AIが作ったものを分かるように。
Open sourceに。
LearnLM
GeminiをLearning向けにファインチューンしたもの。
Gemsの一つ。Learning coach。
Videoで質問したりできる。
selected userでYouTubeで問題作ったりとか質問したりできるように
Developer Keynote
世界中の開発者がAIを使えるようにするというミッションでやっている。
Android Studioなど色んなところで使える
Context Caching
今月使えるようになる。
どう動くのか?
Context Windowはいいけど、計算量がかかる。
例えばプロンプトの大部分が変わらない場合、それをキャッシュし、次のときに軽く取得できる。例えば記者が次の記事を書きたいときにこれまで書いた記事を集めたいとしたときに、最初に20centかかったとする。次のときのpromptでは10centで良くなる。これは法的文書化、研究文書などたくさんの用途がある。
Gemini API Competition
Gemini API Competitionが行われる。あのBack to the futureのelectric classic DeLoreanがもらえるらしい。
Android
Excellent experiencesとAI at the coreをかかげているっぽい。
Gemini nanoの話。ローカルで動く。またアプリにモデルを組み込む必要がない。
MediaPipe
Gemini nanoではなくカスタムモデルを使う場合はこちらを使う。
Developer Productivity
噂に聞いていた、Kotlinの発表
First class tooling and library support for Kotlin multi-platform on Android
Google DocsアプリはKotlin Multiplatformにマイグレートして、Android, iOS, Webでロジックを共有している。
Workspaceチームは他のGmail, Calender, Driveなどで投資を続ける。
https://youtu.be/ddcZnW1HKUY?t=1062
Composeでの最初のピクセルが描画されるまでの時間の改善。
ComposeでのSharedElementTransitionのサポート
Material Guidanceを使ったアプリを作りやすくなるComponentを用意
ListDetailPaneScaffold
SupportingPaneScaffold
NavigationSuiteScaffold
https://youtu.be/ddcZnW1HKUY?t=1232 より
ComposeでのStylusやMouse、Keyboardのサポートが増えて、Handwriting recognitionにより、文字の認識により手書きの文字をテキストにすることができる。
https://youtu.be/ddcZnW1HKUY?t=1254
Firebase device streamingにSamsungなどを追加に。
Compose UI Check mode
adaptiveなレイアウトになっていない問題やaccessibilityの問題を見つけてくれる。
https://youtu.be/ddcZnW1HKUY?t=1317
SoundClouldの話、Composeでモバイルのスキルが使えるので、どのフォームファクターでもComposeが使えるのが良い的な。
Android Studio
Geminiでクラッシュを解析して、解決策をしてくれる。
AIに何を共有するかを渡せるようになった。
https://youtu.be/ddcZnW1HKUY?t=1533
Android StudioのGeminiがリファクタリングができるように。右クリックでGemini -> transform "simplify and make idiomatic"で
https://youtu.be/ddcZnW1HKUY?t=1594 より
この画面でさらにドキュメントを追加してもらうこととかもできる。
デザイナーから渡された画像を使って画面を自動生成して作るデモ
Gemini Pro 1.5になって、Context Sizeも増えることで、画像をGeminiに渡せるように。
結構いい感じ。
https://youtu.be/ddcZnW1HKUY?t=1835 より
Web
OnDevice AIがWebGPUとWASMで可能になる。
BilliBilliがWASMをつまってテキストをスピーカーの後ろに移動させたところ、かなりの数値の改善が見られた。
https://youtu.be/ddcZnW1HKUY?t=2001
Chrome 126以降 Gemini NanoがChromeのデスクトップクライアントに組み込まれるようになる。
"Help me write"という機能が追加になり、短い文章を生成してくれるようになった。
Cross platform
Project IDXが Public betaに。
WebでできるIDEみたいな感じ。
Flutter
WASM対応でJSのパフォーマンスが2倍になった話。
Firebase
新しいアイコンに
Firebase Data Connect with Google Cloud SQLのpreviewを公開。安全でタイプセーフなアプリをFirebaseで作成できる。コードを書く量を減らせるように設計されている。
Data connectはAIの開発のために構築されている。vectorやfunction callingなどが使える。
Firebase App Hosting
GitHubからソースコードを取り出し、ビルドして、Google Cloudにデプロイするので速い。
Firebase Genkit
アプリ開発者向けのAI統合フレームワーク。 Genkitの引数を変えると簡単に、AIのモデルを変えられる。
AI Models
OpenSourceのAI Model
CodeGemma
先月リリース
コード用
RecurrentGemma
先月リリース
ニューラルネットワークとローカルアテンションを使って、メモリ効率を向上させ推論を高速化するもの。
PaliGemma
マルチモーダル対応
Gemma2
new architectureだそう。
Google AI Edge
Generative modelを含むすべてのいいモデルへのアクセスを提供して、edgeでツールを走らせられるようにする。
TensorFlow liteが拡張されPytorchのモデルが動かせるようになった。
デバイス上でRAGを走らせることができる。
RAGの例として、家族が好きなものをメモとして書いて、それを利用して、モデルへのプロンプトを拡張して、もっと良い回答を得られるようにしたい場合MediaPipeでできる。
https://youtu.be/ddcZnW1HKUY?t=3496 より
What's new in Android
AI
Gemini nanoの話(端末上で動くGemini)
AICoreによってAndroid 14+に統合されていて、Google AI Edge SDKによってAPIが提供されているらしい。(ちょっと難しいけど、Google AI Edge SDKを使うと、端末のAICoreにアクセスできるということっぽい)
https://youtu.be/_yWxUp86TGg?t=88 より
Gemini nanoは現状Pixel 8 ProとGalaxy S24で利用可能。
(Galaxy S24はメモリ8GBなので自分はメモリがハードウェア要件なのではと他のブログなどを見て勘ぐっていたのだけど違うみたいだった)
現状のユースケースは、
メッセージで、シェイクスピア風の文章を作ったり(いる?)、レコーダーでいろんなAIを組み合わせる一つとして使ったり、
Adobe Acrobatで要約したりして使っている。
Android on-device gen AI under the hoodの紹介
今年の後の方でnanoがマルチモーダル可能になってもっと良くなる。nanoのアーキテクチャについて知りたい人は見てみて。
Prototyping SDKsというくくりで以下の2つが話されていた
Google AI client SDKを使ってアプリに組み込める。
Vertex AI for Firebase SDK
Material3 adaptive librariesの話
adaptive
adaptive-layout
adaptive-navigationが利用可能に。
例えばadaptive-navigationを使うと勝手にボトムバーが、ナビゲーションレールになる
上でも紹介があったが、以下が追加された
ListDetailPaneScaffold
SupportingPaneScaffold
NavigationSuiteScaffold
スクリーンでなくペイントして考えることが大事で、そうすることで、ユーザーがパネルのサイズを調整できるようにできる。この機能はMaterial3 Adaptiveに追加される。
https://youtu.be/_yWxUp86TGg?t=483 より
このあたりは Building UI with the Material 3 adaptive library
のセッションと Building adaptive Android apps
のセッションを見ると良いそう。
Target SDK 35(Android 15)にするときにedge to edgeがデフォルトになるという話。 enableEdgeToEdge()を呼んでおくと、バックポートしてくれたり、3ボタンのBottom Navigationなどもうまく管理できるようにできる。
Android 15ではシンプルなデフォルトを提供する。 ステータスバー、ナビゲーションバーがデフォルトで透明化される。
https://youtu.be/_yWxUp86TGg?t=565 より
Material3のTopAppBarやNavigationBarを使うと自動でハンドリングできる。
Android 15では開発者オプションのpredictive backのオプションが消され、有効にしているアプリではユーザーに表示されるようになる。
ウィジェットの話
ウィジェットの追加前にプレビューを表示できるようになった。
アプリからウィジェットを追加するように求めることができる。
Glance1.1でUnit Testのサポートなどが入っている。
Canonical widget layoutがリリース。ベストプラクティスに則ったWidgetのレイアウトが利用できて迅速に使い始められる。
Build Android Widgets with Jetpack Glance
で詳細が聞ける。
Media and camera
Android 15のカメラで画像を明るくできるLow light boost
CameraX 1.4 betaのUltraHDRなど
camera-viewfinder-composeでComposeでViewFinderを利用して、画面上にプレビューを表示できるのが 1.0-alphaでリリース。
Media3のパフォーマンス向上。新しいtransformerAPIを使って、ビデオのエンコードが5倍高速になったり、YouTube shortでは19%タイムアウトが削減されたりした。
Performance
Battery: バッテリー消耗の原因は画面オフ中のものであることが分かった。APIを適切なものを選ぶ必要がある。
Perfettoを使うとAndroid 14以上で電力消費が見られる
詳細はHow to improve battery efficiency of background work on Android
Practical performance problem solving in Jetpack Compose
というコードラボで、実際的なパフォーマンスの問題解決について学べる。
簡単にパフォーマンスを改善する方法は、ベースラインプロファイルとdex reorderingを入れ、R8を入れることによって60%の改善が見込める。
Vulkanの話 ゲームを作る人向けの話なのでとばさせてください
セキュリティとプライバシー
Safer intent 悪意のあるアプリがintent filterの一致を悪用できないように改善。ただ、これは複雑なものになりそうなので、strict modeでテストできるようにしている。
意図しないbackground activityの起動を減らすためにデフォルトでブロックするように。
mininumでインストールできるTarget SDKのバージョンが24より小さいとインストールできなくなる。(多分、RuntimePermission周りかな)
Photo picker (アプリが直接ユーザーデータにアクセスしないようにする。)。広い権限が必要な場合はそれが必要な理由を明示する必要があるようになった。
Play Integrity APIを使っているアプリは80% 未承認な利用がそうでないアプリに比べて少なくなっている。
Safeguarding user security on Android
で詳細が聞ける。
Credential Manager
ユーザーログインのためのシンプルな開発者サービスを提供する。sign-in with Googleやpasskeyやパスワードを1つのインターフェースに集約して、アプリでの複雑さを減らうことができ、安全で関連性の高いログインの方法を出す。ユーザーはいつでもログインの方法を選ぶことができる。
DASHLANE、TikTok, KAYAKなどでパスキーのサポートを開始し、Credential Managerに移行し、ユーザーにいい影響が出ている。KeyboardでもCredential Managerのオプションを表示するようになった。
運転免許証などのIDをdigital walletで保存できるようになり、それをアプリに共有できるようになった。
Wear OSもサポート。
Wear OS 5 developer preview
新しいcomplication data type?というものが定義された。 (文脈的にWatch faceの表示タイプ的な感じなのかな?)
Building for the future of WearOS
で詳細。
Running Metricsが追加。Ground Contact Timeなどで、いつ疲労するかなどが分かるようになったらしい。
Google FitのAPIから移行するためにRecording APIというのが導入し、歩数とかが測定でき雨量に。
Health Connect
アプリにユーザーのデータを提供するために新しいパーミッションが増えたらしい。
AndroidTV
Compose for TV 1.0.0-beta01
パフォーマンスと入力サポートを改善、あらゆる範囲の改善を追加。
TVマテリアルカタログアプリでコンポーネント、テーマやレイアウトを探索できる。
Android Studioのテンプレートも更新された。
AndroidTVへの改善
Video Discover API
Androidのフォームファクターをまたいだ再開を可能にする。Android TVのContinue Watching APIと後方互換性がある。
Round app icon
丸いアイコンが標準になった。TV app icon guidelineどおりに表示されていることを確認する。
Power reduction
MediaSessionとちゃんと連携して、power state changeに対応できるようにする。
Everything you need to know about Google TV and the Android TV OS
で詳細。
Android for cars
(Xで流れてきてある程度知っていた)
Car app quality tierを導入
car readyなアプリを作るためのガイドライン。
Android automotive OS向けの2つの新しいエミュレーター遠隔ディスプレイエミュレーターアプリが画面間をどのように移動するのかをテストできる(ちょっとよく分かっていない)。configurableエミュレーターを使うとさまざまなシステムバーの設定をエミュレート可能になり、車固有のカットアウトを表示可能になる。
Androidオートモーティブを実行するPixelタブレット用のシステムイメージをリリース。 これにより物理デバイスでテストする手段が提供される。 (そこまでやるのか。)
スタイラスによる手書き
ユーザーはテキストを入力するときにスタイラスを置く必要がなくなるようなアップデート。
Composeの場合は最近のアップデート(1.7)までアップデートする必要がある。Android TextViewなどではそのまま対応できる。
詳しくはここ
https://developer.android.com/develop/ui/views/touch-and-input/stylus-input/custom-text-editors
CanvasFrontBufferedRendererなどレイテンシーを下げるためにCanvasをレンダリングに使う新しいAPIが追加。
詳細はIncrease user productivity with large screens and accessories
Developer productivity - Compose
Compose compiler が Kotlin2.0からKotlinのリリースと共にリリースされるように。
Strong Skipping mode。(割と知っている話題)。パフォーマンスのデバッグをしたくなく、勝手に早くなって欲しいというのが理由。
Composeパフォーマンス
-
Rippleの遅延生成を可能にするためにIndication APIを書き直した。カスタムIndicationがある場合はbreaking changeになる。がマイグレーションドキュメントを用意している
-
Comnpose RuntimeにLow Levelな変更を加えた。preferenching APIの改善とslot tableの書き直し。もうそれはテーブルではなくなった。最初からテーブルではなかったという人もいますが (自分もコード読んでいて、使っている構造はIntArrayで中身はparentとかがある木みたいな構造でした)。外部には影響がないです。
-
Modifier.animateItem()をつけるだけでmoveなどのアニメーションが簡単にできるように。
https://youtu.be/_yWxUp86TGg?t=2020 -
Shared Element Transition。他の画面との要素を関連付けするために使われる。predictive back supportもしているので、バックのジェスチャーで戻るときもアニメーションして戻ったりできる。
-
ContextualFlowRowとColumnを使うと画面内に表示するもの以外はComposeしない。そしてコンポーズした数が出せるので、展開インジケータを作成できる。
https://youtu.be/_yWxUp86TGg?t=2068 より 。赤矢印追加しています。 -
Textがrich contentを受け取れるように。キーボードからGifを受け取ったりできる。
-
linkとベーシックなHTMLをTextがサポート
-
Accessibility スキャナなどの関連機能のComposeサポート。
Updates to Android accessibility features and APIs
で詳細。
Kotlin Multiplatform
Kotlin Multiplatformをサポート。 (support Kotlin Multiplatform on Androidみたいな微妙な言い方を他ではしていたんだけどここではシンプルに言っていて良かった)
今はビジネスロジックの共通化にフォーカスしている。
Android Studio, GeminiとAndroid Studio, そして DeveloperProductivityについては What's new in Android development tools
で
Android 15 Beta2が明日リリース。 2日前の動画なので、2024/05/18かな。
What's new in Android development tools
デバッグでラムダの中とかも簡単にbreakpoint貼れるようになるなど。
USB-CケーブルのUSB 3.0以降でないときに警告で遅くなるというのを教えてくれる。
Device Stremingから繋いでいる端末の設定を変更できる
resetもできる。
https://youtu.be/2wOfYgIMf-A?t=630 より
レイアウトインスペクタのsnapshotを使うと3Dでレイアウトが見れる。
ComposeのUIチェックにはPreviewのここから入れて、ボタンが小さいとかコントラストが足りないので文字が見にくいとかそういうのをチェック可能。
https://youtu.be/2wOfYgIMf-A?t=687
このFind CPU Hotspotsを押すとプロセスを最初から開始して、call stackを見ることができるが、ここから起動すると自動的にマニフェストにprofilableを入れて、アプリを起動できる。
https://youtu.be/2wOfYgIMf-A?t=940 より
LeakCanaryとの連携を開発中
Geminiとの連携の話。基本的には右クリックしてGemini -> Transformで色々できるという話。
Shift + F6で関数の中身を見て関数名をサジェストしてくれる。
https://youtu.be/2wOfYgIMf-A?t=1503
また、関数内の変数を全部考え直すことが可能
https://youtu.be/2wOfYgIMf-A?t=1507 より
GenerateにTest Scenariosが追加。エッジケースなどを考えてくれて、テストのメソッドなどを考えてくれる。
https://youtu.be/2wOfYgIMf-A?t=1575 より
コミットメッセージも考えてくれる
https://youtu.be/2wOfYgIMf-A?t=1605 より
画像を渡して、それのComposeを作ってくれるデモ (これはDeveloper Keynoteとかにもあったかも)
Firebaseのクラッシュの画面で、Geminiに解決のステップを解説させられるようになった。
去年のI/Oで紹介があったけど、クラッシュを見るときにAndroid Studioで見れるやつ。Android Gradle Plugin 8.3以上だとAndroid Studioはどのバージョンでクラッシュしたか分かるようになる。のでそのバージョンのコードでのクラッシュの場所がわかる。(仕組み気になる。)
Android Studioのリリースサイクルの変更。いつもだとstableバージョンをリリースして終わりだが、もっと頻繁にリリースして、stableリリースのタイミングを早めて、feature dropという形で、あたららしい機能を提供することで、リリースの頻度を高める。
Before
https://youtu.be/2wOfYgIMf-A?t=2504 より
After
https://youtu.be/2wOfYgIMf-A?t=2539 より
Actionable app profiling in Android Studio
App Startup
TTID(最初に表示されるまでの時間)とTTFD(コンテンツが表示されるまでの時間)の話。
TTFDを取るにはComposeならReportDrawnWhen、ViewならFullyDrawnReporterを使う。
自分だけかもしれませんが、ソースコードが気になる方はこちら。
ReportDrawnWhen: https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:activity/activity-compose/src/main/java/androidx/activity/compose/ReportDrawn.kt;l=128;drc=5f8df427d262f9848fab982f8c45ee3dc7f9acbc
FullyDrawnReporter: https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:activity/activity/src/main/java/androidx/activity/FullyDrawnReporter.kt;drc=5713d41811d5a99c93b5d585cbac46bfaa9ed5a6
https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:activity/activity/src/main/java/androidx/activity/ComponentActivity.kt;l=1090?q=reportFullyDrawn&ss=androidx%2Fplatform%2Fframeworks%2Fsupport
Baseline Profileってあるけどなんで効くのか?
Before
https://youtu.be/ELKKWDPCLXU?t=274 より
Android Studio ProfilerでJit thread poolを見るとJit thread poolでJITコンパイルに数秒かかっているなどが分かる。
70%のJITコンパイルの時間の短縮などが見られるようになる。
After
https://youtu.be/ELKKWDPCLXU?t=284 より
overunのメトリクスは1%の一番悪い(長い)フレームのsyncronization deadlineを超えたフレームを出す。overrunはdealineを超えた時間の量。
https://youtu.be/ELKKWDPCLXU?t=398 より
これを調査するには?どのぐらいJIT Activityが行われているかを確認する。特にJIT thread pool children timeを見る。 アプリが実際にJITコンパイルに費やした合計時間を示す。
https://youtu.be/ELKKWDPCLXU?t=415 より
Android Studioのjankレンダリングを見る機能を使う。結果 Jit thread pool childrenが1.7秒かかり、8つのJank markerが表示されていることが分かる。
ここでBaseline Profileを入れてみると改善が確認できる。このOverrun マイナスになっているのはdeadlineを超えていないということ
https://youtu.be/ELKKWDPCLXU?t=470 より
https://youtu.be/ELKKWDPCLXU?t=492 より
他の数値も改善されている事がわかる。
https://youtu.be/ELKKWDPCLXU?t=505 より
Macrobenchmarkを使って、上記の測定を自動にできる。
https://youtu.be/ELKKWDPCLXU?t=521 より
エネルギー消費量も取れるようになったよという話。
LeakCanaryが新しいAndroid Studioで使えるようになる話。LeakがAndroid Studio内で見られるなど。
Designing scalable Compose APIs
(元になったドキュメントを読んだことがあるので、復習みたいな感じで)
Composable関数はComposable関数を呼び出せるので、Composable関数のAPIを作っていることになる。
- どのようにComposable関数を考えて、計画するか?
- どのようにKotlinの命名規則を活用するか?
- APIの強固な構造を定義する方法
- これらのAPIを検証し、保持する方法
これらのルールは
- Composeのフレームワークでは必須
- Libraryではガイドラインとして利用する
- アプリでは推奨事項として利用する
どのようにComposable関数を考えて、計画するか?
FilterChipの例をみながらどのように新しいAPIを作ることを決めるかを見ていく。
まず新しいコンポーネントが思いついたときに、このAPIが1つの問題を解決することを目的としているかどうかを考える。
例えばFilterChipであれば、限られた選択肢の中から、簡潔な選択肢を表すコンポーネントが必要という問題を解決するコンポーネント。一つのコンポーネントが、一つ問題を一箇所で解決する。これによりAPIがユースケースベースになり、これにより簡単かつ明確に利用することができるようになる。
このFilterChipにSuggestionさせたいとか、クイックアクションさせたいとかがでてきたとすると、違う問題なので、違う場所で解決されるべきもの。
ただ、ほぼ同じ見た目なんだけどどうしたらいい?もしアプリで一貫した要求があり、バリエーションのあるコンポーネントがある場合は上位のレイヤーに新しいコンポーネントを作る良い機会になる。この場合はFilterChipにChipを作るような感じ。
https://youtu.be/JvbyGcqdWBA?t=185 より
Higher level APIに行くにしたがって、よりカスタマイズができず、より意見(opinioned)の持ったような形になる。
(LowとHighのイメージが逆なのでむずい)
ChipGroupというコンポーネントを作るべきか?向きの縦横はRowとかColumnでできるし、装飾もModifierでできるので、いらないということになる。(このあたりがコンポーネントが1つの問題を解決するという意味なのかもなと思った)
名前付け
(スライドがわかり易すぎる。)
https://youtu.be/JvbyGcqdWBA?t=323 より
以下1, 2, 3はそのまま説明の通り。
☓になっているGoogleChipやFeatureXChipについては、コンポーネントはユースケースや目的によって名前がつけられるべきなのでということ。
https://youtu.be/JvbyGcqdWBA?t=368 より
CompositionLocalによるカスタマイズはさけて、パラメーターを使おう。
APIユーザーはあることを期待するので、Modifierを最初のオプショナルパラメーターとして持つべき。
パラメーターにするべきか?Modifierにするべきか?あるコンポーネントの代表的な振る舞いやUIがパラメーターになるべき。
default値で、NullableとEmptyとDefaultの値どれを使うべきか?Nullableはその機能が必要ないとき例えばChipのImageとか。Emptyはその機能が必須だが、emptyになれるとき、ChipのContentとか。DefaultはShapeとか。
AccessibilityでChipに画像と文字が入っているときなどは、子のsemanticsをマージできる。
ボタンが押した状態などをテストしたい場合は?interactionSourceを外部から設定できるようにする。
(この方法はRoborazziでも動くらしい https://slack-chats.kotlinlang.org/t/16651702/hi-everyone-i-m-currently-integrating-https-github-com-takah )
https://youtu.be/JvbyGcqdWBA?t=1102 より
Backward compatibilityガイドをみると、後方互換性の保ち方がわかる。
https://goo.gle/kotlin-back-compat
まだ途中です。(ストックしておくと更新通知受け取れるかもです )
[WIP]