In HTML, the <kbd>
element is used to represent user input actions, such as keyboard inputs and shortcuts.
<kbd>
要素とは?HTML における <kbd>
(keyboard) 要素は、ユーザーが入力するテキストやキー操作を表すために使われる要素です。具体的には、次のような場面で使用されることが一般的です。
<kbd>
内のテキストを特別な「入力」テキストとして解釈する場合があります(実装により異なる)。将来的にアクセシビリティ機能が強化される可能性を考えると、正しい要素を使うことは大切です。もっとも基本的な使い方は、単に「ユーザーが押すキー」を <kbd>
で囲むことです。例えば「Enterキーを押してください」という文を以下のように書くイメージです。
HTML
<p>次の画面に進むには <kbd>Enter</kbd> キーを押してください。</p>
この場合、ブラウザによっては <kbd>
内のテキストが等幅フォントで表示されたり、若干スタイルが変わる場合があります。何もスタイルが適用されないブラウザもありますが、それでも HTML 的にはセマンティクスが付与されているため、機能的には正しいマークアップです。
ウェブアプリやソフトウェアのショートカットを説明するときには、複数のキー操作をまとめて示すことがあります。その場合も <kbd>
を入れ子にして使えます。
HTML
<p>
このショートカットを使うときは、<kbd><kbd>Ctrl</kbd> + <kbd>S</kbd></kbd> の順番でキーを押してください。
</p>
上記のようにネストさせると、「Ctrl + S」という組み合わせを意味することが視覚的にも明示的にも分かりやすくなります。
(※ネストするかどうかは好みによりますが、複数のキーを1つの操作と示す際に活用できます。)
コマンドラインやターミナルでのコマンド入力も <kbd>
で示すことができます。単純にショートコード的に表示したい場合には以下のような記述をします。
HTML
<p>
パッケージをインストールするには、<kbd>npm install</kbd> コマンドを実行してください。
</p>
ユーザーが「これを入力すればいいんだな」ということを明確に表現できます。
<kbd>
とよく比較される要素との違い<code>
要素<code>
はプログラムコードを示すための要素です。<kbd>
は「ユーザーが入力するテキスト」を示しますが、<code>
は「機械(コンピューター)で実行されるコードやコードスニペット、言語構造」を示します。<code>
<kbd>
しかし、実際には多くのウェブサイトでコマンドラインの例を <code>
要素だけで表現することがあります。これは必ずしも間違いとは言えませんが、より適切なセマンティクスを求めるのであれば、ユーザーが「キーボードで入力する」部分は <kbd>
を使う方が望ましいとされています。
<samp>
要素<samp>
はプログラムやシステムが出力したテキストを示す要素です。<kbd>
はユーザーが入力する内容を示すのに対し、<samp>
はコンピューターが返すメッセージやログ、エラーメッセージ、結果などを表すために使われます。HTML
<p>
ユーザーが入力したコマンド:<kbd>npm install</kbd><br>
システムの返答:<samp>+ package@1.0.0 installed</samp>
</p>
<var>
要素<var>
は、変数名や数学的な変数、パラメータなどを表す要素です。HTML
<p>円の面積は <var>r</var>(半径)を使って π<var>r</var>^2 と表されます。</p>
<kbd>
は「入力」という実際の動作を示すのに適しており、変数名とは用途が大きく異なります。
HTML5 以降、要素の意味(セマンティクス)を正しく使うことは、ページの構造やコンテンツを機械的に理解しやすくするのに役立ちます。スクリーンリーダーなど支援技術が <kbd>
要素をどのように読み上げるかはブラウザやリーダーの実装次第ですが、通常のテキストとの差別化が行われる可能性があります。
さらに、今後の仕様や支援技術では、「ユーザーのインタラクションが必要な部分である」ことを明確に示すことでユーザーエクスペリエンスを向上できる可能性があります。ユーザーがショートカットキーを使う場合など、<kbd>
はその鍵となる要素になり得ます。
<kbd>
要素を拡張して使う方法複数段階でキー操作をする場合、以下のように入れ子にして「→」などの記号でステップを明示することも考えられます。
HTML
<p>
ファイルを保存する手順は次のとおりです:
<kbd>Ctrl</kbd> + <kbd>S</kbd> → <kbd>Enter</kbd>
</p>
または、先述のように <kbd><kbd>Ctrl</kbd> + <kbd>S</kbd></kbd>
とネストして書いても良いでしょう。いずれにしても、適切にステップを示すことで、ユーザーが順番を間違えないようにできます。
デフォルトのブラウザスタイルだと、<kbd>
は等幅フォントになるケースが多いです。さらに視認性を高めたい場合、以下のようなカスタマイズが可能です。
CSS
kbd {
background-color: #f5f5f5;
border: 1px solid #ccc;
padding: 2px 4px;
border-radius: 3px;
font-family: Menlo, Consolas, monospace;
}
HTML
<kbd>Ctrl</kbd> + <kbd>S</kbd>
これにより、キーボードのキーらしさが増し、操作を示す要素だと一目で認識しやすくなります。もちろん、サイト全体のデザインやアクセシビリティも考慮した上でカスタマイズすることが重要です。
複数のキーを同時押しするようなショートカットは、わかりやすくマークアップする必要があります。
<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>N</kbd>
<kbd>Ctrl</kbd> → <kbd>C</kbd> → <kbd>V</kbd>
のように矢印で連続操作を示す場合もまた、ショートカットのプラットフォーム差異(Windows の場合は Ctrl、macOS の場合は Command)にも注意が必要です。ドキュメントとして汎用性を持たせるなら、キーの名称を注釈しておく、あるいはOSによって分岐表示するといった工夫が求められます。
<code>
と同様に使ってしまう<code>
だけで書いてしまうケースは多いです。ただ、ユーザーが入力する部分とコンピューターが出力する部分を厳密に区別する方が、HTML のセマンティクスとしては適切です。<samp>
にすべき内容を <kbd>
にしてしまう<kbd>
で囲むと、ユーザーに「これは入力すべきもの?」という誤解を与えかねません。<kbd>
はあくまで「ユーザーの入力」を示すための要素です。「強調したいから」というだけで滅多に使わないようにしましょう。<kbd>
はキーボード操作だけでなく、スマホのタップ操作やゲームパッドのボタンなど、広義で「ユーザーが押すボタン」を表すときにも使える場合があります。ただし、文脈によっては適切でない場合もあり、代わりに <button>
と組み合わせたり、単純にテキストで説明したりすることが推奨される場合があります。<kbd>
要素の主目的は「ユーザーが入力するテキストやキー操作」を示すこと<code>
・<samp>
・<var>
と混同しないように: それぞれ意味が異なるため、正確に使い分けるとセマンティクスが明確になり、より読みやすく・メンテナンス性の高いコンテンツになります。<kbd>
要素の正しい理解と使い分けは、ユーザーがドキュメントを読んだときの混乱を減らし、アクセシビリティを高める という点で重要です。<kbd>
要素は、単純なキーボード入力のマークアップに限らず、ショートカットキーやコマンドの提示、連続操作を視覚的に示すなど様々な使い方ができます。正しい文脈で使いこなすことで、ドキュメントやヘルプ記事、チュートリアルなどの可読性とユーザー体験を向上させることができます。