minne事業部プロダクト開発チームのtepiです。Androidアプリで1Passwordによるアカウント情報の自動入力に対応する方法をご紹介します。
これまでのアプリの動作
特に設定がされていないため、基本的には自身でアカウント情報を入力する必要がありました。それでもGoogleのパスワードマネージャーは優秀で、仕様はわからないのですが自動で入力することが可能でした。
1Passwordに対応したい
1Passwordとは、パスワードマネージャーサービスの1つで、ペパボではセキュリティ対策として全員に1Passwordのアカウントが払い出されており、個人でも利用することが可能です。
個人では以前から利用しているサービスで便利なためminneでも利用しようとしたところ、minneアプリが対応していないがために、自動で入力したくてもできませんでした。
また、開発ではさまざまなアカウントを切り替えるので、逐一ログアウトした際に手で入力する手間が発生していました。
※IDは辞書登録をしていましたが、それでも手間は手間です。
公式の情報がない
1Passwordの公式の情報があるだろうと軽い気持ちで対応を始めたものの、自分の検索力の問題かもしれませんが、英語の記事も含めて1Passwordのドキュメントが全く見つかりませんでした。
ただ、検索していく中でふとAndroidにAutofillの設定があったことに気づきました。
AndroidのAutofillについて
AndroidデベロッパーガイドのAutofillのドキュメントを調べると「自動入力用にアプリを最適化する」というなんともうってつけな記事がありました。
詳しくはドキュメントを見ていただきたいですが、AndroidのViewにautofillHints
という設定があり、そこにusername
やpassword
等自動入力させたい情報を指定することで、1Passwordに限らず自動入力サービスが対応する情報を自動入力してくれるようになります。
例えばXMLで指定する場合は以下の通りです。
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autofillHints="password" />
なお、autofillHints
に指定できる文字列はAndroidStudioの補完機能でも出てきますが、それ以外にも指定できる文字列があるようですのでHintConstants
を見てみると良いでしょう。
※HintConstants
に記載の全ての文字列が使えるかは検証していませんのでご了承ください。
対応とその結果
minneのログインIDを入力するEditText
に対してandroid:autofillHints="username"
を指定し、パスワードを入力するEditText
に対してandroid:autofillHints="password"
を設定することで、無事1Passwordが反応し自動で入力できるようになりました。
まとめ
アプリを利用するユーザーのための機能であり、ユーザー体験の向上につながる開発ができました。それ以外に開発用途でも個人的にはそこまでストレスに感じていないつもりだったのですが、想像以上に開発が楽になるものなので対応することをおすすめしたいと感じました。
また、ID、パスワードの自動入力以外にもクレジットカード情報や住所情報などの入力ができたり、新しくアカウントを作成する際のヒントの指定もあるようですので、今後対応を検討してより良いユーザー体験を目指していきたいです。
最後に、2024年はAndroidチームで月1回テックブログ更新をしていきますので、ぜひお楽しみに!