Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Autofill DeepDive 〜パスワード入力・更新周りのUX向上を目指す!〜

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for KATADA Yuta KATADA Yuta
April 22, 2025
110

Autofill DeepDive 〜パスワード入力・更新周りのUX向上を目指す!〜

Avatar for KATADA Yuta

KATADA Yuta

April 22, 2025
Tweet

Transcript

  1. 2 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution About Me Yuta Katada ENECHANGE株式会社 • 2023/12〜 FlutterエンジニアとしてENECHANGEに入社 ◦ エネルギークラウド事業部/EVユニット ◦ アプリエンジニア • Swift/Kotlin修行中 • 🎾󰝱🎮🍺 @ktd_yuta GitHub: Yuta-KTD
  2. 5 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution 🙆 話すこと(目次) • Autofillの概要 • FlutterでのAutofill使用方法 • Autofillを用いたパスワード更新で困った こと・解決策 • パスワード更新のUI/UXについて 🙅 話さないこと • 各OSの詳細なセットアップ方法 – Associated Domainsの設定 • iOS16以前・Android13以前の情報 • パスワード更新以外のAutofill活用方法 – 住所・カード番号 etc… この発表で話すこと・話さないこと・前提
  3. 6 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution 前提 • Flutterのバージョンは3.29.2で検証しました • 本日紹介する機能はOSに依存する点が大きいです • つまり、今後OSバージョンアップによる仕様変更・バグFixによって前提が変わる可能性があります • 今回調査したOSは以下の通りです – iOS17,18 – Android14,15 • (私調べでは)公式に言及がない内容が多く、実際に試行錯誤しながら調査した点が多くありました – ぜひ公式で言及されている箇所や、FlutterのIssueとして取り上げられているものがありましたら共 有いただけると嬉しいです! この発表で話すこと・話さないこと・前提
  4. 8 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution Autofillって? モバイルアプリ文脈でのAutofill →サイトやアプリで入力した情報を保存して、次回から自動的に入力できる機能 →ユーザーID、パスワードだけではなく、住所・クレジットカード情報などにも対応 iOS Android 実装例 参考: Flutter widgets.dart AutofillGroup class https://api.flutter.dev/flutter/widgets/AutofillGroup-class.html
  5. 10 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード変更画面を作って気づいた課題 • ユーザー名 • 現在のパスワード • 新しいパスワード • 新しいパスワード(確認)
  6. 11 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード変更画面を作って気づいた課題
  7. 12 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution あれ、、自動入力される場所おかしくない...?🤔(iOS) パスワード変更画面を作って気づいた課題
  8. 13 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード変更画面を作って気づいた課題
  9. 14 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution あれ、、こんな感じの更新ダイアログは...?🤔(iOS) パスワード変更画面を作って気づいた課題
  10. 15 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード変更画面を作って気づいた課題 ※ iOSのみで発生 iOS18.4.1(実機)、iOS17.5(シミュレーター)で確認 期待した結果 実際 「強力なパスワード」機能による自動入力が、 AutofillHints.newPassword の指定箇所で実行される AutofillHints.password と AutofillHints.newPassword それぞれ一つずつに実行される パスワードを入力した後に、パスワードが更 新される(画像ダイアログの表示) パスワードが更新されない ※ SwiftUIを用いて同様のフォームを作成しても同じ結果
  11. 17 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード更新画面の課題に立ち向かう① • ユーザー名 • 現在のパスワード • 新しいパスワード • 新しいパスワード(確認) この二つを.... 最初の構成
  12. 18 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード更新画面の課題に立ち向かう① • ユーザー名 • 現在のパスワード • 新しいパスワード • 新しいパスワード(確認) この二つを.... • 現在のパスワード • ユーザー名 • 新しいパスワード • 新しいパスワード(確認) 入れ替える! 最初の構成 解決策 参考: iOS Password AutoFill — how and why? https://medium.com/mobilepeople/ios-password-autofill-how-and-why-b8414e6ada96
  13. 19 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード更新画面の課題に立ち向かう① ※ (確認)のフォームはなくても保存は可能 です ※ 新しいパスワードを入力するときはこのダ イアログが出ており、「強力なパスワードを使 用」を選択しています
  14. 20 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution ※ iOSのみで発生 iOS18.4.1(実機)、iOS17.5(シミュレーター)で確認 期待した結果 実際 「強力なパスワード」機能による自動入力が、 AutofillHints.newPassword の指定箇所で実行される AutofillHints.password と AutofillHints.newPassword それぞれ一つずつに実行される パスワードを入力した後に、パスワードが更 新される(画像ダイアログの表示) パスワードが更新されない ※ SwiftUIを用いて同様のフォームを作成しても同じ結果 パスワード更新画面の課題に立ち向かう① 当初の課題
  15. 21 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution ※ iOSのみで発生 iOS18.4.1(実機)、iOS17.5(シミュレーター)で確認 期待した結果 実際 「強力なパスワード」機能による自動入力が、 AutofillHints.newPassword の指定箇所で実行される AutofillHints.password と AutofillHints.newPassword それぞれ一つずつに実行される パスワードを入力した後に、パスワードが更 新される(画像ダイアログの表示) パスワードが更新されない ※ SwiftUIを用いて同様のフォームを作成しても同じ結果 パスワード更新画面の課題に立ち向かう① 当初の課題 🎉解決🎉
  16. 22 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution ただし... パスワード更新画面の課題に立ち向かう①
  17. 23 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード更新画面の課題に立ち向かう① ※ 現在も発生中のIssueにより自動入力パスワードが 消えないので、フォームクリアボタンを配置 https://github.com/flutter/flutter/issues/84446
  18. 24 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution 「独自のパスワードを選択」すると保存できない...😭(iOS) パスワード更新画面の課題に立ち向かう①
  19. 25 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード更新画面の課題に立ち向かう①
  20. 26 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution 現在のパスワード入力欄で強力なパスワード入力の補助が出力される...🤯(またiOS) パスワード更新画面の課題に立ち向かう①
  21. 27 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution ※ iOSのみで発生 iOS18.4.1(実機)、iOS17.5(シミュレーター)で確認 期待した結果 実際 「強力なパスワード」機能による自動入力が、 AutofillHints.newPassword の指定箇所で実行される AutofillHints.password と AutofillHints.newPassword それぞれ一つずつに実行される パスワードを入力した後に、パスワードが更 新される(画像ダイアログの表示) パスワードが更新されない 新規パスワード入力欄のみ強力なパスワード 入力の補助が実行できる 現在のパスワード入力欄でも強力なパスワー ド入力の補助が出力される ※ SwiftUIを用いて同様のフォームを作成しても同じ結果 パスワード更新画面の課題に立ち向かう① 当初の課題 (手動入力において) 未解決...😢 新規追加😭
  22. 29 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution ※ iOSのみで発生 iOS18.4.1(実機)、iOS17.5(シミュレーター)で確認 期待した結果 実際 「強力なパスワード」機能による自動入力が、 AutofillHints.newPassword の指定箇所で実行される AutofillHints.password と AutofillHints.newPassword それぞれ一つずつに実行される パスワードを入力した後に、パスワードが更 新される(画像ダイアログの表示) (独自入力で)パスワードが更新されない 新規パスワード入力欄のみ強力なパスワード 入力の補助が実行できる 現在のパスワード入力欄でも強力なパスワー ド入力の補助が出力される ※ SwiftUIを用いて同様のフォームを作成しても同じ結果 パスワード更新画面の課題に立ち向かう② 当初の課題 これらの課題に 立ち向かう
  23. 30 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution (独自入力で)パスワードが更新されない問題 パスワード更新画面の課題に立ち向かう②
  24. 31 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution ログイン時にキーチェーンに登録されているパスワードと異なる →パスワード更新ダイアログが表示される パスワード更新画面の課題に立ち向かう②-1
  25. 32 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution ログイン時にキーチェーンに登録されているパスワードと異なる →パスワード更新ダイアログが表示される ログインと似たような形のフォームを作ればいいのでは? パスワード更新画面の課題に立ち向かう②-1
  26. 33 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution 現在のパスワード入力欄でも強力なパスワード入力の補助が出力される問題 パスワード更新画面の課題に立ち向かう②-1
  27. 34 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution 現在のパスワード入力欄でも強力なパスワード入力の補助が出力される パスワード更新画面の課題に立ち向かう②-1 現在のパスワード入力欄と強力なパスワード入力欄を画面で分割すればいいのでは?
  28. 35 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution • 現在のパスワード • ユーザー名 • 新しいパスワード • 新しいパスワード(確認) 解決策① このフォームを... パスワード更新画面の課題に立ち向かう②-1
  29. 36 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution • 現在のパスワード • ユーザー名 • 新しいパスワード • 新しいパスワード(確認) • フォーム1 ◦ 現在のパスワード ◦ ユーザー名 • フォーム2 ◦ ユーザー名 ◦ 新しいパスワード ◦ 新しいパスワード(確認) 分割する! 解決策① 解決策②-1 このフォームを... パスワード更新画面の課題に立ち向かう②-1
  30. 37 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード更新画面の課題に立ち向かう②-1
  31. 38 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution 不要な強力なパスワード入力の補助は出なくなった🎉 →ただし変わらず保存できない...😢 他に試したこと • AutofillGroupから新規パスワード(確認)を外す→保存できず ◦ さらに更新ボタン押下時にフォーカスを新規パスワードに当てる→保存できず • AutofillHintsを空にする→保存できず • AutofillHints.newPasswordを.passwordに変える→newPasswordと同じ結果 パスワード更新画面の課題に立ち向かう②-1
  32. 39 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード更新画面の課題に立ち向かう②-2 • フォーム1 ◦ 現在のパスワード ◦ ユーザー名 • フォーム2 ◦ ユーザー名 ◦ 新しいパスワード ◦ 新しいパスワード(確認) 解決策②-1 このフォームの...
  33. 40 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード更新画面の課題に立ち向かう②-2 • フォーム1 ◦ 現在のパスワード ◦ ユーザー名 • フォーム2 ◦ ユーザー名 ◦ 新しいパスワード ◦ 新しいパスワード(確認) 解決策②-1 このフォームの... • フォーム1 ◦ 現在のパスワード ◦ ユーザー名 • フォーム2 ◦ ユーザー名 ◦ 新しいパスワード ◦ 新しいパスワード(確認) 解決策②-2 (確認)フォームを削除する!
  34. 41 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード更新画面の課題に立ち向かう②-2 ※ 現在も発生中のIssueにより自動入力パスワードが 消えないので、フォームクリアボタンを配置 https://github.com/flutter/flutter/issues/84446
  35. 42 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution ※ iOSのみで発生 iOS18.4.1(実機)、iOS17.5(シミュレーター)で確認 期待した結果 実際 「強力なパスワード」機能による自動入力が、 AutofillHints.newPassword の指定箇所で実行される AutofillHints.password と AutofillHints.newPassword それぞれ一つずつに実行される パスワードを入力した後に、パスワードが更 新される(画像ダイアログの表示) (独自入力で)パスワードが更新されない 新規パスワード入力欄のみ強力なパスワード 入力の補助が実行できる 現在のパスワード入力欄でも強力なパスワー ド入力の補助が出力される ※ SwiftUIを用いて同様のフォームを作成しても同じ結果 パスワード更新画面の課題に立ち向かう②-2 結果 🎉(条件付き)解決🎉 🎉解決🎉
  36. 43 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード確認フォームを配置する理由とは🤔 パスワード更新画面の課題に立ち向かう②-2 パスワード入力のタイポ対策
  37. 44 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution タイポ対策を別のアプローチから実施する(p41の動画参照) • 入力パスワードの表示・非表示を切り替える ◦ 表示非表示を切り替えてもタイポする時はする • 入力パスワードを保存させる ◦ パスワード管理ツールを使用していなかった場合は保存できない ◦ アプリ以外でログインを行う場合に保存したパスワード情報が見つけられないかも しれない パスワード更新画面の課題に立ち向かう②-2
  38. 45 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution パスワード確認を入れる(対応策①、②-1) • Pros ◦ パスワード入力のタイポを限りなく 減らせる • Cons ◦ 自動入力時しかパスワード管理ツー ルへの保存ができない(iOS) ◦ 複雑なパスワードを入力したい場 合、2回入力するのは手間 パスワード確認を入れない(②-2) • Pros ◦ パスワード管理ツールへの保存がで きる • Cons ◦ パスワードをタイポして登録してし まう可能性がある ◦ パスワード管理ツールが存在する前 提でのサービス設計になる パスワード更新画面の課題に立ち向かう②-2
  39. 47 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution 調査した結果 • パスワード確認フォームがあるパスワード更新画面では、Autofill機能をフル活用できな い(iOSのみ対象) • Autofill機能を拡充させるためにパスワード確認フォームを削除する必要がある 調査結果 個人的なオススメ • iOSとAndroidでフォームの表示を出し分けた方が良さそう • iOS側はAutofillをユーザーにフル活用して欲しいのか、できるだけ確実にパスワードの タイポを防ぎたいのかによってフォームの形式を考えるべき
  40. 49 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution Autofillにパスワードを保存するメリット • ユーザーの手動入力を排除できる • 複雑なパスワードを使用しやすくなる • デバイス間で同期がしやすくなる • プラットフォーム側がパスワードの管理をしてくれる パスワード更新画面のUI/UXについて
  41. 50 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution • ここまでAutofillにおいて制約が多いのであれば別の仕組みでパスワードを保存してもい いのでは? ◦ flutter_secure_storage + local_auth を用いた生体認証によるアプリへの保存とか ▪ 端末更新時に引き継ぐかどうかの検討は必要(設定注意) ▪ 管理責務がアプリ側にも発生することも注意 • モバイルやWebのみであればパスキー認証を用いるのもいいかも...? パスワード更新画面のUI/UXについて
  42. 52 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution • AutofillはOSごとの挙動差を理解しないといけない ◦ iOSは自動入力・保存ともに制約あり • パスワード確認欄の有無でUXが変わる ◦ あり:タイポ防止だがAutofill保存はできない場合あり ◦ なし:Autofill活用しやすいがタイポ注意 • 最適解はサービス要件とユーザー層次第で変わる • Autofillにこだわる必要はないかもしれない まとめ
  43. 53 LON Copyright © ENECHANGE Ltd., All rights reserved. Confidential

    / not for distribution • ENECHANGEでは今回紹介したEV充電アプリ以外にも、「エネルギーの未来を作る」という ミッションをベースに様々なプロダクトを提供しており、開発エンジニアを募集しています! • https://engineer-recruit.enechange.co.jp/ または「エネチェンジ エンジニア」で検索 一緒にエネルギーの未来を作るメンバーを募集中!