⚠️謎の警告文
ブラウザのデベロッパーツール(LighthouseやIssuesタブ)を確認していると、以下のような警告が出ることがあります。
An element doesn't have an autocomplete attribute
A form field has an id or name attribute that the browser's autofill recognizes. However, it doesn't have an autocomplete attribute assigned. This might prevent the browser from correctly autofilling the form.
To fix this issue, provide an autocomplete attribute.
3 件のリソース
詳細: HTML 属性: autocomplete
これは致命的なバグではありません。しかし、ブラウザが「この入力項目は名前(id="name")だと推測できるけど、自動入力(オートフィル)の設定が明示されていないよ!」と親切にアドバイスしてくれている状態です。
🛠️解決策:autocomplete 属性を付与する
ブラウザの自動入力を助けるために、input タグに autocomplete 属性を追加します。React/Next.jsなどのJSX環境では、キャメルケースの autoComplete を使用します。
<input
className={styles.textfield}
type="text"
id="name"
name="name"
autoComplete="name" // ← これを追加! (React/Next.jsなのでキャメルケース)
required
/>
🔍 なぜこれを書くのが「堅牢」で「UX」が良いのか?
単に警告を消すためだけではなく、以下の3つの大きなメリットがあります。
1. ユーザーの手間を減らす(アクセシビリティ)
ユーザーがブラウザに保存している情報をクリック一つで呼び出せるようになります。特にスマホなどのキーボード入力が面倒な環境において、UX(ユーザー体験)が劇的に向上します。
2. 入力ミスを防ぐ
手入力が減ることで、単純なタイポ(打ち間違い)を未然に防ぐことができます。
3. ブラウザへの明示と安定性
ブラウザは id や name 属性から「これは何を入力する項目か」を推測しますが、完璧ではありません。エンジニアが autocomplete="name" と断定することで、ブラウザごとの挙動の差異をなくし、意図した通りの自動入力を実現できます。
📝まとめ
「動けばいい」コードから「ユーザーに優しい」コードへ。
小さな属性ひとつですが、これを積み重ねることがアクセシビリティへの第一歩です。
これからもデベロッパーツールの声に耳を傾けて、より堅牢なフロントエンドを目指していきたいなと思いました!b