Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Compose におけるパスワード自動入力とパスワード保存
Search
tonionagauzzi
April 29, 2025
Technology
530
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Compose におけるパスワード自動入力とパスワード保存
tonionagauzzi
April 29, 2025
More Decks by tonionagauzzi
See All by tonionagauzzi
Androidエンジニアが大規模プロダクトのWebフロントエンドとバックエンドに越境して感じたギャップと習得したマインド
tonionagauzzi
0
320
Kotlin2.3明示的バッキングフィールド
tonionagauzzi
1
380
【Android】テキスト選択色の問題修正で心がけたこと
tonionagauzzi
0
270
Android 15以上でPDFのテキスト検索を爆速開発!
tonionagauzzi
0
390
Googleの新しいコーディングAIエージェントJulesを使ってみた
tonionagauzzi
0
840
Androidテスト基礎講義
tonionagauzzi
0
400
Android Composeでの自動入力(作成:GPT-4o)
tonionagauzzi
0
170
Jetpack Composeで自動入力(Autofill)を実装しよう(作成:claude-3.7-sonnet)
tonionagauzzi
0
170
Jetpack Composeにおける自動入力の実装と注意点(作成者:Gemini 2.5 Pro Exp 03-25)
tonionagauzzi
0
180
Other Decks in Technology
See All in Technology
dbt in Microsoft Fabric
ryomaru0825
0
200
AIに狂うスタートアップが、あえて「人との協働」に全振りした新卒エンジニア研修 / New Graduate Engineer Training at a Startup Accelerating AI Adoption
ohnoeight
0
200
AIに持続⼒を与える 判断の⻑期記憶設計
eiei114
1
680
【GCC2026】大規模言語モデルを活用した内製検索サービスの社内展開や業務活用
bandainamcostudios
PRO
0
520
英語が話せなくてもKubeConスタッフに参加した話
yusuke427
2
1.1k
DatadogのBits Chatが開発組織にもたらしたもの / What Bits Chat Has Brought Us
sms_tech
1
300
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.4k
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
450
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
12
85k
【Aiming】共通基盤なのに「共通化しない」課金・認証基盤「LINK」が選び取ったシングルテナント戦略と運用の秘訣
saikeda
0
170
内製AIチャットボット開発で学んだ Datadog Agent Observability活用術
mkdev10
0
130
Sets in Go
ramalho
1
1.2k
Featured
See All Featured
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Designing for Timeless Needs
cassininazir
1
450
We Have a Design System, Now What?
morganepeng
55
8.3k
Producing Creativity
orderedlist
PRO
348
40k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Writing Fast Ruby
sferik
630
63k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
550
The untapped power of vector embeddings
frankvandijk
2
1.8k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
310
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Un-Boring Meetings
codingconduct
0
390
Transcript
Compose におけるパスワード自動入力とパスワード 保存 Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 1
話すこと 1. Jetpack Composeでの自動入力の実装方法 自動入力とは? 従来のXML方式との違い 自動入力の種類(保存済みパスワード・新規パスワード) 2. パスワード保存の罠と解決策 Compose
におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 2
話さないこと パスワードマネージャーの導入方法 Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 3
登壇者情報 トニオ(@tonionagauzzi) Androidエンジニア サイボウズ株式会社 kintone開発チーム ブログ書くのが趣味 Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android
Tech Talk 4
1. Jetpack Composeでの自動入力の実装方法 Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 5
自動入力とは? パスワード入力欄にカーソルを当てると自動でパスワードを入れてくれる機能 ユーザーの入力を効率化、セキュリティ面も強化できる Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 6
Google パスワードマネージャーによるパスワード自動入力 Compose におけるパスワード自動入力とパスワード保存 1 Sansan×DMM.com Android Tech Talk 7
Google パスワードマネージャーによる強力なパスワードの自動生成 Compose におけるパスワード自動入力とパスワード保存 2 Sansan×DMM.com Android Tech Talk 8
XML方式での実装方法 <EditText android:id="@+id/password" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPassword" android:autofillHints="password" /> android:autofillHints プロパティで簡単に実装可能
Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 9
Compose での実装方法 Compose UI 1.8.0以降がおすすめ 2025/4/23 に正式リリース // build.gradle.kts(:app) dependencies
{ implementation("androidx.compose.ui:ui:1.8.0") } 1.7.x以下では AutofillType (deprecated)を使う必要あり 実験的APIで正常に機能しないことも Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 10
Composeでの自動入力実装 // SomeComposable.kt Column { TextField( value = username.value, onValueChange
= {username.value = it}, modifier = Modifier.semantics { contentType = ContentType.Username } ) TextField( value = password.value, onValueChange = {password.value = it}, modifier = Modifier.semantics { contentType = ContentType.Password } ) } 公式ドキュメントを参考に、 Modifier.semantics { contentType = } で実装 Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 11
保存済みパスワードの自動入力 ログイン画面などのユースケース ContentType.Username + ContentType.Password の組み合わせ ユーザー名に応じたパスワードを自動入力 Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com
Android Tech Talk 12
新しいパスワードの自動生成 パスワード再設定画面などのユースケース ContentType.NewPassword を使用 強力なパスワードを自動生成して提案 TextField( value = newPassword.value, onValueChange
= {newPassword.value = it}, modifier = Modifier.semantics { contentType = ContentType.NewPassword } ) Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 13
パスワード保存機能の実装 公式ドキュメントでは autofillManager?.commit() を使う方法が紹介されている val autofillManager = LocalAutofillManager.current 〜省略〜 Button(onClick
= { autofillManager?.commit() }) { Text("Reset credentials") } Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 14
2. パスワード保存の罠と解決策 Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 15
AutoFillManagerの罠 autofillManager?.commit() を呼んでもパスワード保存ダイアログが表示されない! Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 16
原因(厳しい条件) Composeのパスワード自動保存には厳しい条件がある: 1. NewUsernameとNewPasswordの両方が1つのComposable内に存在 2. ユーザーが1.の両方を操作した これらを満たさない場合、パスワード保存ダイアログは表示されない。 参考: Google Issue
Tracker Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 17
解決策:CredentialManagerを使う Button(onClick = { coroutineScope.launch { val credentialManager = CredentialManager.create(context)
val request = CreatePasswordRequest(username, newPassword.value) credentialManager.createCredential( request = request, context = context, ) } }) { Text("Reset credentials") } Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 18
CredentialManagerの注意点 android.credentials (API Level 34以上) androidx.credentials (下位互換性あり) API Level 33以下をサポートする場合は
androidx.credentials を使用 // build.gradle.kts(:app) dependencies { implementation("androidx.credentials:credentials:1.5.0") // optional - needed for credentials support from play services, for devices running // Android 13 and below. implementation("androidx.credentials:credentials-play-services-auth:1.5.0") } Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 19
まとめ Compose UIでの自動入力は contentType で簡単に実装可能 パスワード保存は AutofillManager より CredentialManager が確実
適切な実装でユーザー体験を向上させよう Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 20
参考リンク スマホでパスワード管理ができる Google パスワード マネージャーの使い方 Composeでのテキスト自動入力 Autofill フレームワーク CredentialManager API
Compose におけるパスワード自動入力とパスワード保存 Sansan×DMM.com Android Tech Talk 21